トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 2次反射環境マッピング回路
【発明者】 【氏名】池戸 恒雄

【要約】 【課題】環境マッピング回路に関し、環境マッピングを伴う第一のミラー反射物体が、第二のミラー反射平面に投影される2次反射レンダリングをポリゴンレンダリング法に基づくハードウエア回路で実現する。

【解決手段】第一パスで、環境マッピングを含む物体をレンダリングして第一の画像メモリ14とzバッファ12に記憶すると共に、ミラー反射平面のポリゴンのレンダリングでは環境バッファ11を設けて、反射率とフラグを記憶し、次に第二パスにおいて、ミラー反射平面を回転面として回転した物体を、環境マッピングを含みレンダリングする際、環境バッファのフラグを調べて、回転平面の背後にある物体のみを選択し、これを第二の画像およびzバッファ13に記憶して、第二パス終了後、環境バッファの反射率を用いて、第一および第二の画像メモリを合成する2次反射環境マッピング回路。。
【特許請求の範囲】
【請求項1】 コンピュータグラフィックスのレンダリング技法として、ミラー反射特性をもつ第一の物体表面に周辺の物体を映し出す環境マッピング処理に関し、ミラー反射物体にはそれを取り囲む環境投影体を設定し、この環境投影体に投影された映像を、テキスチャーパターンとしてミラー反射面にマッピングするとともに、第一のミラー反射物体を、さらに第二のミラー反射特性をもつ平面物体に映し出す第2次反射を伴うポリゴンレンダリング技法において、第一のパスでは、第一の画像メモリとzバッファを用いて、全ての物体のポリゴンに対してシェーディングおよび隠面消去を伴うレンダリングを行うと共に、ミラー反射特性を持つ物体のポリゴンの頂点には、3次元座標値、反射率、および極座標系で表記される法線および視線入射角を定義し、これらを多角形内部で内挿補間して得られた法線および視線入射角を用いて内挿点の視線反射角を求め、環境投影体のパターンを読み出してミラー反射物体にマッピングすると共に、第二のミラー反射平面のレンダリングでは、第一の画像メモリと同等の大きさをもつ環境バッファを設け、内挿された前記ミラー反射平面の反射率と、ポリゴンがミラー反射平面であることを示すフラグビットを記憶する手段をもち、また第二のレンダリングパスにおいて、第二の画像メモリとzバッファを設け、前記ミラー反射平面を回転面として、すべての物体をミラー回転するとともに、ポリゴンが前記環境投影体を有する場合は環境マッピングを行う手段と、これら物体をレンダリングする際、ポリゴンのz値と第一のzバッファのz値とを比較し、また前記環境バッファに記憶されたフラグビットの有無を調べ、座標値がミラー反射平面のz値より視点に近い場合、あるいはフラグビットが無い場合は、ポリゴンを記憶しない手段と、フラグビットがあり、かつミラー平面より遠方にある場合には、第二のzバッファのz値と比較して、よりミラー反射平面に近い場合、ポリゴンの画素とz値を、第二の画像メモリとzバッファにそれぞれ記憶する手段と、第二パスが終了した後、第一の画像メモリに記憶された画素と、第二の画像メモリに記憶されたミラー反転画素とを、前記環境バッファに記憶された反射率を用いて合成する手段をもつ2次反射環境マッピング回路。
【請求項2】 請求項1の2次反射環境マッピングにおいて、第二の画像メモリおよび反射率記憶バッファを省略する手段として、ミラー反射平面のみを最初にレンダリングし、このうちz値を前記第一のzバッファに、フラグビットを前記環境バッファにそれぞれ記憶する手段と、次にミラー反射平面で回転した物体のポリゴンを、環境マッピング含めてレンダリングして、これを第一の画像メモリに記憶する際、第一のzバッファのz値と比較し、また前記環境バッファに記憶されたフラグビットの有無を調べ、レンダリングされるポリゴンの座標値が、第一のzバッファに記憶されたミラー反射平面のz値より視点に近い場合、あるいはフラグビットがない場合は、ポリゴンを記憶しない手段と、フラグビットがあり、かつミラー反射平面より遠方にある場合には、さらに第二のzバッファのz値と比較して、よりミラー反射平面に近い場合、ポリゴンの画素とz値を、第一の画像メモリと第二のzバッファにそれぞれ記憶する手段をもち、次に第二パスにおいて、通常の視点から見た物体のレンダリングを、環境マッピングと隠面消去を含めて行い、ミラー反射平面のレンダリングを行う際、ミラー反射平面の反射率を用いて、すでに第一画像メモリに記憶された反転画素と合成することにより、第二の画像メモリと、環境バッファの反射率記憶を削除した2次反射環境マッピング回路。
【請求項3】 請求項1の2次反射環境マッピングにおいて、ミラー反射平面が反射率と共に透過率を持っていた場合、ポリゴンの頂点には透過率を定義すると共に、これを内挿補間して、第一のパスにおいて、ミラー反射平面の背後にある物体は、ミラー反射平面自身を除き、隠面消去を伴って第一の画像メモリに、また透過率は環境バッファにそれぞれ記憶する手段と、第二パスにおいて、回転物体のミラー反射平面の背後のポリゴンは第二画像メモリに、また反射率は前記環境バッファにそれぞれ記憶した後、環境バッファに記憶された透過率および反射率を用いて、第一および第二の画像メモリの画素を合成する手段をもつ2次反射環境マッピング回路。
【請求項4】 請求項1および2の回路において、複数のミラー反射平面が存在する場合、それぞれのミラー反射平面には識別子を設けて、フラグビットと共に環境バッファにこれら識別子を記憶する手段と、それぞれのパスをミラー反射面毎に実行して、それぞれのミラー反射平面を回転面として物体を回転してレンダリングする際、対応する識別子のフラグビットの有無を調べ、回転されたポリゴンは、回転平面となるミラー反射平面上にあるものだけをそれぞれ記憶する請求項1および2のそれぞれの手順に則り環境マッピングを行う手段をもつ2次反射環境マッピング回路。
【発明の詳細な説明】【01】 [発明の属する技術分野]この発明はコンピュータグラフィックスのレンダリングに関し、ミラー反射面をもつ物体に周辺の景色を映す環境マッピングにおいて、さらにこの物体を、ミラー反射面をもつ物体に映し出す2次反射をポリゴンレンダリング法において行うもので、この発明の回路のLSI化により、シミュレーション、ゲームなど仮想現実システムの実時間可視化に適用される。
【02】 [従来の技術]環境マッピングは3次元コンピュータグラフィックスの中で映像のリアリズムを得る重要な技術である。ポリゴンレンダリング法においては、レンダリングするポリゴンの頂点に定義される情報のみを用いて、内挿点の輝度を決定するため、周辺の風景を物体にマッピングするには、予めミラー反射面をもつ物体を囲む6面体や球の環境投影体を設定し、それぞれの面に投影される周辺の映像をレンダリングし、それぞれをテキスチャーパターンとする一方、ポリゴン内で内挿された視点ベクトルから反射角を求め、これからパターン座標を決定して、内挿点に前記テキスチャーパターンをマッピングする環境マッピング法が一般的に知られている。またミラー反射を持つ平面(大理石の床など)では、ミラー平面を回転面として全ての物体を回転し、これをミラー平面のもつ反射率と合成する方法が知られている。しかしこれらを併せ持つ、すなわち環境マッピングされた物体を、さらに別のミラー反射物体にマッピングする2次反射を伴う環境マッピングは実現されていない。それは前記2つのミラー反射効果を組み合わせるには、従来の環境マッピングや、ミラー反射面に対する個別処理ほど単純ではないためである。例えば従来の地面や床に対するレンダリングに見られるように、その奥に物体が存在しないことを前提に描画対象となる物体を一様に回転する。これは回転後の全ての物体は、ミラー平面の背面に位置することになり、前面には物体が存在しないため、通常のzバッファが適用できる。しかし、ミラー反射平面が、例えば一般のテーブルである場合のように、3次元空間の任意の場所に位置する場合、それを取り囲む回転した物体はその平面の前後にも位置付けされる。またミラー平面に映しだされる映像はミラー平面に投影される物体だけであり、よってこれをレンダリングするには、ミラー反射平面の境界でクリップしなければならない。もしミラー平面が任意形状である場合、一般の4角錐領域を想定してのクリップはできない。さらに、同一のミラー反射平面においても、反射率が変化する場合がある。この結果、これをリアルタイムに行うには特殊な処理および構造が必要となる。本発明は、通常の画像メモリとzバッファに加えて新たにzバッファおよび環境バッファ(あるいは画像メモリ)を実装して2次反射を実現するものである。
【03】[問題を解決するための手段]ポリゴンレンダリング法においては、環境投影体を持つミラー反射物体(以下リフレクタと呼ぶ)のポリゴンの頂点にはそれぞれ、その座標値、反射率、法線および視線ベクトルが定義される。これらの値はまず頂点間で線形に補間した後、さらに水平に多角形内部を補間してポリゴン全体を内挿する。視点からの視線ベクトルをE、リフレクタの、任意の一点の法線をNとした場合、反射ベクトルRは、式(1)となる。

