(57)【要約】      （修正有）【課題】光源を中心に複数の遮光物体が乱立した空間における影を描画する。【解決手段】光源とポリゴン頂点とがなす水平角および垂直角、光源と頂点間の距離をそれぞれ頂点データとして定義し、これを補間回路４０で内挿補間し、光源を中心とした空間を任意に分割してそれぞれにシャドウバッファ４６を設け、シャドウバッファのアドレスとして前記水平・垂直角をそれぞれ縦横軸と定め、前記距離を水平・垂直角がアドレッシングするシャドウバッファに記憶する手段と、第二パスでは、視点座標系での頂点座標値と共に、第一パスで用いた前記水平角、垂直角および距離も再びポリゴン頂点データとして与え、それぞれを補間回路４０で補間し、第一パスで記憶した光源とポリゴン頂点間の距離と、第二パスで得られた描画点での距離を比較回路４７で比較し影の有無を決定し、これをスケール回路４８においてシェーダー４３で求めた輝度をスケーリングして影を生成する。【選択図】図４
2010157170.tif 000002
【特許請求の範囲】
【請求項１】
遮光物体が光源を取り囲む環境でのコンピュータグラフィックスによる影の表現に関し、光源座標系で前記遮光物体のシャドウポリゴンをシャドウバッファに記憶する第一パスと、視点座標系で前記遮光物体を再び描画すると共に、描画点を前記光源座標系に変換し、前記シャドウバッファから、第一パスで記憶した前記シャドウポリゴンを読み出して光源から描画点までの距離をそれぞれ比較し描画点の影の有無を判定する第二パスからなる手段において、光源を中心とする３次元空間を複数の空間に分割し、この分割空間に対応する複数のシャドウバッファを設ける手段と、第一パスにおいて、ポリゴン頂点データには、光源とポリゴン頂点を結ぶ方向をそれぞれ水平角、垂直角で定義した値と、光源と前記ポリゴン頂点間の距離のそれぞれとする手段と、前記水平角、垂直角および距離をポリゴン毎に内挿補間すると共に、内挿補間された前記水平および垂直角から前記複数のシャドウバッファの中から該当するシャドウバッファを選択する手段と、前記選択されたシャドウバッファは、前記水平および垂直角を２軸とするアドレスをもち、前記内挿補間された距離は、このアドレスにより前記シャドウバッファに記憶する手段と、第二パスにおいて視点座標系で遮光物体を描画する際、遮光物体のポリゴン頂点データは、視点座標のｘ、ｙ、ｚ頂点座標値と、視点座標から光源座標系への変換を避けるため、前記第一パスで用いた光源座標系での水平角、垂直角および距離を加えたそれぞれの値としてポリゴン毎に内挿補間する手段と、第二パスで求めた前記水平角および垂直角を用いて、前記第一パスでシャドウバッファに記憶された距離を読み出し、この読み出し距離と第二パスで内挿補間して得た距離とを比較して、内挿点の影の有無を決定する手段のそれぞれもって、光源を取り囲む物体の影を全方向に投下した描画を可能にする全方向影投下レンダラー。
【請求項２】
請求項１の回路において、光源を中心とする空間を分割する手段において、分割数はスクリーン等の表示空間の大きさに対応した精度を保持するため、水平および垂直角のそれぞれの範囲を均等に分割してその数を決定する手段をもつ全方向影投下レンダラー。
【請求項３】
請求項１および２の回路において、第一パスでは前記水平角、垂直角および距離の内挿補間は水平角および垂直角のうちの長軸側を基にそれぞれ直線補間する手段と、第二パスでは視点座標系の頂点座標値ｘおよびｙ軸の長軸側を基にｘ、ｙ、ｚ、水平角、垂直角および距離を直線補間するそれぞれの手段をもつ全方向影投下レンダラー。
【請求項４】
請求項１から３までに記載の全方向影投下レンダラー用いたコンピュータグラフィック画像装置。
【発明の詳細な説明】
【技術分野】
【００１】  この発明は  コンピュータグラフィックスにおいて多数の物体間に光源が位置する場合の、それぞれの物体の影を高速に表現するための影の描画手段と、その手段の論理回路実装の技術分野に関する。
【背景技術】
【００２】  コンピュータグラフィックスによる影描画はシャドウマップ、シャドウボリューム、レイトレーシングなど多数のアルゴリズムがこれまで開発されている。この中で実時間性を重視するシステムでは、２つの描画パスをもつシャドウマップ方式が広く普及している。これは第一パスで、光源から見た物体の描画を行い、シャドウバッファと呼ばれるバッファに光源からの距離を隠面消去処理を併用して記憶し（この記憶された描画物体をシャドウポリゴンという）、第二パスにおいては視点系座標で物体を描画すると共に、描画点を第一パスの光源系座標値に変換し、変換点の光源からの距離と前記シャドウバッファに記憶された距離とを比較することで、描画点が物体の後ろに位置する影であるか否かを決定するものである。
従来からのこの方式は、第一パスのシャドウバッファには光源を投影中心とする四角錐空間に含まれる物体のみをシャドウポリゴンとして投影することから、遮光物体とそのシャドウポリゴンは光源に対して光源から見た１方向しか記憶できない。すなわち光源の周りに物体が乱立するレイアウトでは、それぞれの物体が光源と相対してそれぞれ影を落とす描画は困難で、今日まで実時間システムの商用機には実装されていない。
光源を中心に環境マッピングの環境キューブのように空間を立方体で囲み、それぞれの６面に対応するシャドウバッファを６組用意し、光源から見て６面それぞれの方向に位置する物体を、それぞれのシャドウバッファ面に描画し、第二パスでは、描画点がそれぞれ６面のどの面に対応するかをそれぞれの面ごとにテストして、影を決定する方法も考えられる。しかしこの方法は、光源がスポット光源であり物体の影が透視効果としての広がりをもつ映像の場合、これを正しく表現するには、第一パスに記憶するシャドウポリゴンは斜視投影相当の射影処理が必要となり高速化が一層難しくなる。
【発明の開示】
【発明が解決しようとする課題】
【００３】  本発明は、光源を取り囲む物体の影を全方向に投下する描画を実時間で行うためのアルゴリズムとそのハードウエア実装を課題としている。
【課題を解決するための手段】
【００４】  光源を中心に全方向に影を生成するには、すべての遮光物体のシャドウポリゴンを記憶するバッファが必要である。シャドウポリゴンを、光源を中心に歪み無く投影するには直行座標系の空間内に、光源点を中心とする球体状のバッファを設けて、これにシャドウポリゴンを投影しなくてはならない。しかし球体形状からなる物理的なバッファを、一次元あるいは２次元配列メモリで効率的に構成することは困難である。本発明では、複数の２次元構造バッファ用意し、それぞれのバッファの座標軸を直交（デカルト）座標軸ではなく、光源を原点とする水平および垂直角の極座標軸で定義し、シャドウバッファとシャドウポリゴンとの関係が球体バッファと同等の意味をもつ手段を提案するものである。
この全方向の影投下を実現するにあたり、まず第一パスにおいて、遮光物体を定義するそれぞれのポリゴンの頂点データには光源から頂点までの距離（以下シャドウデプス値ｄとする）と、光源からそれぞれのポリゴン頂点に向かう方向を水平および垂直角で表現した２つの値でそれぞれ定義する。ここでは後者を、水平角ｈと垂直角ｖとする。すなわち第一パスにおいて、物体のポリゴンは、従来のｘ、ｙ、ｚの３次元座標値ではなく、水平・垂直角と光源と遮光物体までの距離（ｈ、ｖ、ｄ）でそれぞれ定義する。【００５】  一方、本発明では光源から見た全方向の空間を分割し、分割空間ごとに一つのシャドウバッファを割り当てる。この割り当て手段として、全空間を前記ｈおよびｖの角度範囲に対応して行う。例えば０≦ｖ≦９０における０≦ｈ≦９０，９０≦ｈ≦１８０，１８０≦ｈ≦２７０，２７０≦ｈ≦３６０と、９０≦ｖ≦１８０における０≦ｈ≦９０，９０≦ｈ≦１８０，１８０≦ｈ≦２７０，２７０≦ｈ≦３６０に対応した分割を行うものとすると空間の大きさはそれぞれ水平・垂直９０度の範囲をもつ空間となり、全空間は８分割される。この分割空間にそれぞれ一つの、水平および垂直角を座標軸とする２次元配列のシャドウバッファを設ける。よって空間内の位置（シャドウバッファのアドレス）を示す値は９０度の範囲をもつ角度となる。実装にあたっては、角度を直接座標値とするのは不適なため、０から９０度の範囲を、一例として０から１０２３にマッピングする。一方、９０度の範囲ではなく、１８０度の範囲を分割空間とし、これを１Ｋｘ１Ｋにマッピングすれば全空間は２枚の１Ｋｘ１Ｋのシャドウバッファで構成可能となる。これは第二パスにおける影判定の精度の問題に関係し、表示空間（スクリーン）のサイズで任意に決定すれば良い。【００６】  本発明では第一パスでポリゴンのそれぞれの頂点データを（ｈ、ｖ、ｄ）とし、頂点間でこれらの値を補間した後、スパン方向に補間してポリゴン内部全体の内挿補間を行う。ポリゴン内部の各点の（ｈ、ｖ、ｄ）から（ｈ、ｖ）が示す座標点に、隠面消去処理（光源に最も近いｄを記憶する）を行って、距離ｄを記憶する。（ｈ、ｖ）値から複数あるシャドウバッファのどのバッファに書き込むかを判断することはｈとｖの角度を比較すれば容易である。
ポリゴン内部の補間（内挿補間）は、ｈおよびｖがシャドウバッファの横および縦軸となっており、本発明では長軸（主軸）側をベースに直線式から補間値を求める。すなわち、ｈが長軸となる場合は下記の式（１）となる。
2010157170.tif 000003
ここでｖｉ，ｈｉ，ｄｉは内挿点ｉでのそれぞれ垂直角、水平角およびデプス値となる。ｈｉはｈ０からｈ１まで変化する。また添数０，１は２点間の始点と終点を示す。ｖが長軸となる場合は（１）式でｈとｖが入れ替わる。（１）式において実装上ではｈおよびｖは角数ではなく、角度をバッファのサイズにマッピングした値として扱う。【００７】  以上からシャドウバッファには従来のような光源系のｘｙｚ座標値で定義するのではなく、ｘ、ｙが水平・垂直角に代わり、これにｚが内挿点と光源との距離ｄに代わって、このｄを記憶する。この結果、バッファは２次元バッファでありながら、シャドウポリゴンは球体面への投影と同じ効果を得る。【００８】  第二パスでは、物体のポリゴン頂点には可視化描画のために視点座標系の頂点座標値（ｘ、ｙ、ｚ）と、影判定のために第一パスで定義した前記（ｈ、ｖ、ｄ）をそれぞれ設定する。第二パスのポリゴン内挿補間では、これらすべての頂点データをｘあるいはｙの長軸をもとに補間する。第二パスで第一パスで用いた（ｈ、ｖ、ｄ）を再度ポリゴン頂点データとして付加するのは、補間点の視点座標から光源座標系への変換を避けるためである。この３次元回転変換は内挿補間点毎に発生するため計算負荷が大きい。【００９】  第二パスでは頂点座標値（ｘ、ｙ、ｚ）値をもとに、画像メモリの（ｘ、ｙ）点にｚ値を用いた隠面消去処理を並行して色などの画素情報を書き込むが、同時にその点が影となるか否かの判定を行う。これは従来の第二パス・シャドウマッピング方式において、内挿点を第一パスの光源座標系に変換し、その値でシャドウポリゴンに記憶したデプス値を読み出し変換値と比較し影の有無を決定することに対して本発明では、第二パスのポリゴン頂点には、すでに光源座標系（ｈ、ｖ、ｄ）をデータとして定義し、（ｘ、ｙ、ｚ）とともに内挿補間しているため、内挿点の光源座標系への変換は不要となる。こうして得られた内挿（描画）点での（ｈ、ｖ、ｄ）の（ｈ、ｖ）から前記分割されたシャドウバッファの選択と、そのバッファ内の座標点を決定して第一パスで記憶したデプス値を読み出し、この値と内挿点のｄを比較し、ｄが光源により近ければ描画点は光源の照射する点であり、遠方に位置すれば影となるとする判定を行う。影であれば、描画点の輝度を低下する処理を行う。この際、第一パスでは（ｈ、ｖ、ｄ）の補間に当たっては（ｈ、ｖ）の長軸を基に直線式が作られ、（ｈ、ｖ、ｄ）を求めるが、第二パスでは（ｘ、ｙ）の長軸を基に（ｈ、ｖ、ｄ）も直線補間する。【０１０】  以上から、前記それぞれの処理に関する計算負荷としては下記に分類される。（１）第一パスでの（ｈ、ｖ、ｄ）の頂点データの定義、（２）ポリゴン内挿補間値からの分割シャドウバッファの選択とｄの書き込み、（３）第二パスの（ｘ、ｙ、ｚ）と（ｈ、ｖ、ｄ）の内挿補間、（４）ポリゴン内挿補間値（ｈ、ｖ）から分割シャドウバッファの選択と読み出し、（５）距離ｄの比較、のそれぞれである。ここで本発明の手順が従来の方式と計算負荷の上で異なるのは複数のシャドウポリゴンから一つのバッファを選択する手段であり、それ以外の処理は補間する定義値が異なるだけで処理量としては変わらない。よって（ｈ、ｖ）の���から複数のシャドウバッファを選択する処理が高速であれば、本発明の方式は実時間に対応できることになる。【０１１】  前記（ｈ、ｖ）値から、対応するシャドウバッファを決定する手段として［００５］項の分割を行った場合、一例としてｖに関し０から９０度を符号０とし、９０から１８０を符号１とする。またｈに関してはそれぞれの範囲を符号２ビットで表せば０≦ｈ≦９０を００，９０≦ｈ≦１８０を０１，１８０≦ｈ≦２７０を１０，２７０≦ｈ≦３６０を１１として、ｈよびｖを合わせて３ビットとなり８個のシャドウバッファに対応させることができる。よってｈおよびｖの補間値が求まれば、それらの範囲を比較して符号化し、目的のシャドウバッファにアクセスすることは大きな負荷とはならない。また比較符号化をハードウエア化すれば描画速度には影響を与えない。
第一パスにおいてポリゴン頂点データとして（ｈ、ｖ、ｄ）を定義するが、これらは一般的に言われるグラフィックエンジンなど視野変換やクリッピングなどを行う中間処理段階で光源座標値とポリゴンそれぞれの頂点座標値から求める事が出来る。これはポリゴン頂点毎の光源入射ベクトルを求める処理と負荷上は変わらない。またこの処理はポリゴン内部の画素毎の変換ではなく頂点毎の処理であり計算負荷は大きくならない。さらに本発明は一度求めた（ｈ、ｖ、ｄ）を第二パスにおいても頂点データとして使用する手段から、一般に画素毎に必要となる第二パスにおける視点座標系描画点の光源系座標値の変換を避けることができ高速化を図っている。またシャドウバッファは、前記の例では８枚としているが、影判定の解像度が低くてもよい携帯画面などにおいては、［００５］項で示したように角度の変化範囲とバッファへのマッピング範囲を任意に設定することで最適化を図ることができる。【０１２】以上から本発明は、シャドウバッファを、光源からの方向２軸で定義し、これに遮光物体と光源とがなす距離を記憶する手段で、光源周辺を取り巻く物体シーンを見た場合の、それぞれの物体の影を表現する全方向投下シャドウキャストが実時間で可能となる。
【発明の効果】
【０１３】  本発明により、光源が周り全体を照らしそれぞれの物体が所定の方角に影を落とす、従来高速表示が困難であった複雑な映像を実時間で描画できることになり、コンピュータグラフィックス映像の現実感を高めることができる。
【発明を実施するための最良の形態】
【０１４】  本発明の手段は組み込みソフトウエアあるいは回路としてグラフィックスＬＳＩに実装するか、ＩＰ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｐｒｏｐｅｒｔｙ）としての形態で実施される。
【実施例】
【０１５】  以下、本発明の実施例を説明する。図１には本発明に係わる光源と周辺物体がなす影の関係を示し、周辺の物体の影を上空から描画した図である。図１において光源１０の周辺にそれぞれ形状の異なる物体１１−１３があり、光源からの光でそれぞれが影（塗りつぶし部分）を落としている。本発明は図１のように影が多方面に投下するシーンを実時間で描画するシャドウキャスティングの手段に関する。【０１６】  図２は本発明に係わる空間の分割（２Ａ）と、光源から見たポリゴン頂点の方向定義に関する図（２Ｂ）である。図２Ａは光源１０を中心に空間２０を８個に分割したもので、太線の空間２１を１分割空間としてそれぞれ８個の空間を定義する。このそれぞれの分割空間当たりにシャドウバッファをそれぞれ割り当てる。図２Ａの８分割法では、一つの分割空間内で前記（ｈ、ｖ）が取りうる角度の範囲はそれぞれ９０度となる。図２Ｂにｈとｖの関係を示す。太線の矢印は原点を光源として、物体のポリゴンの頂点を結ぶ方向であり、その角度をそれぞれ水平角をｈ、垂直角をｖで定義し、原点からポリゴン頂点までの距離をｄとする。【０１７】  図３は本発明のシャドウバッファの座標軸を示したものであり、横軸をｈ、縦軸をｖとし、（ｈｉ、ｖｉ）点の画素位置３１に、その点の光源からポリゴン内挿点までの距離ｄを第一パスにおいて記憶するものである。バッファへの距離ｄの記憶は、隠面消去処理を伴って、最も光源に近い距離ｄを画素点３１に記憶する。シャドウバッファ３０の物理的な大きさは、ｈおよびｖが９０度の範囲を、スクリーンサイズ（画像メモリ）にマッピングして、例えば１２８０ｘ１０２４とする。このサイズは影判定の精度に影響するため、スクリーンの大きさやグラフィックスシステムに要求される画質レベルに応じて決定される。【０１８】  図４は本発明の全方向影投下レンダラーを示す。太線のブロックおよび結線は第一・第二パスで使用し、細線は第二パスで使用するものである。第一パスでは、物体のポリゴン頂点列が内挿補間回路４０に入力ＩＮから与えられる。ポリゴン頂点データには、光源とそれぞれの頂点間がなす水平、垂直角および距離の（ｈ、ｖ、ｄ）が予め計算されて与えられおり、これを内挿補間回路４２において、それぞれポリゴンの頂点間およびスパン間で線形補間を行って、ポリゴン内部の全ての点の（ｈ、ｖ、ｄ）を求め、（ｈ、ｖ）はシャドウバッファ選択回路４４と、複数のシャドウバッファ４６から成るシャドウバッファ回路４５のアドレスとして与えられる。このアドレスのシャドウバッファに光源から内挿点までの距離ｄが書き込まれる。この書き込みの際には、シャドウバッファ回路４５内で隠面消去処理も同時に行われ、光源に最も近い（距離の短い）ｄ値が書き込まれる。隠面消去は既知のアルゴリズムであり図４では隠面消去回路部分は省略している。物体のレンダリングが終了すると、第二パスに移る。【０１９】  第二パスでは、ポリゴン頂点には視点座標系における（ｘ、ｙ、ｚ）座標値、テキスチャー座標値、頂点における法線、光源入射ベクトルなど複数の頂点データが定義される。本発明ではこれらに、第一パスの光源系座標で定義された（ｈ、ｖ、ｄ）を加える。（ｈ、ｖ、ｄ）は第一パ��と同じ補間回路４２において、またその他の（ｘ、ｙ、ｚ）を含む頂点データは補間回路４１において内挿補間される。ｘ、ｙ、ｚ、テキスチャＴ、法線Ｎおよび光源入射ベクトルＬ（Ｔはテキスチャ２次元座標値、Ｎは３軸法線ベクター成分、Ｌは３軸入射ベクトル成分のそれぞれ複数の変数値で定義されている）などは内挿点の輝度を計算するためのシェーダー４３に与えられ、テキスチャカラーや面法線等を用いた光源と物体属性による物体表面の輝度ｒ，ｇ，ｂを計算する。一方、（ｈ、ｖ、ｄ）は第一パス同様にシャドウバッファ４６の選択回路４４にて、内挿補間される。第一パスと異なるのは、内挿補間回路内では、第一パスがｈあるいはｖの長軸で直線補間されたものが、第二パスではｘあるいはｙ座標の長軸を主軸として補間される点である。（ｘ、ｙ、ｚ）補間点での（ｈ、ｖ）を用いて回路４４にてシャドウバッファを選択すると共に、その点における第一パスで記憶された距離ｄを読み出し、これをデプス比較回路４７に与える。また（ｘ、ｙ、ｚ）補間点における（ｈ、ｖ、ｄ）のデプス値ｄも同様に回路４７に与え、ここで互いに差分して補間点のデプス値と、バッファ内のデプス値との大小関係を調べ、もし補間点がより光源に近いのであれば、輝度スケール回路４８においてシェーダーからの輝度ｒ，ｇ，ｂをパスさせ、より遠方に位置する場合にはスケールして輝度を下げる。輝度スケール回路４８から出力された輝度値は、（ｘ、ｙ）座標値が示す画像メモリ４９の位置に書き込まれる。この際も（ｘ、ｙ、ｚ）点のｚ値を用いて隠面消去処理が並行して行われる。
以上から本発明の手段においては、光源を中心に全方向に対して影を落とす描画が可能となるが、演算処理上ではシャドウバッファの選択回路４４が新たに付加される程度であり、処理速度には影響を及ぼさない。またシャドウバッファは影の判定に関わる精度に応じて物理的サイズを決定できる。シャドウバッファが物理的に多数実装されても、描画自体は物体に対し１回の描画であって（シャドウバッファ枚数分だけ物体を繰り返し描画する必要がない）、シャドウバッファ分割による描画速度の低下はない。この結果、従来の単一方向のシャドウキャスティング処理速度と変わらず、全方向のシャドウキャスティングが実時間で可能となる。これは第一パスにおいてポリゴン頂点データを、光源とポリゴン頂点との成す方向とした手段によるものである。【０２０】
【産業上の利用可能性】
【０２１】  本発明の回路はＩＰ（Ｉｎｔｅｌｌｉｇｅｎｔ  ｐｒｏｐｅｒｔｙ）として提供したり、グラフィックスプロセッサＬＳＩに実装されることで、ＣＧ映像製作やアムーズメントシステムに利用される。
【図面の簡単な説明】
【０２２】
【図１】「本発明に係わる光源と周辺物体がなす影の関係を示す。」
【図２】「本発明に係わる光源を中心とした空間分割と座標系との関係を示す。」
【図３】「本発明に係わるシャドウバッファの座標軸を示す。」
【図４】「本発明に係わる全方向影生成レンダラーを示す。」
【符号の説明】
図１
１０  光源
１１  遮光物体
１２  遮光物体
１３  遮光物体
図２
１０  光源
２０  光源を中心とする空間
２１  分割空間
図３
３０  シャドウバッファ
３１  画素点
図４
４０  ポリゴン内挿補間回路
４１  第二パス・ポリゴン頂点データ内挿補間回路
４２  （ｈ、ｖ、ｄ）内挿補間回路
４３  シェーダー
４４  シャドウバッファ選択回路
４５  シャドウバッファ
４６  分割シャドウバッファ
４７  デプス値比較回路
４８  輝度スケーラー
４９  画像メモリ
【図１】
2010157170.tif 000004
【図２】
2010157170.tif 000005
【図３】
2010157170.tif 000006
【図４】
2010157170.tif 000007