(57)【要約】【課題】簡単な構成で、画像が表現する対象の質感をきめ細かく表現できるグラフィックス装置を提供する。【解決手段】ポリゴンに貼り付けるテクスチャのイメージデータの各画素について、イメージの表現する物体の材質に特有なマテリアルデータを設ける。例えば、イメージに表現される部分が窓である場合には、マテリアルデータには、窓に対応する画素の部分にガラスを表現するためのデータを設ける。【選択図】図２
2010113548.tif 000002
【特許請求の範囲】
【請求項１】
ポリゴンレンダリング方式のグラフィックス描画装置において、
ポリゴンに貼り付けるイメージデータと、前記イメージデータの画素ごとに定義されたイメージの材質を表現するためのパラメタを有するパラメタデータとを有する保持手段と、
前記イメージデータに前記パラメタデータを反映した画像を前記ポリゴンに貼り付け、画像を生成する画像生成手段と、
を備えることを特徴とするグラフィックス描画装置。
【請求項２】
前記パラメタデータは、前記イメージデータで表現されるイメージ部分の反射係数を有することを特徴とする請求項１に記載のグラフィックス描画装置。
【請求項３】
前記パラメタデータは、前記イメージデータで表現される部分の複数の材質表現をインデックスで表示することを特徴とする請求項１に記載のグラフィックス描画装置。
【請求項４】
前記パラメタデータは、前記イメージデータで表現される部分の複数の材質表現の組み合わせをインデックスで表示することを特徴とする請求項１に記載のグラフィックス描画装置。
【請求項５】
ポリゴンに貼り付けるイメージデータと、前記イメージデータの画素ごとに定義されたイメージの材質を表現するためのパラメタを有するパラメタデータとを有する保持手段を備えた、ポリゴンレンダリング方式のグラフィックス描画装置における描画方法であって、
前記イメージデータに前記パラメタデータを反映した画像を前記ポリゴンに貼り付け、画像を生成する、
ことを特徴とする描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス描画装置に関する。
【背景技術】
【０００２】
図１１〜図１６は、従来技術を説明する図である。
三次元グラフィックスにおけるテクスチャマッピング手法は、描画ポリゴンに対して画像イメージを貼り付けることにより物体の質感を表現する方法である。描画ポリゴンの傾きに応じて、定義した画像から、描画点に対応する画素を取り出し描画色を決定する。この方法により、従来、細かく分割して表現するしかなかった物体表面の細かい模様を、イメージ画像を用意することにより比較的簡単に表現することが可能となった。しかし、貼り付けるデータは、あくまでイメージ画像のみであり、その物体が持つ固有の反射係数などはポリゴン単位に与えることしかできず、ポリゴン内部の細かい特性の違いを表現することはできなかった。例えば、図１１に示すような、壁に窓枠、窓ガラスなどが入った画像をテクスチャデータとしてモデルに貼り付けることを考える。
【０００３】
ゲームなどの仮想空間の背景に相当するような画像を考えた場合、背景に登場する建造物などは、さほど細かい表現を必要とせず、できれば少ないモデルデータを用い、高速に描画できることが望ましい。そのような場合、テクスチャマッピング手法は有効であるが、最も簡単に建造物を表現するには、図１１のような画像を用意して極少ポリゴンに対してテクスチャを貼り付ければよい。例えば、図１２に示すように２つの三角形ポリゴンに対して、繰り返し描画で貼り付けると、壁一面に窓が並んだ建造物を容易に表現することができる。このようなポリゴンで立体を構成することにより、例えば、わずか４個の三角形ポリゴンで、図１３のような建造物が表現できる。
【０００４】
しかし、ここで問題となるのは、物体の表面の質感を表現する、色以外のパラメタであり、例えば、反射係数というパラメタがある。これは、モデルに与えられた光源に対する物体の反射を示す係数であり、入射光に対する反射の度合いによって物体の質感が大きく変化する。単純に図１３までの例のように、少ないポリゴンで表現してしまった場合、物体の持つ反射係数は、ポリゴン単位に与えるために、テクスチャ画像の壁の部分も窓ガラスの部分も同一のパラメタにより反射を計算してしまう。もし、ガラスの反射を主として設定してしまえば、壁部分も同様な反射を表現してしまうし、壁の部分を主に設定してしまえば、ガラス部分の反射が表現できなくなる。その不自然な表現を解消するためには、ポリゴンモデル自体に工夫をし、例えば図１４のように建造物を構成するポリゴンを細かく分割し、反射係数を変更したい部分を別なポリゴンとして定義することになる。あるいは、一面を先に描画してから、窓等の変更したい部分を別のポリゴンとして描画する、などの方法が考えられていた。また、テクスチャ画像に対応するモデルのポリゴン分割が面倒であれば、壁部分のテクスチャと窓部分のテクスチャを別途用意して、それぞれ別に描画する方が簡単に表現できた。
【０００５】
さまざまな表現を行うことはいろいろな方法を考えることによって対処可能であるが、モデル作成において面倒な作業が生じ、また、モデルデータが増大化するという問題があった。背景などのように、さほど高度な定義を行いたくないが、それでも表現力は維持したい場合などに、無駄なデータを大量に持ちたくないという要望があった。
【０００６】
ポリゴンレンダリングによる三次元グラフィックスシステムの従来の一般的な構成図を図１５に示す。
描画物体のモデルとは、ポリゴン描画のための頂点座標、視点情報、光源情報などの描
画に必要なデータである。また、テクスチャデータ、物体の材質・質感を表現するためのマテリアルパラメタなどがある。モデルデータを幾何変換部１０において座標変換し、描画するための空間に変換したところで、レンダリング部１１に渡され、マテリアルパラメタなどを用いて描画画素の色を算出し、結果をフレームバッファ１２に書き出す。
【０００７】
従来のシェーディング部の構成を図１６に示す。
頂点色、拡散色、鏡面色、鏡面指数、放射色などのマテリアルパラメタをシェーディング処理部１５において処理する。また、テクスチャ処理部１６は、テクスチャデータを取得し、出力する。そして、シェーディング処理部１５とテクスチャ処理部１６は、あらかじめ計算できる部分を処理し、ポリゴン単位に同一の処理結果を乗算器１７で掛け合わせて描画色を生成する。
【０００８】
特許文献１には、物体の表面情報の空間的変化に遠近感を与えることによって、リアリティの高い画像を生成する画像合成装置が開示されている。
【特許文献１】特開平６−２６６８５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
テクスチャマッピングの手法において、物体の表面の質感を簡単に表現することにおいては非常に有効であるが、イメージデータを貼り付けることによって擬似的に質感を表現しているだけであり、複雑な模様、イメージデータにおいては、ポリゴンを細かく分割したモデルデータを作成する必要があった。例えば、壁の模様などを作成し、建造物を構成する壁全体の模様として貼り付けるだけであれば比較的簡単に表現することができる。しかし、壁に加えて窓などを混在させたデータを建造物に貼り付ける場合、物体の持つ固有の反射係数は、構成するモデルのポリゴン単位にしか与えることができないため、壁の部分と、窓枠、窓ガラスなどが、全て同一の反射係数となってしまう。これを避けるためには、同一のテクスチャデータを用いるとしても、ポリゴンモデル自体を分割し、窓ガラス部分と壁部分を別のポリゴンとして作成しなければならなかった。
【００１０】
同程度の表現を行うために、モデルを分割するなどの方法により対処可能であるが、さほど重要でもない部分のモデルに対して大量のデータを必要とし、描画処理においても多くの座標変換等の幾何演算が必要となった。また、表現力をあきらめて簡易モデルを作成すると、物体の持つ材質の表現力が劣り、不自然な描画結果となる。
【００１１】
本発明の課題は、簡単な構成で、画像が表現する対象の質感をきめ細かく表現できるグラフィックス装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明のグラフィックス描画装置は、ポリゴンレンダリング方式のグラフィックス描画装置において、ポリゴンに貼り付けるイメージデータと、前記イメージデータの画素ごとに定義されたイメージの材質を表現するためのパラメタを保持するパラメタデータとを保持する保持手段と、前記イメージデータに前記パラメタデータを反映した画像を前記ポリゴンに貼り付け、画像を生成する画像生成手段とを備える。
【発明の効果】
【００１３】
本発明によれば、簡単な構成で、画像が表現する対象の質感をきめ細かく表現できるグラフィックス装置を提供することが出来る。
【発明を実施するための最良の形態】
【００１４】
本発明の実施形態においては、テクスチャマッピングという手法を採用したポリゴン三
次元グラフィックス描画装置において、物体の反射に関わる係数を、テクスチャデータに持たせることにより、１つのポリゴン内において複数の異なる反射を表現することが可能となり、より少ないモデルデータでさらに高度な物体の質感表現を可能とする。
【００１５】
テクスチャデータとして、反射係数を保持することにより、テクスチャデータのイメージ画像に、画素単位で、細かい反射係数を与えることが可能となる。画像の描画時に、画素色を計算するにあたり、物体のポリゴン単位に持っていた係数とは異なり、テクスチャデータの画素単位の係数を参照し描画色を決定する。この方法により、画素色計算時の計算量は若干増加するが、ポリゴンモデルのデータ量を圧倒的に削減しつつ、同等、あるいは従来以上の表現力を確保することを可能とする。
【００１６】
また、テクスチャの各画素が持つ係数は、それほど多くの種類を必要としないため、値そのものを持つ必要が無く、インデックスを用いた参照によりデータ量を大きくしなくて済む。
【００１７】
テクスチャデータに反射係数等の物体の材質を示すパラメタを保持し、画素単位に任意のパラメタを設定できるようにする。設定するパラメタは、拡散色、鏡面色、放射指数、放射色などである。本パラメタを画素単位に持つことにより、テクスチャ画像を参照するときに、同様にパラメタを参照し、描画画素を算出するときのパラメタとして使用する。
また、描画パラメタは、インデクスを用いて参照するような構成を取ることにより、テクスチャデータが膨大になるのを防ぐ。
【００１８】
図１は、本発明の実施形態における三次元グラフィックス描画装置の構成図である。
図１において、図１５と同じ構成要素には、同じ参照符号を付し、説明を省略する。
図１の構成においては、メモリに保持された三次元モデルのほかに、テクスチャデータとして、メモリに、テクスチャのイメージデータとは別に、マテリアルデータを画素単位に持つ。テクスチャイメージデータとテクスチャマテリアルデータとは、レンダリング部１１において、画像データに変換され、三次元モデルに貼り付けられる。
【００１９】
図２は、本実施形態の概念を説明する図である。
用意するテクスチャデータは、イメージ画像の画素と一対一に対応したマテリアルデータを持ち、必要に応じたパラメタを保持する構造である。例えば、図２のような画像、壁と窓が表現されたイメージ画像の場合、壁の質感を現したい場所には、壁表現用のパラメタが、ガラスの質感を表現したい場所には、ガラス表現用のパラメタが用意されている。壁の部分には、壁の質感を表現するパラメタが、窓の部分には、ガラスを表現するためのパラメタが、マテリアルデータとして、画素単位に設定される。
【００２０】
図３〜図５は、本実施形態の変形例を説明する図である。
ここで、画素毎にパラメタを用意すると、例えば、図３に示すように、ガラスの反射を表現するために、鏡面色の設定を(0.800, 0.800, 0.950)と設定し、他の壁の部分は、ほとんど鏡面反射が無い状態で(0.001, 0.001, 0.001)と設定するような場合、各画素に対して全てデータを持つことになる。この場合、例えば、マテリアルデータを32ビット表現した場合、画素毎に、32ビット×3のデータが必要となる。仮に、テクスチャ画像のイメージデータサイズが256×256だとすると、4バイト×3×256×256＝786,432バイトという巨大なテクスチャデータの追加が必要となってしまう。さらに、ここでは鏡面色しか考えていないが、他に拡散色、鏡面指数、放射色などを考えると、それぞれのパラメタに対して同じデータ量が必要となってしまう。
【００２１】
材質の質感を表現するためのマテリアルパラメタは、一つのテクスチャイメージ画像に
対して、それほど多くのパラメタの種類を必要としない。例えば、ここで例に示した壁と窓の組み合わせの画像などにおいても、壁の材質と窓ガラス、あとは窓枠程度の種類があれば十分な表現が可能である。細かく設定する場合でも、せいぜい数パタンのパラメタが設定できれば十分な効果が期待できるため、図４に示すように、インデックス参照式にしてパラメタを与えるようにする。それぞれの材質の質感は、上で挙げた鏡面色、拡散色、鏡面指数、放射色の４個であるとすると、４個のパラメタをそれぞれ２ビットで表現すれば、図４のように８ビットインデックスによって各パラメタが２ビット表現となり４通りを設定することができる。
【００２２】
各パラメタが４通りでは少ないならばインデックスを１６ビットに拡張すれば各パラメタが４ビットとなり、１６通りの設定が可能となる。
また、質感を表現するための４個のパラメタは、それぞれが独立に意味を持つが、ある質感を表現する場合、これらの組み合わせで質感が決まる。例えば、イメージ画像内のある物質の質感を表現するのは、４つのパラメタの組み合わせによって表現される。つまり、イメージ画像内に例えば１６通りの異なる質感を表現したい場合、それぞれのパラメタを別途１６通り設定可能にする必要はなく、１６種類のパラメタの組み合わせを指定すれば良い。
【００２３】
図５に示すように、この４個のパラメタの組み合わせに対してインデックスを振ることにより、わずか４ビットのインデックスで１６通りの異なる質感を定義することが可能となる。
【００２４】
図６は、本実施形態によるシェーディング部の構成図である。
図６において、図１６と同じ構成要素には、同じ参照符号を付し、説明を省略する。
図６においては、シェーディング処理部１５に入力されるデータとして、画素ごとに定義された、拡散色であるとか、鏡面色であるとかを示すマテリアルパラメタが入力される。
【００２５】
画素毎にマテリアルパラメタが変わるので、描画時（レンダリング時）の処理量が増加するように思われるが、上記実施形態のように画素単位に描画パラメタが変化する場合においても、インデックス方式を採用すれば、マテリアルパラメタ群によって一意に決まる処理結果を複数用意しておくことで、画素単位に切り替わるだけであり、実際の処理量はほとんど大きくならない。
【００２６】
図７〜図９は、OpenGLライブラリによる本実施形態のグラフィックスシステムの例を説明する図である。
OpenGLにおいては、オブジェクトの特性を示すパラメタとして、環境色、拡散色、鏡面色、鏡面指数、放射光という値がある。これらは、glMaterial( ) という関数によってパラメタ値が設定されるが、従来のシステムではこれらのパラメタは、「カレントのマテリアル特性」という概念しかない。つまり、次に描画対象となる物体の環境特性のみを定義することができる。
【００２７】
例えば、ここでは鏡面色についてのみ説明する。従来のシステムでは、
glMaterialv(GL_FRONT, GL_SPECULAR, spec);
により、鏡面色が設定されると、ハードウェア構成による描画機構であればSPECULAR値を保存するレジスタ２０に値が設定され、またはソフトウェア構成による描画機構であれば、変数に値が設定される。これは、次に値が設定されるまで保持される。
【００２８】
他のパラメタ設定が終わり、最後に描画関数、例えばglDrawElementsなどが呼ばれると、頂点色などから算出されたシェーディング結果の値２１、テクスチャデータの値２２、その他効果のパラメタとともに、前述の設定されたSPECULARの値２０を用いて、最終的な色２３の算出を行う。従って、glDrawElementsで描画を指示されたポリゴン全体に渡って、同じSPECULARの値が反映されることになる（図７）。
【００２９】
まず最初に、本実施形態における、テクスチャ画像と同一画素数分のSPECULARデータを値そのもので持つ場合を説明する。従来との互換のために、glMaterialvで設定するところで、意味の無い数値、例えば浮動小数ならば非数、整数ならば負数などの値を設定することによって、従来のSPECULARの値２０を使わないことを宣言する。この場合、テクスチャ画面サイズと同等のSPECULARデータ２４を持つため、テクスチャイメージ画素２２を参照すると同時に、SPECULARデータ２４を読み出し、その値を元にシェーディング値２１などともに最終的な色２３の算出を行う。この処理によって、テクスチャ画素単位で異なるSPECULAR値が用いられることになり、一つのプリミティブ内で異なるSPECULAR値を与えることが可能となる。（図８）
【００３０】
また、SPECULAR値を画素数分持つと多くのデータを必要とするため、インデックス方式にするならば、次のような構成になる。
まず、glMaterialvで値を設定する場合、従来の  spec[4] = { 0.5,0.5,0.6,1.0} のように配列で1個分のパラメタを設定するのに対して、spec[16] = { 0.5,0.5,0.6,1.0, ・・・・}のように複数個２０−１〜２０−４、この例の場合４×４で４セットの値、を設定可能とする。システムで、設定可能な上限を決めることになるが、この場合、４個の値、すなわち４種類の鏡面色の保持が可能とする。テクスチャイメージデータと同様にテクスチャデータ内に持つインデックス２５は、0から3の値を持つ。テクスチャイメージ画素を参照すると同時にインデックス値を参照し、その値によって、あらかじめ設定されたSPECULAR値の中から対応する値を参照し、シェーディング値２１、テクスチャイメージデータ２２などとともに、描画色を算出する（図９）。
【００３１】
ここで、テクスチャデータ中にSPECULARインデックスを持たない場合、0を参照するように構成すれば、従来のプログラムとの互換をとることができる。配列数４で設定した場合、SPECULAR０に設定されるため、従来どおりの設定の場合には、プリミティブ全域に対してSPECULAR０の値が使用されることになる。（追加資料による追加）
【００３２】
図１０は、本実施形態の処理フローである。
図１０（ａ）は、マテリアルデータを材質を示す値そのもので表現する場合のフローチャートである。ステップＳ１０において、ラスタライズ処理部からテクスチャ座標を取得する。ステップＳ１１において、テクスチャ場号、テクスチャ座標から、画素のアドレスを算出する。ステップＳ１２において、メモリからテクスチャ画素のデータ（イメージデータとマテリアルデータ）を取得する。ステップＳ１５において、マテリアルデータ、画素色値、テクスチャ画素値を元に画素の色を算出する。
【００３３】
図１０（ｂ）は、マテリアルデータをインデックスで表現する場合のフローチャートである。ステップＳ１０において、ラスタライズ処理部からテクスチャ座標を取得する。ステップＳ１１において、テクスチャ場号、テクスチャ座標から、画素のアドレスを算出する。ステップＳ１２において、メモリからテクスチャ画素のデータ（イメージデータとマテリアルデータ）を取得する。ステップＳ１３において、メモリからテクスチャ画素に対応するマテリアルインデックス値を取得する。ステップＳ１４において、メモリからインデックス値を元に、マテリアルデータを取得する。ステップＳ１５において、マテリアルデータ、画素色値、テクスチャ画素値を元に画素の色を算出する。
【００３４】
テクスチャ画像の画素単位に描画パラメタを与えることが可能となることにより、一つのテクスチャ画像を少数のポリゴンに貼り付けるときにおいても、画像の内容に応じた任
意の画素に対して異なる描画パラメタを与えることが可能となる。そして、反射の仕方が異なる物質の表現を、少数のポリゴンにて表現することができる。例えば、全く反射の仕方が異なる物質、鏡面反射の無い壁と鏡面反射が強いガラスなどが混在する画像においても少数ポリゴンにて表現することが可能となる。
【００３５】
テクスチャ画像が大きくなるが、テクスチャイメージ画像データに対してマテリアルデータは少量であり、同等の表現を行う場合に必要なポリゴンモデルデータが非常に小さくなることにより、幾何変換部の負荷も減り、高速の描画が可能となる。またコンテンツ製作者側のモデルデータ作成時の負担も減る。
【００３６】
描画時のレンダリング処理において、従来に比べて処理量が若干増加するが、インデックス方式の場合には、定義されたパタン数の種類だけあらかじめ計算することにより、実際の画素毎に行われる演算処理は、従来とほぼ同等である。
【００３７】
上記実施形態のほかに、以下の付記を開示する。
（付記１）
ポリゴンレンダリング方式のグラフィックス描画装置において、
ポリゴンに貼り付けるイメージデータと、前記イメージデータの画素ごとに定義されたイメージの材質を表現するためのパラメタを有するパラメタデータとを保持する保持手段と、
前記イメージデータに前記パラメタデータを反映した画像を前記ポリゴンに貼り付け、画像を生成する画像生成手段と、
を備えることを特徴とするグラフィックス描画装置。
（付記２）
前記パラメタデータは、前記イメージデータで表現されるイメージ部分の反射係数を有することを特徴とする付記１に記載のグラフィックス描画装置。
（付記３）
前記パラメタデータは、前記イメージデータで表現される部分の複数の材質表現をインデックスで表示することを特徴とする付記１に記載のグラフィックス描画装置。
（付記４）
前記パラメタデータは、前記イメージデータで表現される部分の複数の材質表現の組み合わせをインデックスで表示することを特徴とする付記１に記載のグラフィックス描画装置。
（付記５）
前記パラメタデータは、前記イメージデータの材質の質感を、鏡面色、拡散色、鏡面指数、放射色のいずれかで表すことを特徴とする付記１に記載のグラフィックス描画装置。
（付記６）
前記質感の種類は、それぞれ2ビットで表現され、各画素のパラメタデータは、8ビットのインデックスで表されることを特徴とする付記５に記載のグラフィックス描画装置。
（付記７）
前記パラメタデータは、それぞれの質感の組み合わせを4ビットのインデックスで表すことを特徴とする付記５に記載のグラフィック描画装置。
（付記８）
請求項１のグラフィック描画装置は、3次元グラフィック描画装置であることを特徴とするグラフィック描画装置。
（付記９）
ポリゴンに貼り付けるイメージデータと、前記イメージデータの画素ごとに定義されたイメージの材質を表現するためのパラメタを有するパラメタデータとを保持する保持手段を備えた、ポリゴンレンダリング方式のグラフィックス描画装置における描画方法であって、
前記イメージデータに前記パラメタデータを反映した画像を前記ポリゴンに貼り付け、画像を生成する、
ことを特徴とする描画方法。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態における三次元グラフィックス描画装置の構成図である。
【図２】本実施形態の概念を説明する図である。
【図３】本実施形態の変形例を説明する図（その１）である。
【図４】本実施形態の変形例を説明する図（その２）である。
【図５】本実施形態の変形例を説明する図（その３）である。
【図６】本実施形態によるシェーディング部の構成図である。
【図７】OpenGLライブラリによる本実施形態のグラフィックスシステムの例を説明する図（その１）である。
【図８】OpenGLライブラリによる本実施形態のグラフィックスシステムの例を説明する図（その２）である。
【図９】OpenGLライブラリによる本実施形態のグラフィックスシステムの例を説明する図（その３）である。
【図１０】本実施形態の処理フローである。
【図１１】従来技術を説明する図（その１）である。
【図１２】従来技術を説明する図（その２）である。
【図１３】従来技術を説明する図（その３）である。
【図１４】従来技術を説明する図（その４）である。
【図１５】従来技術を説明する図（その５）である。
【図１６】従来技術を説明する図（その６）である。
【符号の説明】
【００３９】
１０      幾何変換部
１１      レンダリング部
１２      フレームバッファ
１５      シェーディング処理部
１６      テクスチャ処理部
１７      乗算器
２０、２０−１〜２０−４      ＳＰＥＣＵＬＡＲレジスタ
２１      シェーディングデータ
２２      テクスチャイメージデータ
２３      描画データ
２４      ＳＰＥＣＵＬＡＲデータ
２５      ＳＰＥＣＵＬＡＲインデックス
【図１】
2010113548.tif 000003
【図２】
2010113548.tif 000004
【図４】
2010113548.tif 000005
【図５】
2010113548.tif 000006
【図６】
2010113548.tif 000007
【図７】
2010113548.tif 000008
【図８】
2010113548.tif 000009
【図９】
2010113548.tif 000010
【図１０】
2010113548.tif 000011
【図１１】
2010113548.tif 000012
【図１２】
2010113548.tif 000013
【図１３】
2010113548.tif 000014
【図１４】
2010113548.tif 000015
【図１５】
2010113548.tif 000016
【図１６】
2010113548.tif 000017
【図３】
2010113548.tif 000018