本発明では多角形頂点に定義される法線および視線ベクトルは極座標系で定義し、それぞれ水平垂直角成分であるNh,NvおよびEh,Evで与える。ここで直交座標系Nx,Ny,NzおよびEx,Ey,Ezと極座標との関係は式(2)となる。

内挿補間で得られた極座標値から(2)式で直交座標値に変換し(1)式により、反射ベクトルを求めた後に(2)式から再び極座標表記に変換し、これをアドレスに用いることにより、反射ベクトルとミラー反射物体(第一のリフレクタ)を囲む環境投影体との交差する点を得ることができる。第一パスにおいて全てのポリゴンは、隠面消去を伴って描画されるが、ミラー反射平面物体(第二のリフレクタ)については画像メモリと同一の画素数に対応する環境バッファを設け、第二のリフレクタが描画される時点で、そのポリゴン内部に1ビットのフラグを立てる。但し他の物体によって隠面消去される場合は、フラグはクリアされるものとする。またリフレクタのポリゴンには反射率がそれぞれの頂点に定義されており、これも座標値、法線および視線角同様に内挿補間される。この反射率は、第一のリフレクタではレンダリング時点で環境投影体のパターンの読み出しカラーとリフレクタのカラーとの合成に用いるが、第二のリフレクタでは前記環境バッファに記憶する。第一パスにおける環境投影体を持つ第一リフレクタについては、内挿補間で得られた法線および視線を用いて(1)式により反射ベクトルを求め、環境投影体と交差する環境投影体のパターンを読み出し、これとリフレクタがもつ反射率を用いてマッピングする。ここで視点が変化した場合、第一リフレクタに対する視野変換が生じる。視線や法線が視野変化を受けるとするとこれに伴って環境投影体も同様の変化を受けなければ成らない。実質的にはリフレクタと環境投影体はワールド座標系において定義されているものとして、視野変換が法線や視線に加わった場合には、(1)式で得られた反射ベクトルは、パターを読み出す前に視野変換マトリックスの逆変換を行い、これによって得られたベクトルを極座標変換した後、これを用いて環境投影体のパターン読み出しアドレスとする必要がある。変換後の反射ベクトルは式(3)の関係となる。Mは視野変換マトリックスである。

