説明

画像生成装置及びプログラム

【課題】少ない処理量で、くっきりとした陰影や繊細な色のグラデーションなどを表現することが可能な画像処理プログラム等を提供する。
【解決手段】仮想三次元空間内に光源とポリゴンで構成される物体とカメラとを配置して、前記カメラで撮影した画像を生成する処理をコンピュータに実行させるための画像処理プログラムにおいて、前記仮想光源からの光が第1及び第2の物体に当たったときの拡散反射及び前記第2の物体に当たった前記第1の物体の影を、ライティング情報テクスチャにより物体のディテールを表すベーステクスチャと重ねて該当の物体にマッピングするステップと、前記仮想光が前記第1の及び第2の物体に当たったときの鏡面反射を算出し、前記第1及び第2の物体表面にスペキュラを生成するステップと、前記第2の物体にマッピングされる前記ライティング情報テクスチャに設けられたマスク情報に基づいて前記スペキュラをマスクするステップと、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、CG(コンピュータグラフィックス)技術におけるレンダリングの技術に関し、特に、光源からの光によって生じる物体表面の反射光や影をより現実的な状態で表示するための画像生成装置及びプログラムに関するものである。
【背景技術】
【0002】
CG技術を活用した各種のシミュレーション装置やゲーム装置においては、現実に近い画像をリアルタイムに生成することが要求される。このような装置においては、3次元空間にモデル化された物体(オブジェクト)、ライト(仮想光源)、カメラ(仮想カメラ)などの情報から2次元画像を生成する処理、いわゆるレンダリングを行なうことによって、より写実的な画像を表示するようにしている。
【0003】
3次元の仮想空間内に配置された各種の3次元形状のモデルをリアルタイムに画像表現する際には、ポリゴンが広く使用されている。このポリゴンは、表示する立体の材質などに合致させるべく、不透明のポリゴンだけでなく、透明あるいは半透明のポリゴンが用いられている。また、物体表面の色や柄を表現したり、質感を出したりするために、ポリゴンに着色したり、表面にテクスチャ(2次元画像)を貼り付けたりするなどの手法が採られている。
【0004】
現実に近い画像を表示するためには、光源からの効果を画像に反映させることが必要となる。光源の種類としては、例えば非常に輝度が高い太陽などの光源、輝度が高くある方向に指向性を持つレーザ光やスポットライトなどの光源、輝度は低いが星の光など指向性があって鏡面等に対して反射する光源などがある。このような光源から物体に光を当てたときに生じる物体表面での反射は、拡散反射と鏡面反射とに分けることができる。拡散反射による反射光は、物体のどの方向にも均一に反射する光であり、鏡面反射による反射光は、指向性のある光に対する反射光で、入射角と等しい反射角の方向に指向性をもって反射する光である。後者の拡散反射光には、昼間の太陽の下の様に、太陽からの直接照射による拡散光(ディフューズ光)と、周囲の物体で反射される光による周囲光或いは環境光とがある。一般に、環境光(アンビエント)は無数の光源からなることから、コンピュータを利用した画像処理では、拡散光の定数項として処理される。
【0005】
ところで、物体表面における光(反射光等)と影を表現する際には、(1)物体表面におけるベースの色や絵柄、(2)物体表面における拡散反射(ディフューズ)、(3)光が遮られることにより生じる影、(4)物体表面における鏡面反射(スペキュラ)、(5)周囲の環境物の映り込みなどを考慮する必要がある。なお、上記(3)の影の種類としては、他の物体に落とす自分の影の他に、物体の裏側のように光が当たらない側の陰影、物体の突起部等により自身に落とす影(セルフシャドウ)がある。
【0006】
上記のような要素を考慮して光と影を表現する方法としては、例えば、(A)ポリゴンの頂点データ(頂点のカラー、輝度、透明度等のデータ)に基づいてポリゴン面の各ピクセルの輝度等を求めて表現する方法と、(B)予め影などを反映したテクスチャをポリゴンに貼り付けることによって表現する方法とがある。
【0007】
上記(A)の方法としては、例えば、ポリゴンの頂点データを用いて頂点間の輝度を補間して辺の輝度を求め、さらに辺と辺の間の輝度を補間してポリゴンの当該領域を描画する方法(グーロシェーディング法)と、輝度ではなく法線を補間して各ピクセルの輝度を求めてポリゴンの当該領域を描画する方法(フォンシェーディング法)が挙げられる。後者のフォンシェーディング法は、膨大な演算処理が必要となるため、リアルタイムでの処理が要求されるゲーム装置等においては、一般的に前者のグーロシェーディング法が採用されている。
【0008】
一方、前記(B)の方法としては、テクスチャを構成する各ピクセルについて、例えばカラー、輝度、透明度の情報を予め与えておき、テクスチャを貼り付けた部分のピクセルを、テクスチャのカラー、輝度、透明度に置き換えたり、ポリゴンのカラー、輝度、透明度とそれぞれブレンドさせたりする方法が採られている。その際、例えば、ポリゴンの一部分に不透明又は半透明のテクスチャを貼り付けると、ディスプレイ上では、そのポリゴンはあたかも貼り付けたテクスチャの形状と同じ輪郭を持ったもののように表示される。このようなことから、凹凸のある複雑な輪郭を持った平板状の物体を表示する場合には、凹凸のすべてを多数の面を組み合わせて表現する手法よりは、むしろ一つのポリゴンに希望する物体の輪郭を持ったテクスチャを貼り付ける手法が採られている。
【0009】
ここで、従来技術を用いたレンダリングの処理について具体例を示して説明する。
【0010】
図5(A)〜(E)は、従来技術によるレンダリング処理の流れの一例を示す模式図である。ここでは理解を容易にするため、図5(A)に示すように、球体A1と立方体A2とから構成されるポリゴンモデルA(第1の物体)を2次元形状のポリゴンモデルB(第2の物体)の上に配置し、各モデルの斜め上方に位置する仮想光源から光(本例では面状の平行光)を当てた場合を例として説明する。
【0011】
図5(B)に示されるベーステクスチャT1は、物体表面におけるベースの色や絵柄などを表わすテクスチャであり、レンダリングの過程においては、先ず、ベーステクスチャT1から必要な部分を切り取って、図5(A)に示される第1の物体Aと第2の物体Bに貼り付ける。この処理によって、図5(C)に示すように、物体Bの表面の色や絵柄、物体Aの表面に映り込む物体Bの絵柄などが表現される。
【0012】
一方、物体表面における反射光や影は、光線ベクトルや法線ベクトルなどの情報に基づいてポリゴンの頂点毎にカラー情報(赤(R),緑(G),青(B)の三原色の濃度)を予め計算し、他の属性情報(頂点座標、透明度、テクスチャ座標、法線ベクトル等)と共にポリゴンの頂点データとして設定しておく。さらに、そのポリゴンの頂点データを用いてグーロシェーディング法による線分補間等の補間処理により、ポリゴン面のカラー情報を算出し、図5(D)に示されるような物体A及びBの画像情報を記憶しておく。なお、視線の方向によって反射光の領域が変化したり、光源の移動によって影の形状が変化したりするが、そのような状態を表現する場合は、レンダリングの過程において、光源、物体A、及び物体Bの各位置関係を考慮して、上記グーロシェーディング法等によって該当のポリゴンのカラー情報をリアルタイムに演算してライティング効果用の画像情報を生成する必要がある。
【0013】
次に、図5(C)の画像情報と図5(D)の画像情報とを乗算(カラー情報を合成)する。この処理によって、図5(E)示すように、物体A,Bの表面における光の反射(ディフューズやスペキュラ)と影を反映した画像が表現される。従来は、このようなレンダリングの処理をフレーム単位で繰り返すことによって、例えば、3次元空間内を移動する物体Aの動画像を表示するようにしている。
【0014】
なお、グーロシェーディング法では、スポットライトの様に照射領域が小さな光を当てた際に、照射領域内にいずれの頂点も位置しない場合や、一部の頂点しか位置しない場合が生じるため、現実的な光の分布を再現することができないと言う問題がある。このような問題に対しては、例えば、拡散反射光(ディフューズ光)や鏡面反射光(スペキュラ光)の光と影の境界領域に位置するポリゴンを検出し、そのポリゴンを分割して細分化されたポリゴンを生成し、そのポリゴンの頂点データを用いてグーロシェーディング法等により処理することで、光源による効果をより現実的に表示できるようにしたものが提案されている(例えば特許文献1参照)。
【0015】
また、例えば、背景に表示されている月が欠けていく様子を表現する場合のように、テクスチャに描かれている絵柄の形状(輪郭)を変化させたい場合、一般的に、その都度、所望の絵柄を有する別々のテクスチャを読み出すことによって変化させるようにしているが、この方法では、大容量のテクスチャマップが必要になる等の問題がある。このような問題に対しては、例えば、テクスチャの各ピクセルに付与された透明度を示すα値を変更(例えば該当の箇所のα値を透明又は不透明に変更)することによって、同一のテクスチャを用いて絵柄の形状を変化させることを可能としたものが提案されている(例えば特許文献2参照)。
【0016】
【特許文献1】特開平11−203501号公報
【特許文献2】特許3380674号公報
【発明の開示】
【発明が解決しようとする課題】
【0017】
ところで、上述したグーロシェーディング法を用いた従来のレンダリング方法では、反射光や影などのライティング情報をポリゴンの頂点単位でしか表現できないため、図5(E)の例のように、反射光や影がぼんやりとした画像が生成されてしまい、くっきりとした陰影や、繊細な色のグラデーションなどを表現することができなかった。また、より写実的にするには、モデルのポリゴンの数を増やす必要があるため、膨大な演算処理が必要となってしまい、適用できる装置が限られてしまうという問題があった。例えば、上述した特許文献1のように、該当の部分だけをポリゴンを分割して細分化し、そのポリゴンの頂点データを用いて処理することによって改善することができるが、くっきりとした陰影などを表現することは困難であった。また、より少ない処理量で光源からのライティングによる効果をより向上させることが望まれていた。
【0018】
さらに、図5を用いて説明した従来の画像生成方法では、頂点のカラー情報を乗算するだけなので、光を当てた部分の明るさをベースのテクスチャより明るくさせることができなかった。そのため、物体の表面にスポットライトを当てた場合や晴天などの強い太陽の光を当てた場合において、強い光を表現することができないなどの問題があった。このような問題に対しては、例えばHDR(ハイ・ダイナミック・レンジ)情報を持ったイメージベースドライティングの処理を行なうことによって強い光を表現することが可能であるが、影などの暗い部分にも光がそのまま乗ってしまい、本来暗い部分までが明るくなってしまうという問題があった。
【0019】
本発明は上述のような問題に鑑みて成されたものであり、本発明の目的は、上記の課題を解決し、少ない処理量で、くっきりとした陰影や繊細な色のグラデーションなどを表現することが可能な画像生成装置、及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【0020】
本発明は、画像生成装置及びプログラムに関するものであり、画像生成装置に関しては、本発明の上記目的は、仮想三次元空間内にポリゴンで構成される物体と仮想カメラと仮想光源とを配置して、前記仮想カメラで撮影した画像を生成する画像生成装置であって、前記仮想三次元空間内に配置される各物体のディテールをマッピングするためのベーステクスチャ、及び、物体表面における拡散反射及び物体の影を少なくともマッピングするためのカラー情報を有すると共に前記影を含む暗い領域をマスクするためのマスク情報を有するライティング情報テクスチャを記憶する2次元画像記憶手段と、前記仮想光源からの仮想光が第1の物体及び第2の物体に当たったときの拡散反射及び前記第2の物体に当たった前記第1の物体の影を、前記ライティング情報テクスチャにより前記ベーステクスチャと重ねて該当の物体にマッピングするテクスチャマッピング手段と、前記仮想光が前記第1の及び第2の物体に当たったときの鏡面反射を算出し、前記第1及び第2の物体表面にスペキュラを生成するスペキュラ生成手段と、前記第2の物体にマッピングされた前記ライティング情報テクスチャに設けられた前記マスク情報に基づいて前記スペキュラをマスクするライトマスク手段と、を備えることによって達成される。
【0021】
さらに、本発明の上記目的は、前記スペキュラ生成手段は、前記スペキュラを生成する際、前記スペキュラを生成する箇所に対応する前記ライティング情報テクスチャの箇所に前記マスク情報があるか否かを判定し、マスク情報がある箇所は前記スペキュラを生成する処理を実行しないこと、前記マスク情報は、前記カラー情報をモノクロ情報に変換した情報であること、前記ポリゴンで構成される各物体は、前記仮想三次元空間内を移動する移動オブジェクトと前記仮想三次元空間内で固定または前記仮想光源との位置関係が一定の位置関係にある固定オブジェクトとを識別可能に設定されており、、処理対象の物体が前記固定オブジェクトか否かを判定する判定手段を有し、該判定手段によって前記固定オブジェクトと判定された場合にのみ前記ライティング情報テクスチャを用いて前記拡散反射及び前記影のマッピング処理を実行すること、によってそれぞれ一層効果的に達成される。
【0022】
また、画像処理プログラムに関しては、本発明の上記目的は、仮想三次元空間内に仮想光源とポリゴンで構成される物体と仮想カメラとを配置して、前記仮想カメラで撮影した画像を生成する処理をコンピュータに実行させるための画像処理プログラムであって、前記仮想光源からの仮想光が第1の物体及び第2の物体に当たったときの拡散反射及び前記第2の物体に当たった前記第1の物体の影を、ライティング情報テクスチャにより物体のディテールを表すベーステクスチャと重ねて該当の物体にマッピングするステップと、前記仮想光が前記第1の及び第2の物体に当たったときの鏡面反射を算出し、前記第1及び第2の物体表面にスペキュラを生成するステップと、前記第2の物体にマッピングされる前記ライティング情報テクスチャに設けられたマスク情報に基づいて前記スペキュラをマスクするステップと、を有すること、によって達成される。
【0023】
さらに、本発明の上記目的は、前記スペキュラを生成する際、前記スペキュラを生成する箇所に対応する前記ライティング情報テクスチャの箇所に前記マスク情報があるか否かを判定し、マスク情報がある箇所は前記スペキュラを生成する処理を実行しないこと、前記スペキュラを生成する際、ハイ・ダイナミック・レンジ情報を持ったイメージベースドライティングの処理によって前記スペキュラを生成すること、前記ポリゴンで構成される各物体は、前記仮想三次元空間内を移動する移動オブジェクトと前記仮想三次元空間内で固定または前記仮想光源との位置関係が一定の位置関係にある固定オブジェクトとを識別可能に設定されており、処理対象の物体が前記固定オブジェクトか否かを判定する判定ステップを有し、該判定ステップによって前記固定オブジェクトと判定された場合にのみ前記ライティング情報テクスチャを用いて前記拡散反射及び前記影のマッピング処理を実行すること、によってそれぞれ一層効果的に達成される。
【発明の効果】
【0024】
本発明によれば、ポリゴンの頂点ではなく、2枚目のテクスチャ(ライティング情報テクスチャ)に陰影などの拡散反射や影などを表わすライティング情報を予め持たせるようにしているので、頂点間の補間処理等をすることなく、くっきりとした陰影や繊細な色のグラデーションなどを表現することができる。また、スペキュラを生成する際、影などの暗い部分をマスクして生成するようにしているので、影などの暗い部分を損なわずにスペキュラを追加することが可能になる。このマスク処理によって、晴天などの強い太陽の光をリアルに表現することができる。さらに、光源からの光のライティングの計算処理はスペキュラ成分だけで良いので、処理量を軽減させつつ、正しい位置にスペキュラを表示することができる。なお、ライティングは、HDR(ハイ・ダイナミック・レンジ)情報を持ったイメージベースドライティングをすることによって、通常のライトの計算をするよりも処理が軽く、リアルな表現をすることが可能になる。
【発明を実施するための最良の形態】
【0025】
本発明は、ゲーム装置やシミュレーション装置などのリアルタイムでの動画の生成処理が要求される情報処理装置に好適に適用されるものである。先ず、本発明の技術的着想とレンダリング時の処理における本発明の技術的な特徴について、概要を説明する。
【0026】
物体表面における光の拡散反射等のシェーディング処理や、他の物体に映り込む影のシャドウイング処理などは、光源と物体の位置関係及び光の入射角に依存するため、視点位置が変わったのみでは物体の輝度や影の位置は変わらず、一方、物体表面における光の鏡面反射等のスペキュラ処理は、視線方向によって反射光の強さが変わるため、視点位置の影響を受けやすいという特徴がある。
【0027】
また、上記のシェーディングやシャドウイングは、物体を構成するポリゴンの頂点間の輝度等を計算により補間して求めることになるため、ポリゴンの数や大きさ、形状によっては、光と影の境界が正しく表現できなくなってしまう恐れがある。
【0028】
そこで、本発明では、シェーディング処理やシャドウイング処理は、計算により表面特性を求めるのではなく、ライティング用のテクスチャから必要な部分を切り取って物体に貼り付ける方法で処理を行ない、スペキュラ処理については、計算により求めることで正しい位置に表示するようにしている。
【0029】
こういった処理によって複数の物体にスペキュラ表示を行なう場合、ある物体のスペキュラ表示位置に、他の物体の影が映り込む場合がある。実際に物体に当たった影の部分は光が遮られているため、その物体と光源との位置関係のみでは正しいスペキュラ表示ができないため、従来の方法では、他の物体との位置関係も考慮したスペキュラ処理を行なう必要がある。しかし、リアルタイムにCGで動画を生成する場合、限られた時間内に正しい処理を行なう必要があるが、従来の方法では影の位置とスペキュラの位置とを比較するための処理に時間がかかってしまい、処理能力の低い装置ではリアルタイム処理を実現することができないため、適用範囲が限られてしまう。
【0030】
そこで、本発明では、ライティング用のテクスチャに予めマスク情報を組み込んでおき、例えば、スペキュラ表示の際に、該当する位置のライティング用のテクスチャにマスク情報があるか否かを判定し、ある場合にはその箇所にスペキュラ表示を行なわないように処理をスキップするようにしている。また、マスク情報が多ビットで構成されている場合は、値の大きさによってスペキュラの濃さ(輝度)を変化させるようにしている。こうすることで、処理量を軽減させつつ正しい表示が可能になる。
【0031】
尚、この画像処理は、仮想光源と物体の位置関係が一定(または固定)の場合に更なる効果を奏する。
【0032】
この場合、仮想光源と物体の位置関係が一定(または固定)の場合は、拡散光も常に物体の同じ位置に同じように照射されるため、ライティング情報テクスチャのテクスチャメモリからの読み出しアドレスが同じ値になるため、ポリゴン頂点の輝度計算やテクスチャアドレスの計算が不要になる。
【0033】
従って、本発明では、仮想3次元空間内を移動または向きを変える物体と、固定に配置される物体とをフラグ等で識別可能にメモリに記憶しておき、描画の際に、このフラグによって、仮想3次元空間内に固定的に配置される物体と識別されたときに、上記の処理を行って描画するか否かを決定している。
【0034】
また、フラグは、ライティング情報テクスチャにパラメータとして設定しておき、物体の描画時に描画に用いられるテクスチャのパラメータを識別し、パラメータの値(フラグ)によって上記の処理を行って描画するか否かを決定しても良い。
【0035】
仮想3次元空間内に固定的に配置される物体は、例えば、建物や風景等であり、移動または向きを変える物体は、人物や動物、乗り物等である。
【0036】
一般的に、仮想3次元空間内に固定的に配置される物体は、視点位置や向きを固定にした場合に静止した画像になるので、表面のディテールや光の当たり具合の精密さが求められ、移動または向きを変える物体は、視点位置や向きとは関係なく常に位置や向きを変えて表示されるので、同じ箇所が常に同じ位置に表示されないので、表面のディテールや光の当たり具合の精密さは固定的に配置される物体ほどは要求されないので、本発明は、リアルタイムな動画像を生成するビデオゲーム等での画像表示において有効に働く。
【0037】
以下、本発明の好適な実施の形態について図面を参照して詳細に説明する。
【0038】
図1(A)〜(G)は、本発明に係るレンダリング処理の流れの一例を、図5に示した従来例と比較して説明するための模式図である。なお、ここでは理解を容易にするため、図5(A)と同様に、図1(A)に示される3次元形状のポリゴンモデルA(第1の物体)を2次元形状のポリゴンモデルB(第2の物体)の上に配置し、斜め上方に位置する仮想光源から面状の平行光(仮想光)を当てた場合を例として説明する。但し、本発明は、物体A,Bの形状や光源の種類(点光源、スポットライト、平行光源、線光源、面光源等)、及び物体や光源の数に限定されるものではない。また、第1の物体Aがそれ自身に落とす影(セルフシャドウ)等の処理については説明を省略するが、物体を構成する各部位(本例では球体A1と立方体A2)が第1の物体と第2の物体になるだけであり、レンダリングに係る処理は同様である。
【0039】
以下、本発明に係るレンダリング時の処理を図1(A)〜(G)の流れに沿って説明するが、以下に示す[1]〜[4]の処理は、処理の順番を規定するものではない。
【0040】
[1]『ベーステクスチャのマッピング処理』
図1(B)に示されるベーステクスチャT1は、物体表面におけるベースの色や絵柄などを表わすテクスチャであり、レンダリングの手順としては、先ず、ベーステクスチャT1から必要な部分を切り取って、図1(A)に示される第1の物体Aと第2の物体Bに貼り付ける。この処理は従来と同様であり、図1(C)に示すように、物体Bの表面の色や絵柄、物体Aの表面に映り込む物体Bの絵柄などが表現される。
【0041】
[2]『ライティング用テクスチャのマッピング処理』
一方、物体表面における反射光や影を表現する場合、ライティング効果用の画像情報は、従来のように影などのカラー情報をポリゴンの頂点データに持つのではなく、図1(D)に示すように、2枚目のライティング用テクスチャT2(以下「ライティング情報テクスチャ」と言う)に持たせておく。
【0042】
本例でのライティング情報テクスチャT2は、仮想光源からの仮想光により生じる影,ディフューズ,及びアンビエント(物体からの反射光や大気による光の回り込みなど)を少なくとも表現するカラー情報(R、G、Bの三原色の濃度情報)の他に、後述するマスク情報を有している。ここで言う「影」とは、物体の光が当たらない側の影、他の物体に落とす自分の影、物体がそれ自身に落とす影などであり、本発明では、これらの全ての影を表現したカラー情報をライティング情報テクスチャT2に設けている。なお、このライティング情報テクスチャT2は、現実のモデルをカメラ等により撮像したものを用いても良い。
【0043】
このようなライティング情報テクスチャT2を用いて、光源からの光のライティング効果を表現する場合には、図1(D)のライティング情報テクスチャT2から必要な部分を切り取り、その部分のカラー情報と図1(C)の画像情報とを乗算(合成)する。
【0044】
要約すると、上記[1]、[2]の処理では、仮想光源からの仮想光が第1の物体Aと第2の物体Bに当たったときの拡散反射(ディフューズ)及び第2の物体Bに当たった第1の物体Aの影を表わすライティング情報テクスチャT2を、物体のディテールを表すベーステクスチャT1に重ねて、第1の物体A及び第2の物体Bにマッピングする。このような処理によって、図1(E)に示すように、光を各物体A、Bに当てたときに生じる影、ディフューズ、アンビエント等を表現することができると共に、くっきりとした陰影や繊細な色のグラデーションなどを表現することが可能となる。
【0045】
[3]『スペキュラの生成処理』
次に、スペキュラの表現について説明する。
【0046】
前述したように、物体表面における鏡面反射は、光が拡散せず、物体への入射角と同じ角度で反射する鏡のような反射をいい、ある光源から強度Ipの光が入射したとき、鏡面反射光により観測される輝度Lsは、視線と反射光の角度をeとすると、
Ls=c(s)・cos e^n・Ip
となり、視線方向と正反射方向とのずれ角によって輝度が決まる。すなわち、視線方向によって反射光の強さが変わるため、視点位置の影響を受けやすい。そのため、本実施の形態では、視線方向などの変動によって鏡面反射の位置や領域が変化した場合においても正しいスペキュラ表示ができるようにするため、スペキュラについては計算によって表面特性を求めるようにしている。
【0047】
スペキュラの生成処理としては、例えば、仮想光が各物体A,Bに当たったときの鏡面反射を算出し、各物体A,Bの表面(鏡面反射の影響を受けるポリゴン部分)にスペキュラを生成する。本実施の形態では、HDR(ハイ・ダイナミック・レンジ)情報を持ったイメージベースドライティングをすることによって、スペキュラを反映した画像を生成するようにしている。なお、物体表面にスペキュラを生成(形成)する方法としては、公知の技術として、(1)スペキュラのポリゴンを用いて物体のポリゴンにスペキュラのテクスチャを貼り付ける方法、(2)スペキュラのポリゴンを用いて、物体のポリゴンの頂点カラーを変更してシェーディング処理を行なう方法、(3)物体を構成するポリゴンのテクスチャをスペキュラのテクスチャに変更する方法、またはスペキュラのテクスチャを、物体を構成するポリゴンのテクスチャに重ねて貼り付ける方法、(4)物体を構成するポリゴンの点カラーを変更してシェーディング処理を行なう方法などがあり、これらのいずれかの方法を用いるようにしても良い。
【0048】
[4]『ライト(スペキュラ光)のマスク処理』
上記のようなスペキュラ処理をそのまま行なうと、影などの暗い部分にもスペキュラ光が合成されて、影などの暗い部分が明るくなってしまう。これを回避し、且つレンダリングにおける処理量を軽減させるために、本発明では、ライティング情報テクスチャT2にマスク情報(以下「ライトマスク情報」と呼ぶ)を設け、物体表面にスペキュラを表示する際、その表示領域のうち非マスク領域を対象としてスペキュラを表示するようにしている。すなわち、陰などの暗い部分は覆い被せて(マスクして)スペキュラを生成することによって、本来暗い部分が明るくならないようにしている。
【0049】
本発明に用いるライトマスク情報は、上記のように影などの暗い部分を本来の暗さに保持(又は補正)するための情報であり、ライトマスク情報のデータ構成としては、ライティング情報テクスチャT2を構成するピクセル毎のマスク値で構成される。そして、マスク値は、当該位置のピクセルをマスクするか否かを示す2値(白黒)の情報、あるいは、グレイスケールを示す多値(輝度または濃度の階調値)の情報で構成される。このライトマスク情報の記憶場所は限定されるものではないが、ライティング情報テクスチャT2においてテクスチャの各テクセル毎の未使用の領域(本例では透明度を示す情報(α値)の記憶領域)を使用するのが好ましい。例えば、テクスチャマッピングの処理を回路で構成した場合には、αチャンネルの領域を使用する。
【0050】
図1(F)は、マスク情報のイメージを示しており、本例では、図1(D)のライティング情報テクスチャT2に設定された影などのカラー情報をモノクロ情報(2値化した白黒画像又は、グレイスケールの多階調の画像)に変換し、そのモノクロ情報を「マスク情報」としている。
【0051】
このようなマスク情報を用いて物体A、Bの表面にスペキュラを生成する際には、例えば、スペキュラを生成する箇所(領域又は位置)に対応するライティング情報テクスチャT2の箇所(領域又は位置)に、マスク情報があるか否かを判定し、マスク情報がある場合には、その箇所にスペキュラ表示を行なわないように、スペキュラの生成処理(描画処理)をスキップする形態とするのが望ましい。
【0052】
尚、描画の順序としては、物体A、Bに物体のベーステクスチャとライティング情報テクスチャをマッピングしてから、光源等から鏡面反射を算出して、ライティング情報テクスチャに設定されたマスク情報に基づいてスペキュラの描画をピクセル単位で行なっていく方法や、物体A、Bに物体に対して光源等から鏡面反射を算出してスペキュラの描画を行なっておき、後にベーステクスチャとライティング情報テクスチャをマッピングする際に、ライティング情報テクスチャに設定されたマスク情報に基づいて、ベーステクスチャとライティング情報テクスチャの描画をピクセル単位で行なっていく方法のいずれかでも良い。後者の場合、物体A、Bに予めベーステクスチャをマッピングしておき、ライティング情報テクスチャのみをこれに設定されたマスク情報に基づいてピクセル単位で仰臥するようにしても良い。
【0053】
図1の例では、図1(E)に示す物体A,Bの表面にスペキュラを生成する際、マスク情報に基づいてスペキュラをマスクした状態とし、スペキュラを生成する領域のうち非マスク領域を対象として生成することによって、処理量を軽減させつつ、正しい表示が可能になる。例えば、晴天などの強い太陽の光を当てている状態を表現したい場合(あるいは物体の表面にスポットライトを当てた状態を表現したい場合など)、図1(F)に示すように、強い光を表現し、且つ影などの暗い部分が明るくならないように表示することができる。
【0054】
なお、グレイスケールを示す階調値をマスク値とした場合には、例えばマスク情報とスペキュラの生成情報に含まれる濃度(輝度)を混合してスペキュラの画像を生成する。すなわち、予め設定若しくは設定変更されたマスク値の大きさによってスペキュラの濃さ(輝度)を変化させる構成としても良い。
【0055】
以上のようなレンダリングの処理を含む画像生成処理をコンピュータに実行させるためのプログラム(以下「画像処理プログラム」と言う)は、任意の装置外部の記録媒体又は装置内部の記録媒体に格納されており、当該装置のコンピュータにより読み出されて実行される。本発明に係る画像処理プログラムは、その他の処理を行なうメインプログラムから指令されて動作するプログラム、又はゲームプログラムやシミュレーションプログラムなどの各種のアプリケーションプログラムに組み込まれて提供され、当該コンピュータを各種の情報処理装置として機能させる。なお、本発明に係る画像生成処理の一部の処理をハードウェアで実現する形態も本発明に含まれる。
【0056】
次に、本発明に係るレンダリングのアルゴリズムを適用した画像生成装置の構成について説明する。
【0057】
図2は、本発明に係る画像生成装置の構成の一例を示すブロック図である。なお、本発明は、シミュレーション装置やゲーム装置に限らず、ナビゲーション装置や医療補助装置、パチンコ機などの各種の情報処理装置に適用できるものであり、図2に示されるハードウェア構成に限定されるものではなく、汎用的なハードウェア構成の装置に適用することができる。
【0058】
本発明に係る技術は、図2中のレンダリング処理部112に適用されるため、画像処理部110又はレンダリング処理部112を本発明の画像生成装置として定義することもできるが、ここでは、図2中の符号100で示される破線枠内の部分を画像生成装置と定義して説明する。
【0059】
図2において、画像生成装置100には、操作者が入力操作を行なう操作部10、スピーカ20及びディスプレイ30など接続される。
【0060】
画像生成装置100は、I/O(入出力)処理部101、CPU(Central Processing Unit)102、ROM(Read Only Memory)103、RAM(Random Access Memory)104、サウンドメモリ105aを有するサウンド処理部105、及び画像処理部110が、それぞれ共通のバス106で接続されている。
【0061】
画像処理部110は、図2中に示すように、ジオメトリ処理部111、レンダリング処理部112、ビデオ処理部113、及び記憶部(本例では、テクスチャバッファ114a、Zバッファ114b、及びフレームバッファ114c)等から構成される。
【0062】
ジオメトリ処理部111は、3次元座標系内に配置された物体のポリゴンを、回転,縮小又は拡大を行なう相似変換処理、視点に対して表示画面上の2次元座標系へ変換する透視変換処理等を行なう。2次元座標系へ変換されたポリゴンデータは、レンダリング処理部112に供給される。そのポリゴンデータは、通常、ポリゴンを構成する頂点の三次元座標、法線ベクトル、輝度データ、色データ、透明度、テクスチャ座標等の頂点データ(2次元座標内の頂点データ)で構成される。
【0063】
レンダリング処理部112には、本例では、テクスチャデータが格納されたテクスチャバッファ114aと、各ピクセルの二次元座標内の奥行きを示すZ値が格納されるZバッファ114bとが接続される。
【0064】
レンダリング処理部112で生成された1フレーム分の画像情報は、フレームバッファ114cに書き込まれる。そして、フレームバッファ114cに書き込まれた画像情報は、ビデオ処理部113で所定の同期タイミングでビデオ信号に変換されてディスプレイ30に出力される。
【0065】
なお、上記のジオメトリ処理部111とレンダリング処理部112でのポリゴンに対する処理は、通常の画像生成装置では、次々に供給されるポリゴンデータを順次処理するパイプライン処理の構成をとる。或いは、汎用コンピュータにより処理する場合は、ジオメトリ処理とレンダリング処理は、それぞれの処理プログラムに従って行なわれる。
【0066】
図3は、本発明に係るレンダリング処理部112の主要部の構成を示す機能ブロック図である。レンダリング処理部112は、前述のベーステクスチャ及びライティング情報テクスチャ等を記憶する2次元画像記憶手段51と、前述の[1]及び[2]のマッピング処理を行なうテクスチャマッピング手段52と、前述の[3]のスペキュラの生成処理を行なうスペキュラ生成手段53と、前述の[4]のライトのマスク処理を行なうライトマスク手段54などから構成される。
【0067】
図3中の2次元画像記憶手段51は、ハードウェアとしては図2中のテクスチャバッファ114aに相当する。テクスチャマッピング手段52は、仮想光源からの仮想光が第1の物体及び第2の物体に当たったときの拡散反射及び第2の物体に当たった第1の物体の影を、ライティング情報テクスチャにより物体のディテールを表すベーステクスチャと重ねて物体にマッピングする機能などを有している。
【0068】
スペキュラ生成手段53は、仮想光が第1及び第2の物体に当たったときの鏡面反射を算出し、第1及び第2の物体の表面にスペキュラを生成する機能などを有している。そして、ライトマスク手段54は、第2の物体にマッピングされるライティング情報テクスチャに設けられたマスク情報に基づいて上記スペキュラをマスクする機能を有している。
【0069】
なお、上記手段51〜54は、説明の便宜上、レンダリング処理部の機能構成を示すために、構成要素に手段名を付けて機能的に分類したものであり、ソフトウェ構成等を限定するものではない。また、上記テクスチャマッピング手段52、スペキュラ生成手段53、及びライトマスク手段54は、本実施の形態ではハードウェアと協働して動作する画像処理プログラムで実現されるが、一部又は全ての処理をハードウェアで構成する形態としても良い。
【0070】
このような構成において、本発明に係る画像生成装置の動作例を説明する。なお、レンダリング処理部112の以外の動作については一般的な画像生成装置の動作と同様であるため説明を省略し、ここでは、本発明に係るレンダリング処理部112の主要な動作について説明する。
【0071】
以下、本発明に係るレンダリング処理部の動作例を図4のフローチャートの流れに沿って説明する。
【0072】
レンダリング処理部112では、ジオメトリ処理部111から供給される各物体のポリゴンの頂点データ、光源データ、及び視点データを入力する。ここで入力される光源データは、例えばスポットライトの場合は、光源の位置座標、強さ、色、光源からの光線が届く距離の範囲、光の広がりを示す円錐角、方向等の情報を含んでいる(ステップS1)。
【0073】
レンダリング処理部112のテクスチャマッピング手段52では、2次元画像記憶手段51(図2中のテクスチャバッファ114a)から、ポリゴンのテクスチャ座標に対応するベーステクスチャ(1枚目のテクスチャ)及びライティング情報テクスチャを(2枚目のテクスチャ)読み出し、光源からの光が第1,第2の物体に当たったときの拡散反射(ディフューズ)及び第1の物体(光源側の物体)が第2の物体(光源に対して奥側の物体)に落とす影などを、ライティング情報テクスチャによって物体のディテールを表すベーステクスチャに重ね合わせて第1,第2の物体にマッピングする(ステップS2)。なお、ここで言う「ライティング情報テクスチャ」は、前述のカラー情報及びマスク情報を有する2枚目のライティング用テクスチャT2のことであり、影,ディフューズ,アンビエントなどを表す1枚のテクスチャである。
【0074】
続いて、レンダリング処理部112のスペキュラ生成手段53では、各物体の頂点データ、光源データ及び視点データをもとに、各物体と視点と光源の位置関係等を求めて仮想光源からの光が物体に当たったときの物体表面におけるスペキュラの領域を決定すると共に(ステップS3)、光源の強さと色、光の入射角等の情報に基づいて物体表面におけるスペキュラの明るさ(輝度又は色の濃度、若しくは両者)を算出する(ステップS4)。
【0075】
一方、ライトマスク手段54によって、第2の物体(第1の物体によって光源からの光が遮られる奥側の物体)にマッピングされるライティング情報テクスチャに設けられたマスク情報に基づいて、スペキュラ領域(スペキュラ光の表示領域)をマスクしておく(ステップS5)。そして、前記ステップS4においてスペキュラの画像情報を生成する際(あるいは、スペキュラの画像情報を前記ステップS2でテクスチャマッピングした画像情報と合成して表示する際)には、スペキュラ生成手段53では、スペキュラ領域の各ピクセル位置にマスク情報(マスク値)があるか否かを判定し(ステップS6)、マスク情報があるにはスペキュラの処理をスキップして、非マスク領域を対象としてHDR(ハイ・ダイナミック・レンジ)情報を持ったイメージベースドライティングの処理によって該当の部分だけにスペキュラを生成(あるいは合成)する(ステップS7)。そして、スペキュラを反映した画像情報をフレームバッファ114cに書き込み(ステップS8)、1フレーム分の処理を終了する。
【0076】
以上の処理によって、光源からのライティングによる物体表面の各種の光と影の効果を反映した画像がディスプレイ30に出力される。そして、ステップS1以降の処理をフレーム毎に繰り返すことによって動画像が表示される。例えば、ゲーム装置の場合は、操作手段の操作に応答して仮想三次元空間内を移動する移動体(プレイヤキャラクタ等)の動画像が表示される。また、ナビゲーション装置の場合は、無線によって受信した移動体の位置情報を可変要素として入力することによって、移動体(車両や携帯電話機所持者など)を表わすモデルが地図の画像上を移動する様子を示す動画像等が表示される。
【0077】
以上のように、本発明に係る画像生成装置(及びプログラム)では、ライティングによる影などのカラー情報をテクスチャとして持たせておき、そのテクスチャをベーステクスチャと重ね合わせて物体表面にマッピングすることによって、影やディフューズ、アンビエント等を反映させる。一方、スペキュラについては、視線方向の変化や、物体,光源,仮想カメラの移動などに伴って変化するスペキュラの位置を演算により検出し、正しい位置にスペキュラを設定すると共に、影などの暗い部分をマスクしてスペキュラを表示する。その結果、レンダリングにおける処理量を軽減させつつ、物体表面の反射光や影などをより一層現実的に表示することが可能となる。
【図面の簡単な説明】
【0078】
【図1】本発明に係るレンダリング処理の流れの一例を示す模式図である。
【図2】本発明に係る画像生成装置の構成の一例を示すブロック図である。
【図3】本発明に係るレンダリング処理部の構成の一例を示す機能ブロック図である。
【図4】本発明に係るレンダリング処理部の動作例を説明するためのフローチャートである。
【図5】従来技術によるレンダリング処理の流れの一例を示す模式図である。
【符号の説明】
【0079】
A 第1の物体
B 第2の物体
T1 ベーステクスチャ
T2 ライティング情報テクスチャ
51 2次元画像記憶手段(テクスチャバッファ)
52 テクスチャマッピング手段
53 スペキュラ生成手段
54 ライトマスク手段
100 画像生成装置
110 画像処理
111 ジオメトリ処理部
112 レンダリング処理部
113 ビデオ処理部
114a テクスチャバッファ
114c フレームバッファ