第一パスにおいて全てのポリゴンが画像メモリに記憶された後、第二パスでは全てのポリゴンを第二のリフレクタの平面を回転中心としてミラー回転を行う。この回転処理の結果、第二のリフレクタの背面にあった物体は、リフレクタの前面に位置し、前面にあった物体は背面に移動する。この関係において逐次、ポリゴンを第一パス同様に、環境投影体のある物体は環境マッピングを伴ってレンダリングを行う。このパスによってレンダリングされる画素とz値は、第二の画像メモリとzバッファを設けて、それぞれに記憶する。この際、以下の条件に従う。レンダリングされるポリゴンの座標値を用いて、第一パスにて記憶された環境バッファの前記フラグを読み出し、フラグが立ってなければ、そのポリゴンは第二のリフレクタ背面下には位置しないため、第二の画像メモリおよびzバッファには書き込みを行わない。またフラグが立っていた場合であっても、ポリゴンのz値が第一のzバッファのz値と比較して視点に近い(第二のリフレクタの前面)場合には書き込みを行わない。一方、フラグが立ち、ポリゴンのz値が第二のリフレクタのz値よりも遠方(第二のリフレクタの背面)にある場合は、ポリゴンのz値と第二のzバッファとの比較を行う。この結果、より視点に近い(第二のリフレクタの背面で最も近い)場合には、このポリゴンを第二の画像メモリおよびzバッファに記憶する。すなわち第二の画像メモリとzバッファには、リフレクタの投影領域内部で、且つ、リフレクタに最も近い背面のポリゴンだけが隠面消去処理により記憶されることになる。第二のパスにおいて、回転を受けた物体のポリゴンの法線、視線ベクトルは第一のパスとは異なることになるが、法線、視線および光源の入射角にはミラー回転を加えなければ反転によってレンダリングされる幾何学的位置が異なるのみとなる。第二パスが終了すると、ビデオ走査段階において、第一および第二の画像メモリの画素を、環境バッファの反射率を用いて合成する。一方、前記の第一パスと、第二パスのプロセスを逆にして同一の効果を得ることも可能である。これは、まずミラー反射平面(第二リフレクタ)のみを始めにレンダリングする。この際、第一のzバッファにそのz値と、前記の環境バッファにフラグビットを立てる。この後、第二リフレクタをミラー回転面として回転した物体を、環境投影体のある物体は環境マッピングを伴って、レンダリングする。前記同様に、この際、レンダリングされるポリゴンの座標値を用いて環境バッファのフラグを読み出し、フラグが立ってなければ、そのポリゴンは第二のリフレクタ背面にはないため、第一の画像メモリおよび第二のzバッファに画素およびz値の書き込みをそれぞれ行わない。またフラグが立っていた場合であっても、ポリゴンのz値が第一のzバッファのz値と比較して、視点に近い場合には書き込みを行わない。一方、フラグが立ち、ポリゴンのz値が第一のzバッファのz値(すなわちリフレクタのz値)よりも視点に対して遠方にある場合は、ポリゴンのz値と第二のzバッファとの比較を行う。この結果、最も視点に近い(第二のリフレクタに近い)場合には、このポリゴンを第一の画像メモリに画素を、また第二のzバッファにz値を記憶する。すなわち第一の画像メモリと第二のzバッファには、第二のリフレクタの投影領域に含まれ、且つ、リフレクタに最も近い背面のポリゴンだけが隠面消去により記憶されることになる。次に第二パスにおいて、ミラー反射平面で回転を受けない通常の位置のポリゴンをレンダリングし、第一の画像メモリと、第一のzバッファに、隠面消去と環境マッピングを伴ってレンダリングする。第二のリフレクタをレンダリングする時点で、リフレクタのもつ反射率を用いて、すでに第一パスで記憶された反転物体との合成を行う。この方式においても、第一および第二パスの際の、ポリゴンの法線、視線、および光源入射角は、ミラー平面で回転を受けない状態での値を用いる。以上の二つ目の手順では、ミラー反射平面は第二パスの最後にレンダリングするものとする。リフレクタのカラーをP、反転物体のカラーをB、また反射率をγとすると、ミラー面と反射物体との合成輝度Ipは式(4)となる。

式(4)はビデオ捜査段階の合成も同様となる。一方、第二のリフレクタが反射率と透過率を併せ持つ場合、反射率と共に透過率も環境バッファに記憶する。第一、第二画像メモリを使用する方式において、第一パスでは第二リフレクタの背面下の物体についても、第二リフレクタ自身を除き、隠面消去を伴って第一の画像メモリに記憶する。第二パス終了後の合成において、合成は透過率をα、背面下の物体のカラーを0とすると、反射率との関係において、式(4)を用いて式(5)で与えられる。

以上から、2回のレンダリングパスと、第二のzバッファおよび環境バッファを設けることでミラー反射平面には環境マッピングを伴うミラー反射物体を投影することができる。
【04】[実施例]図1に本発明の2次反射環境マッピング回路を示す。ポリゴンにはそれぞれの頂点に、x、y、z座標値、テキスチャー座標値、法線、視線入射角等が定義される。これら値はまず頂点間で線形に補間した後、水平軸と交わる2点間でさらに補間してポリゴン内部すべての点における座標値、法線および視線入射角を得る。図1において、前記水平軸に沿った補間がスパンプロセッサ1で行われる。スパンプロセッサ1から出力される法線および視線角は水平、垂直角の極座標で表現される。通常のポリゴン、すなわちミラー反射特性を持たないポリゴンでは、スパンプロセッサ1から得られた法線や視点角は、Phongシェーディング、バンプマップシェーディングおよびテキスチャーマッピング機能を含むラフ・サーフェイス・シェイダー8に送られる。一方、ミラー反射特性を持つポリゴンの場合には、法線および視点角は前記シェーダーだけでなく、極座標から直交座標に変換する回路2に与えられ、前項の式(2)に基づき直交座標に変換する。次に反射角計算回路3にて式(1)に基づき反射角Rを得る。反射角Rは視点座標変換マトリックスの逆変換マトリックス乗算回路4において、式(3)の処理が行われワールド座標系での反射角を得る。さらに直交座標系から変換回路5にて再び極座標系に変換する。変換回路5では、極座標への変換だけでなく環境投影体との交差面を判定し、極座標値を環境投影体6のアドレスとする。環境投影体6では、赤、緑、青の3原色で、環境画像が予め記憶されている。読み出されたパターンはフィルタ回路7でアンチエイリアス処理が行われた後、ラフ・サーフェイス・シェイダー8で得られたカラー値と輝度合成回路9で合成される。こうして画素毎に決定されたカラーデータはピクセルキャッシュ10に一時的に記憶される。環境投影体を持つミラー反射物体のポリゴンをレンダリングする場合は常にこの処理を行う。第一パスにおいて、ミラー反射特性を持たない一般のポリゴンと共に、環境投影体を持つリフレクタを、直交座標変換からフィルタリングまで処理されたポリゴンは、画像メモリ14と第一のzバッファ12に記憶される。第二のリフレクタ(ミラー反射平面)では、さらにフラグおよび反射率が環境バッファ11にセットされる。第二パスにおいて、第二のリフレクタ平面で回転された物体のポリゴンがレンダリングされるが、画素とz値は、まずピクセルキャッシュ10に記憶され、第二の画像メモリ14に記憶する際(第二の画像メモリは、第一の画像メモリ14を拡張した領域)、環境バッファ11のフラグと、第一のzバッファ12のz値を読み出し、z値は比較器16で比較し、この結果、フラグのない位置の画素である場合と、フラグが立っているが、z値がzバッファ12のz値よりも視点に近い場合は、画像メモリ書き込み制御回路15において、書き込みを禁止する。一方、フラグが立っており、zバッファ12の値よりも遠い場合には、さらに第二のzバッファ13と、比較回路17で比較し、すでに記憶されたzバッファ13の値よりも視点に近い場合には、キャッシュ10のz値を第二のzバッファ13に記憶すると同時に、第二の画像メモリに画素を書き込む隠面消去を行う。全てのポリゴンが第二パスでレンダリングされた後、環境バッファ11の反射率を用いて、第一、第二画像メモリの画素を式(4)に基づき合成する。一方、上記とは異なる手順でも2次反射環境マッピングが可能である。まず第二のリフレクタ(ミラー反射平面)だけをレンダリングし、このz値とフラグビットをそれぞれ第一のzバッファ12と、環境バッファに記憶する。その後、第一パスにおいて、反射平面で回転した物体のポリゴンをレンダリングし、このときのx、y値を用いて環境バッファからフラグを読み出し、フラグが立っている場合、第一のzバッファ12のz値と比較器16で比較する。もしポリゴンのz値が視点に対して手前にあれば、これを画像メモリ14には書かない。また奥にあれば、次に第二のzバッファ13のz値と比較器17において比較し、このz値より手前にある場合には、キャッシュの画素とz値をそれぞれ画像メモリ14と、第二のzバッファ13に記憶する。遠方にあれば書き込まない。第二のパスにおいては、ミラー反射を持たない通常のポリゴンと環境投影体をもつポリゴンを含めてレンダリングするが、第二リフレクタをレンダリングする段階で、リフレクタのポリゴンの反射率を用いて、すでに画像メモリ14に記憶された画素と合成回路18において合成する。一方、複数のミラー反射平面が存在する場合、これらリフレクタ毎に、パスを設け、それぞれ独立して、その平面を回転面とする回転を物体に加えレンダリングする。前記では、フラグビットは1ビットであるが、複数のミラー平面がある場合は、それぞれのミラー平面のポリゴンに識別子を付け、この識別子を、フラグビットと共に環境バッファに記憶する。回転物体のレンダリングの際、この識別子を読み出し、回転面に対応する識別子が検出された場合に、前記同様のz値比較等の処理を行う。パスの回数分の遅れを伴うが、ミラー平面それぞれの環境マッピングが可能となる。第二のリフレクタのポリゴンがテキスチャーパターンを持つ場合では、前記の最初の処理方法ではそのポリゴンは第二の画像メモリに記憶される。完全なミラー反射(自身のカラーを持たない)の場合では、テキスチャーが定義されないため、z値はあっても画素は書かれない。一方、2番目の処理方法では、テキスチャーの有無に関わらず、最初の第二リフレクタだけのレンダリングにおいては、フラグとz値のみが環境バッファと第一のzバッファにそれぞれ書かれ、画像メモリに画素は書き込まない。この場合は第二パスにおいて、テキスチャーマッピングおよびシェーディングされた(テキスチャーが定義されている場合)第二のリフレクタのポリゴンを用いて、すでに記憶された第一パスの回転ポリゴンと合成することとなる。実施例では同じ回路(第一および第二画像メモリで構成されるが、第二画像メモリはメモリ容量の拡大の形で構成されるため、物理的には同じものと考えることができる)において、2つの手順を明らかにした。いずれを実装するかはアプリケーションインターフェイスに依存する。
【05】[発明の効果]本発明によりポリゴンレンダリング法では困難とされた、2次反射を可能とすることでレイレーシング法に匹敵する品質の映像がリアルタイムに得られる。
【出願人】 【識別番号】595061875
【氏名又は名称】池戸 恒雄
【出願日】 平成13年7月18日(2001.7.18)
【代理人】
【公開番号】 特開2003−30680(P2003−30680A)
【公開日】 平成15年1月31日(2003.1.31)
【出願番号】 特願2001−252125(P2001−252125)