【特許請求の範囲】
【請求項1】
仮想三次元空間内にポリゴンで構成される物体と仮想カメラと仮想光源とを配置して、前記仮想カメラで撮影した画像を生成する画像生成装置であって、
前記仮想三次元空間内に配置される各物体のディテールをマッピングするためのベーステクスチャ、及び、物体表面における拡散反射及び物体の影を少なくともマッピングするためのカラー情報を有すると共に前記影を含む暗い領域をマスクするためのマスク情報を有するライティング情報テクスチャを記憶する2次元画像記憶手段と、前記仮想光源からの仮想光が第1の物体及び第2の物体に当たったときの拡散反射及び前記第2の物体に当たった前記第1の物体の影を、前記ライティング情報テクスチャにより前記ベーステクスチャと重ねて該当の物体にマッピングするテクスチャマッピング手段と、前記仮想光が前記第1の及び第2の物体に当たったときの鏡面反射を算出し、前記第1及び第2の物体表面にスペキュラを生成するスペキュラ生成手段と、前記第2の物体にマッピングされた前記ライティング情報テクスチャに設けられた前記マスク情報に基づいて前記スペキュラをマスクするライトマスク手段と、を備えたことを特徴とする画像生成装置。
【請求項2】
前記スペキュラ生成手段は、前記スペキュラを生成する際、前記スペキュラを生成する箇所に対応する前記ライティング情報テクスチャの箇所に前記マスク情報があるか否かを判定し、マスク情報がある箇所は前記スペキュラを生成する処理を実行しないことを特徴とする請求項1に記載の画像生成装置。
【請求項3】
前記マスク情報は、前記カラー情報をモノクロ情報に変換した情報であることを特徴とする請求項1又は2に記載の画像生成装置。
【請求項4】
前記ポリゴンで構成される各物体は、前記仮想三次元空間内を移動する移動オブジェクトと前記仮想三次元空間内で固定または前記仮想光源との位置関係が一定の位置関係にある固定オブジェクトとを識別可能に設定されており、処理対象の物体が前記固定オブジェクトか否かを判定する判定手段を有し、該判定手段によって前記固定オブジェクトと判定された場合にのみ前記ライティング情報テクスチャを用いて前記拡散反射及び前記影のマッピング処理を実行することを特徴とする請求項1乃至3のいずれかに記載の画像処理装置。
【請求項5】
仮想三次元空間内に仮想光源とポリゴンで構成される物体と仮想カメラとを配置して、前記仮想カメラで撮影した画像を生成する処理をコンピュータに実行させるための画像処理プログラムであって、
前記仮想光源からの仮想光が第1の物体及び第2の物体に当たったときの拡散反射及び前記第2の物体に当たった前記第1の物体の影を、ライティング情報テクスチャにより物体のディテールを表すベーステクスチャと重ねて該当の物体にマッピングするステップと、前記仮想光が前記第1の及び第2の物体に当たったときの鏡面反射を算出し、前記第1及び第2の物体表面にスペキュラを生成するステップと、前記第2の物体にマッピングされる前記ライティング情報テクスチャに設けられたマスク情報に基づいて前記スペキュラをマスクするステップと、を有することを特徴とする画像処理プログラム。
【請求項6】
前記スペキュラを生成する際、前記スペキュラを生成する箇所に対応する前記ライティング情報テクスチャの箇所に前記マスク情報があるか否かを判定し、マスク情報がある箇所は前記スペキュラを生成する処理を実行しないことを特徴とする請求項4に記載の画像処理プログラム。
【請求項7】
前記スペキュラを生成する際、ハイ・ダイナミック・レンジ情報を持ったイメージベースライティングの処理によって前記スペキュラを生成することを特徴とする請求項5に記載の画像処理プログラム。
【請求項8】
前記ポリゴンで構成される各物体は、前記仮想三次元空間内を移動する移動オブジェクトと前記仮想三次元空間内で固定または前記仮想光源との位置関係が一定の位置関係にある固定オブジェクトとを識別可能に設定されており、、処理対象の物体が前記固定オブジェクトか否かを判定する判定ステップを有し、該判定ステップによって前記固定オブジェクトと判定された場合にのみ前記ライティング情報テクスチャを用いて前記拡散反射及び前記影のマッピング処理を実行することを特徴とする請求項5乃至7のいずれかに記載の画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate