(57)【要約】  技法、システム、配置及びコンピュータプログラム製品は、コンピュータグラフィックシステムにおいて、そのようなコンピュータグラフィックシステムにおけるオクルーディングジオメトリとして作用することのできるメッシュに関して、シャドウボリュームをより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してシャドウボリューム技法を加速できるように動作できる。【選択図】  図１
2010512582.tif 000002
【特許請求の範囲】
【請求項１】
人間が知覚できるディスプレイ要素に表示するための画像をレンダリングするためのコンピュータグラフィックシステムであって、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、３次元（３Ｄ）シーンにおける影を表示することを含むコンピュータグラフィックシステムにおいて、
画像レンダリングにおいて使用される各非縮退三角形に対して、
（１）表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータｄを計算するステップと、
（２）シャドウキャップを生成するステップであって、
（ａ）必要ならば、前記シャドウボリュームのニアキャップを生成するため前記三角形をレンダリングする段階と、
（ｂ）必要ならば、前記シャドウボリュームのファーキャップをレンダリングするため、三角形頂点を無限へと延長し、それらの配向を反転させる段階と、
（ｃ）もし、ｄが負であるならば、シャドウボリューム面を正しい順序とするため反転された頂点配向でもって（ａ）及び（ｂ）を行う段階と、
を含むステップと、
（３）処理される三角形のｄパラメータが隣接する三角形に対するｄパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータｄの正又は負の符号を再び使用するステップと、
を含む、シャドウボリューム生成方法を実行することを特徴とするコンピュータグラフィックシステム。
【請求項２】
人間が知覚できるディスプレイ要素に表示するための画像をレンダリングするためのコンピュータグラフィックシステムであって、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、３次元（３Ｄ）シーンにおける影を表示することを含むコンピュータグラフィックシステムにおいて、
画像レンダリングにおいて使用される各非縮退三角形に対してシャドウボリューム計算を実行する手段を備えるシャドウボリューム生成方法の実行する手段を備えており、前記シャドウボリューム計算を実行する手段は、
（１）表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータｄを計算する手段と、
（２）シャドウキャップを生成する手段であって、前記シャドウキャップの生成は、
（ａ）必要ならば、前記シャドウボリュームのニアキャップを生成するため前記三角形をレンダリングし、
（ｂ）必要ならば、前記シャドウボリュームのファーキャップをレンダリングするため、三角形頂点を無限へと延長してそれらの配向を反転させ、
（ｃ）もし、ｄが負であるならば、シャドウボリューム面を正しい順序とするため反転頂点配向でもって（ａ）及び（ｂ）を行うことを含む手段と、
（３）処理される三角形のｄパラメータが隣接する三角形に対するｄパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータｄの正又は負の符号を再び使用する手段と、
を備えることを特徴とするコンピュータグラフィックシステム。
【請求項３】
コンピュータ読み取り可能な媒体にエンコードされたコンピュータプログラム命令を備えるコンピュータプログラム製品であって、前記コンピュータプログラム命令は、人間が知覚できるディスプレイ要素に表示するため画像をレンダリングするためのコンピュータグラフィックシステム内で動作できるものであり、前記レンダリングすることは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、且つ前記表示することは、シミュレート光源に関して表示されるべき、３次元（３Ｄ）シーンにおける影を表示することを含み、前記コンピュータプログラム製品は、
シャドウボリューム生成方法を実行するため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令と、前記シャドウボリューム生成方法を実行するために画像レンダリングにおいて使用される各非縮退三角形に対して、シャドウボリューム計算を実行する手段を備える第１のコード手段を備えており、前記シャドウボリューム計算を実行する手段は、
（１）表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータｄを計算するため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を含むコンピュータプログラムコード手段と、
（２）シャドウキャップを生成するため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を含むコンピュータプログラムコード手段であって、前記シャドウキャップの生成は、
（ａ）必要ならば、前記シャドウボリュームのニアキャップを生成するため前記三角形をレンダリングし、
（ｂ）必要ならば、前記シャドウボリュームのファーキャップをレンダリングするため、三角形頂点を無限へと延長し、それらの配向を反転させ、
（ｃ）もし、ｄが負であるならば、シャドウボリューム面を正しい順序とするため反転された頂点配向でもって（ａ）及び（ｂ）を行う、ことを含むコンピュータプログラムコード手段と、
（３）現在の三角形のｄパラメータが隣接する三角形に対するｄパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためｄの正又は負の符号を再び使用するため、前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を含むコンピュータプログラムコード手段と、
を備える、コンピュータプログラム製品。
【請求項４】
バウンディングボリューム階層型（ＢＶＨ）トラバーサル方法を実行するステップを更に含み、前記ＢＶＨ方法は、
（１）全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
（２）現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
（３）ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、さもなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーを行い、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
（４）リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
を含むことを特徴とする請求項１に記載のコンピュータグラフィックシステム。
【請求項５】
バウンディングボリューム階層型（ＢＶＨ）トラバーサル方法を実行する手段を更に備え、前記ＢＶＨ方法は、
（１）全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
（２）現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
（３）ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
（４）リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
を含むことを特徴とする請求項２に記載のコンピュータグラフィックシステム。
【請求項６】
バウンディングボリューム階層型（ＢＶＨ）トラバーサル方法を実行するため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を含むコンピュータプログラムコード手段を更に備え、前記ＢＶＨトラバーサル方法は、
（１）全シーンを保持するルートノードで開始し、繰り返しトラバースするステップと、
（２）現在ノードのシャドウボリュームを生成するステップであって、包囲ジオメトリの実際のボリュームの代わりに、前記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むステップと、
（３）ビューイングフラスタムと交差するかについて前記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、前記子を無視するか、又は繰り返しトラバースするステップと、
（４）リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを前記ステンシルバッファへとレンダリングするステップと、
を含むことを特徴とする請求項３に記載のコンピュータプログラム製品。
【請求項７】
前記シャドウボリューム生成方法は、更に、
シミュレート光源に関してポリゴンメッシュ表現の選択処理を含み、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源の方に向かって面しており（「トワード表面」）、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており（「アウエイ表面」）、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、前記選択処理は、
（１）先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
（２）次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に向いたポリゴン表面（「トワード表面」）及び前記シミュレート光源から背けられているポリゴン表面（「アウエイ表面」）を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
（ａ）シャドウボリュームの第１のセットを生成するため、前記トワード表面を押し出す段階と、
（ｂ）シャドウボリュームの第２のセットを生成するため、前記アウエイ表面を押し出す段階と、
（ｃ）全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第１のセットと前記第２のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、２回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項１に記載のコンピュータグラフィックシステム。
【請求項８】
請求項７に記載の選択処理を適用することにより縮退三角形を取り扱うことを含むことを特徴とする請求項７に記載のコンピュータグラフィックシステム。
【請求項９】
前記シャドウボリューム生成方法を実行する手段は、更に、
シミュレート光源に関してポリゴンメッシュ表現の選択処理を実行する手段を備え、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源の方に向かって面しており（「トワード表面」）、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており（「アウエイ表面」）、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、前記選択処理は、
（１）先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
（２）次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に面したポリゴン表面（「トワード表面」）及び前記シミュレート光源から背けられているポリゴン表面（「アウエイ表面」）を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
（ａ）シャドウボリュームの第１のセットを生成するため、前記トワード表面を押し出す段階と、
（ｂ）シャドウボリュームの第２のセットを生成するため、前記アウエイ表面を押し出す段階と、
（ｃ）全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第１のセットと前記第２のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、２回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項２に記載のコンピュータグラフィックシステム。
【請求項１０】
請求項９に記載の選択処理を適用することにより縮退三角形を取り扱う手段を備えることを特徴とする請求項９に記載のコンピュータグラフィックシステム。
【請求項１１】
シミュレート光源に関してポリゴンメッシュ表現の選択処理を実行するため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を含むコンピュータプログラムコード手段を更に備え、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、前記シミュレート光源に向かって面しており（「トワード表面」）、前記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており（「アウエイ表面」）、多数のエッジが、前記トワード表面及び前記アウエイ表面により共有され又は共通とされており、前記選択処理は、
（１）先ず、隣接するポリゴンを有していないエッジを押し出すステップと、
（２）次に、ありうるシルエットエッジを押し出して前記シャドウキャップの生成を可能とするように、前記シミュレート光源に面したポリゴン表面（「トワード表面」）及び前記シミュレート光源から背けられているポリゴン表面（「アウエイ表面」）を含めて前記メッシュにおける全てのポリゴンを考慮するステップと、
を含み、前記メッシュにおける全てのポリゴンを考慮するステップは、
（ａ）第１のセットのシャドウボリュームを生成するため、前記トワード表面を押し出す段階と、
（ｂ）第２のセットのシャドウボリュームを生成するため、前記アウエイ表面を押し出す段階と、
（ｃ）全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの前記第１のセットと前記第２のセットとを組み合わせる段階とを含み、前記トワード表面及びアウエイ表面に共通のエッジは、２回押し出されており、その結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じていることを特徴とする請求項３に記載のコンピュータプログラム製品。
【請求項１２】
請求項１１に記載の選択処理を適用することにより縮退三角形を取り扱うため前記コンピュータグラフィックシステム内で動作できるコンピュータ読み取り可能な命令を更に含む、請求項１１に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【関連出願への相互参照】
【０００１】
本願は、２００６年１２月８日に出願された米国仮特許出願第６０／８６９，２２２号に基づく優先権を主張しており、この米国仮特許出願の明細書の記載は、そのままここに援用される。
【参照による援用】
【０００２】
共に２００６年６月２３日に出願され、共に「Ｒｅａｌ−Ｔｉｍｅ  Ｐｒｅｃｉｓｉｏｎ  Ｒａｙ  Ｔｒａｃｉｎｇ」と題する同一人所有の米国特許出願第１１／４７４，５１７号及びＰＣＴ特許出願第ＰＣＴ／ＵＳ２００６／００２４６３１号（それぞれ、代理人管理番号ＭＥＮＴ-１０１-ＵＳ及びＭＥＮＴ-１０１-ＰＣＴ）の明細書の記載も共にここにそのまま援用される。
【０００３】
背景技術として、次の米国特許及び公開特許出願もここに援用され、それら明細書の記載もここにそのまま援用される。
ＶＩＡ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，  Ｉｎｃ．に譲渡された米国特許第７，０３０，８７８号
Ａｕｔｏｄｅｓｋ  Ｃａｎａｄａ，  Ｉｎｃ．に譲渡された米国特許第６，５２５，７３０号
Ｆｅｒｇｕｓｏｎ氏等の米国特許出願第２００６／０１５８４５０号
Ｘｕ氏等の米国特許出願公開第２００６／００３８８２２号及び第２００５／２０６６４７号
Ｈｙｂｒｉｄ  Ｇｒａｐｈｉｃｓ，  Ｌｔｄ．に譲渡された米国特許出願公開第２００５／０１３４５８８号、及び
Ｄｉｓｃｒｅｅｔ  Ｌｏｇｉｃ，  Ｉｎｃ．（現在、Ａｕｔｏｄｅｓｋ）に譲渡された米国特許出願公開第２００２／００８９５０１号
【技術分野】
【０００４】
本発明は、一般的に、コンピューティンググラフィックに係り、より特定すると、階層型オクルージョンカリングを使用したシャドウボリュームの効率的で且つ健全な生成及び処理に適した方法、システム、配置及びコンピュータプログラム製品に係る。
【背景技術】
【０００５】
コンピュータグラフィックにおいて視覚的に納得のいく画像を達成するための重要な属性として、３次元（３Ｄ）シーンにおける影の表示がある。ハードウエアレンダリング、即ち、グラフィックハードウエアを使用した基本要素のラスタリゼーションの場合には、２つの通常の標準方法、即ち、シャドウマッピング及びステンシルシャドウボリュームを使用することができる。（例えば、背景技術としてここに援用し前述したような特許出願及び特許のうちのいくつかを参照）。これらの技法の各々は、利点を有する一方、欠点もある。これらの中で重要なことは、シャドウマップは、比較的に容易にソフトな影を生成できるが、特に大きなシーンにおいてエイリアシングの問題を被ることである。シャドウボリュームは、ピクセル正確度でもってレンダリングすることができるが、完全なポイントライト又は指向性ライトでない光源を取り扱うのがより難しく、又、特定の品質のメッシュが必要とされている。
【０００６】
オクルーディングジオメトリとして作用することのできるメッシュに関してシャドウボリュームをより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してシャドウボリューム技法を加速できるような新しい方法、システム、配置及びコンピュータプログラム製品を提供することが望まれている。
【発明の概要】
【０００７】
本発明によれば、コンピュータグラフィックシステムにおいて、そのようなコンピュータグラフィックシステムにおけるオクルーディングジオメトリとして作用することのできるメッシュに関して、シャドウボリュームをより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してその技法を加速できるような新しい方法、システム、配置及びコンピュータプログラム製品が提供される。
【０００８】
本発明によれば、人間が知覚できるディスプレイ要素に表示するため画像をレンダリングするように適応されたタイプのコンピュータグラフィックシステムにおいて動作できる方法、装置及びコンピュータプログラム製品が提供され、上記レンダリングは、エッジ、頂点及び関連三角形平面を各々が有する三角形に対応するデータを処理することを含み、上記表示することは、シミュレート光源に関して表示される（又は後に表示するため記憶される）、３次元（３Ｄ）シーンにおける影を表示することを含む。
【０００９】
一態様において、本発明の方法、装置及びコンピュータプログラム製品は、コンピュータグラフィックシステムにおいて動作するように適応され、シャドウボリューム生成方法を実行することを含み、上記シャドウボリューム生成方法は、画像レンダリングにおいて使用される各非縮退三角形に対して次の態様を含む。
（１）光源に対する三角形平面上の任意の点からの表面法線と方向との間のドット積として三角形のパラメータｄを計算すること。
（２）シャドウキャップを生成すること。上記シャドウキャップの生成は、
（ａ）必要ならば、上記シャドウボリュームのニアキャップ（ｎｅａｒ  ｃａｐ）を生成するため上記三角形をレンダリングし、
（ｂ）必要ならば、上記シャドウボリュームのファーキャップ（ｆａｒ  ｃａｐ）をレンダリングするため、三角形頂点を無限に延長してそれらの配向を反転させ、
（ｃ）もし、ｄが負であるならば、シャドウボリューム面を正しい順序とするため反転頂点配向でもって（ａ）及び（ｂ）を行う、
ことを含む。そして、
（３）処理される三角形のｄパラメータが隣接する三角形に対するｄパラメータとは異なる符号を有するような三角形の各エッジを無限に押し出し、その結果生ずる四角形をレンダリングし、それに関連した隣接する三角形を有しないエッジをも無限に押し出し、頂点順序を調整するためパラメータｄの正又は負の符号を再び使用すること。
【００１０】
本発明の別の態様は、コンピュータグラフィックシステムに使用するように適応され、特に、バウンディングボリューム階層型（ＢＶＨ）トラバーサル方法を実行するように適応された方法、装置及びコンピュータプログラム製品を含み、上記ＢＶＨ方法は、
（１）全シーンを保持するルートノードで開始し、繰り返しトラバースすること、
（２）現在ノードのシャドウボリュームを生成し、上記生成は、包囲ジオメトリの実際のボリュームの代わりに、上記現在ノードのバウンディングボリュームのシャドウボリュームを生成することを含むこと、
（３）ビューイングフラスタムと交差するかについて上記生成されたボリュームをテストし、もし、交差しないならば、このノードの子をスキップし、そうでなければ、非同期的に、ステンシルバッファに書き込むことなく、ボリュームジオメトリに対するオクルージョンクエリーをなし、そのクエリー結果に依存して、上記子を無視するか、又は繰り返しトラバースすること、及び
（４）リーフノードに達し、そのノードシャドウボリュームが可視であると見出される時、その実際のジオメトリシャドウボリュームを上記ステンシルバッファへとレンダリングすること。
を含む。
【００１１】
本発明の更に別の態様では、シャドウボリューム生成方法は、更に、シミュレート光源に関してポリゴンメッシュ表現の選択処理を含み、ここで、上記ポリゴンメッシュ表現によって表現される幾つかの表面は、上記シミュレート光源の方に向かって面しており（「トワード表面」）、上記ポリゴンメッシュ表現によって表現される幾つかの表面は、シミュレート光源から背けられており（「アウエイ表面」）、多数のエッジが、上記トワード表面及びアウエイ表面により共有され又は共通とされており、上記選択処理は、
（１）先ず、隣接するポリゴンを有していないエッジを押し出すこと。
（２）次に、ありうるシルエットエッジを押し出して上記シャドウキャップの生成を可能とするように、上記シミュレート光源に面したポリゴン表面（「トワード表面」）及び上記シミュレート光源から背けられているポリゴン表面（「アウエイ表面」）を含めて上記メッシュにおける全てのポリゴンを考慮すること。
を含み、上記メッシュにおける全てのポリゴンを考慮することは、
（ａ）第１のセットのシャドウボリュームを生成するため上記トワード表面を押し出し、
（ｂ）第２のセットのシャドウボリュームを生成するため上記アウエイ表面を押し出し、そして、
（ｃ）上記全メッシュ表現に対する正しい合成シャドウボリュームを形成するため上記第１のセットのシャドウボリュームと上記第２のセットのシャドウボリュームとを組み合わせる、
ことを含み、ここで、上記トワード表面及びアウエイ表面に共通なエッジは、２回押し出されており、その結果生ずるサイドは、光向きポリゴン及び非光向きポリゴンの両者のシャドウボリュームを閉じている。
【００１２】
本発明の別の態様は、前述した選択処理を適用することにより、縮退三角形を取り扱うことを含む。
【００１３】
本発明のこれらの及び他の態様、実施、実施形態及び実施例について、添付図面に関連して読まれるべき以下の詳細な説明において、より詳細に説明する。
【図面の簡単な説明】
【００１４】
【図１】典型的なデジタル処理装置内で実施される、本発明の一態様によるシャドウボリューム生成モジュール及びバウンディングボリューム階層型（ＢＶＨ）トラバーサルモジュールの概略ブロック図を示す。
【図２】本発明の別の態様によるシャドウボリューム生成のための技法のフローチャートを示す。
【図３】シャドウボリュームの生成を加速するようにバウンディングボリューム階層を使用するための本発明の更に別の態様による技法のフローチャートを示す。
【図４Ａ】シャドウボリュームをラスタライズするためのｚパス及びｚフェイル技法を例示する一連の図である。
【図４Ｂ】シャドウボリュームをラスタライズするためのｚパス及びｚフェイル技法を例示する一連の図である。
【図４Ｃ】シャドウボリュームをラスタライズするためのｚパス及びｚフェイル技法を例示する一連の図である。
【図５】本発明の別の態様による図２に例示した技法の拡張のフローチャートを示す。
【図６Ａ】図５に示した技法を例示する一連の図である。
【図６Ｂ】図５に示した技法を例示する一連の図である。
【図６Ｃ】図５に示した技法を例示する一連の図である。
【図７】隣接する三角形を有する三角形の頂点配列を例示する図である。
【図８Ａ】本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのＧＬＳＬ実施のソースコードリストを示す。
【図８Ｂ】本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのＧＬＳＬ実施のソースコードリストを示す。
【図８Ｃ】本発明の更に別の態様によるボリューム生成ジオメトリシェーダーのＧＬＳＬ実施のソースコードリストを示す。
【図９Ａ】本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。
【図９Ｂ】本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。
【図９Ｃ】本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。
【図９Ｄ】本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。
【図９Ｅ】本発明の別の態様による階層型オクルージョンカリング技法を例示する一連の図である。
【図１０Ａ】本発明の前述した態様により影がレンダリングされている複雑なツリーメッシュを含むシティーシーンのクローズアップ図を示す。
【図１０Ｂ】図１０Ａに示したシーンのズームアウト図を示す。
【図１１】本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。
【図１２Ａ】本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。
【図１２Ｂ】本発明の前述の態様を適当に実施することのできる典型的なデジタル処理環境を例示する図である。
【発明を実施するための形態】
【００１５】
本発明の種々な態様による技法について、添付図面に関連して、以下に詳細に説明する。当業者であれば、種々な事項を付加したり除いたりし、又、本発明の他の変形及び実施が可能であり、これらは、本発明の精神及び範囲内に入るものであることは、理解されよう。
【００１６】
以下に示されるように、ＡＳＩＣの如き種々な形の集積回路又は半導体素子は、前述したシステム及び技法を実施するため、ここに説明する本発明の教示を使用して、そのような仕方にて実施することができる。図１は、適当なデジタル処理装置３０内にて実施される本発明によるシャドウボリューム生成モジュール１０及びバウンディングボリューム階層型（ＢＶＨ）トラバーサルモジュール２０の概略ブロック図を示している。本発明の前述の態様が実施される適当なデジタル処理環境の実施例は、以下のセクション３．０にて説明され、そのセクションに関する図に例示されている。
【００１７】
本発明の以下の説明は、次のようなセクションにて編集されている。
１．０  序論
１．１  シャドウボリューム生成技法
１．２  バウンディングボリューム階層型トラバーサル
２．１  リアリティーサーバーインプリメンテーション
２．２  シャドウボリュームのオーバービュー
２．２．１  ｚパス及びｚフェイル
２．２．２  ボリューム生成
２．２．２．１  レンダリングステップ
２．２．２．２  無限でのレンダリング
２．２．３  性能及び最適化
２．３  リアリティーサーバーインプリメンテーション
２．３．１  低品質メッシュに対するロバストシャドウ
２．３．１．１  変更ボリューム生成技法
２．３．１．２  性能コスト
２．３．２  ジオメトリシェーダーでのダイナミックボリューム生成
２．３．３  階層型オクルージョンカリングでの性能改善
２．４  リアリティーサーバーインプリメンテーション：結論
３．０  本発明を実施することのできるデジタル処理環境
【００１８】
１．０  序論
オクルーディングジオメトリとして作用することのできるメッシュに関して、シャドウボリューム技法をより一般化することができように動作でき、且つ特に大きな複雑な入力シーンに対してその技法を加速できるような技法について説明する。従って、ここで説明する技法は、シャドウボリューム生成時で不正確なメッシュの処理ができるようにする技法によって与えられるロバストネス及び一時的コヒーレンスを考慮した新しい階層型非同期オクルージョンクエリー技法によって与えられる性能の点で、以前から知られている技法に優るものである。
【００１９】
「シャドウボリューム」は、所定の光源の光線が達しない物体の背後の体積である。この体積の境界は、光の方向にオクルーダーのシルエットエッジを押し出し、その結果生ずる四角形を描写することにより、レンダリングすることができる。グラフィックハードウエアオプションが描写中に正しくセットアップされる場合には、ステンシルバッファデータが得られ、この時、これらデータは、シェーディング中に非影ピクセルから影ピクセルを分離するのに容易に使用できる。
【００２０】
「ステンシルバッファ」は、フレームバッファと同じサイズを有し且つ特定ビット深さを有したメモリのブロックである。現在のグラフィックハードウエアでは、ステンシルバッファは、典型的には、８ビットの解像度で使用できる。基本要素をレンダリングする時、グラフィックハードウエアは、その深さテストがパスするかフェイルするかに依存し且つそのレンダリングされる基本要素が前向きか後向きかに依存して、ステンシルバッファの値に対する特定のオペレーション（増大、減少、維持、零等）を行うようにセットアップすることができる。ステンシルテストを行う場合、例えば、特定のステンシル値を有するピクセルのみをレンダリングするように、ステンシルバッファの値を使用することができる。
【００２１】
シャドウボリュームを、カラー及び深さバッファに対してはレンダリングしないで、ステンシルバッファに対してのみレンダリングした後、ステンシルバッファは、影領域に対する零及び非影領域に対する零とは異なるエントリーを含む。シャドウボリュームをレンダリングする前に、ステンシルバッファは、零へと初期化されねばならず、深さバッファは、そのシーンの深さ値を含まなければならない。多くの場合において、シャドウボリュームは、無限まで延長され、即ち、同次座標においてｗ＝０である。従って、グラフィックハードウエアは、無限平面におけるジオメトリがファークリッピング平面によってクリップされないように、セットアップされる。もし、このオプションが所定のグラフィックカードにて使用できないならば、深さバッファ正確度を犠牲にすれば、特殊投影マトリックスを使用して、同じ効果を達成することができる。
【００２２】
ステンシルバッファが深さパス又は深さフェイルにて変更されているかに依存して、ある場合には、シャドウボリュームの「キャップ」をレンダリングする必要がある。即ち、ニアキャップ（ｎｅａｒ  ｃａｐ）に対するオクルーダーの実際面並びにファーキャップ（ｆａｒ  ｃａｐ）に対する無限平面上に投影された面を描写しなければならない。キャップ及び／又はシルエット等の減衰光、ビューフラスタムカリングに対してボリュームの範囲を限定するが如き、描写すべきシャドウボリュームの数を減少させ、又は、必要とされるピクセルフィルレートの量を減少させるため、幾つかのよく知られた標準技法を使用することができる。
【００２３】
入力ジオメトリメッシュをマニュアルにて編集し準備することが可能であるような、ゲームの如きアプリケーションにおいては、従来のシャドウボリューム技法が使用される。このような分野では、オクルーダーを、標準ボリューム生成方法が良好に適合するような閉じた良好な挙動を示す三角形メッシュからなるものに限定することが可能である。
【００２４】
１．１  シャドウボリューム生成技法
縮退面、ランダム頂点配向、非クローズドメッシュ、及び交差面を含めて、オクルーダーとして任意の三角形データを取り扱うことのできるシャドウボリューム生成のための技法について、ここで、説明する。このような能力は、例えば、前述したような特性を有するシーンを生ずる傾向にあるＣＤＡシステムにより生成されるデータを取り扱う場合に、重要である。図２は、本発明の一態様による技法１００のフローチャートを示している。ここで説明する技法は、次のように進む。
ボックス１０１−画像レンダリングに使用される三角形に対して
ボックス１０２−表面法線と三角形平面上の任意の点から光源への方向との間のドット積として三角形のパラメータｄを計算する
ボックス１０３−シャドウキャップを生成する：
１０３ａ−必要ならば、シャドウボリュームのニアキャップを生成するため、元の三角形をレンダリングする
１０３ｂ−必要ならば、ファーキャップをレンダリングするため、頂点を無限へと延長し、それらの配向を反転する
（もし、ｄが負であるならば、シャドウボリューム面を正しい順序とするため反転された頂点配向でもってステップ１０３ａ及び１０３ｂを行う）
ボックス１０４−現在三角形のｄパラメータが隣接する三角形に対するものとは異なる符号を有するような三角形の各エッジを無限へと押し出し、その結果生ずる四角形をレンダリングし、隣接する三角形を有しないエッジに対して同じことを行う。再び、頂点順序を調整するためｄの符号を考慮する。
【００２５】
不必要なシャドウボリュームの数を減少させるため、良好に挙動するメッシュを検出し、そのシャドウボリュームを生成するための標準の技法を使用することができる。従来の技法は、典型的には、シルエットを押し出す時、その光に面したポリゴンのみを考慮しており、従って、例えば、非クローズドメッシュに対しては上手く働かない。
【００２６】
ダイナミックシャドウボリューム生成をスピードアップするため、最近のグラフィックハードウエアにて使用できるジオメトリシェーダーを使用することができる。ジオメトリシェーダーによれば、ジオメトリ基本要素をシェーダープログラムにて生成することができるので、ＧＰＵにおいて全体的に、前述の技法並びに他のシャドウボリューム生成技法の実施をすることができる。
【００２７】
縮退三角形の場合に対処できるように、このような技法を増強することについては、セクション２．３．１．１において以下に説明する。
【００２８】
１．２  バウンディングボリューム階層型トラバーサル
特に、アーキテクチャーモデル又はシティーシーンの如き高度に幾何学的複雑性を有するシーンに対して、シャドウボリューム技法の使用を加速するための技法について、以下説明する。
【００２９】
図３は、本発明のここで説明する態様による技法１２０のフローチャートを示している。ここで説明する技法の基本的なアプローチは、レンダリングする必要のあるボリュームの数を削減するため、シャドウボリュームに関する階層型ハードウエア加速オクルージョンカリングを使用することである。シーンにおけるオブジェクト（又はサブオブジェクト）の階層型データ構造として、バウンディングボリューム階層（ＢＶＨ）が使用される。シャドウボリュームを描写するため、各光源に対してツリー構造が次のようにトラバースされる。
ボックス１２１−全シーンを保持するルートノードで開始し、繰り返しトラバースする。
ボックス１２２−現在ノードのシャドウボリュームを生成する。即ち、包囲ジオメトリの実際のボリュームの代わりに、現在ノードのバウンディングボリュームのシャドウボリュームを生成する。
ボックス１２３−ビューイングフラスタムとの交差について生成されたボリュームをテストする。もし、それが交差しないならば、このノードの子をスキップする。さもなければ、ステンシルバッファへ書き込むことなく、ボリュームジオメトリに関するオクルージョンクエリーを行う。これは、グラフィックパイプラインを停止しないように非同期的になされ、即ち、オクルージョンクエリーが発せられ、ＢＶＨトラバーサルがスタックの異なるノードでもって続けられる。ある後のポイントで、そのクエリー結果が使用できるとき、ツリートラバーサルは、現在ノードでもって続けることができる。そのクエリー結果に依存して、その子を無視するか、又は繰り返しトラバースする
ボックス１２４−リーフノードに達し、そのノードシャドウボリュームが可視であると見出されるとき、その実際のジオメトリシャドウボリュームをステンシルバッファへとレンダリングする
【００３０】
ＢＶＨバウンディングボリュームは、そのノードに含まれるオブジェクトの全てを完全に包囲するので、そのバウンディングボリュームのシャドウボリューム自体が可視であるならば、そのノードにおけるオブジェクトは、可視シャドウボリュームを投げ掛けるだけである。（１）光源がノードバウンディングボリュームの内側にある及び（２）カメラがバウンディングボリュームシャドウの内側にある、というような特殊な場合は、このようなノードの子で直接に続けることにより、取り扱われる。このようなアプローチによれば、多くのシーンに対してレンダリングされるシャドウボリュームの数が非常に劇的に減少される。
【００３１】
オクルージョンクエリーは、非同期的になされるとしても、取るに足らないものではないので、前述の技法は、トラバーサル中に一時的コヒーレンスを考慮することにより、増強することができる。これにより、２番目以降のフレームを、最初のフレームに比べて、相当により速くレンダリングすることが可能となる。一時的コヒーレンスは、光源、オブジェクト及びビューアーが連続するフレームの間では僅かにしか移動しないとの仮定に基づくものである。そして、この仮定は、ほとんどの３Ｄアプリケーションにおいては通常成り立つものである。この技法は、前述したＢＶＨトラバーサル技法への拡張として、次のように実施される。通常の情報（バウンディングボリューム、子ポインター）の他に、各ＢＶＨノードは、コヒーレンシー情報、即ち、最後にチェックされたときにそのノードが可視であったかの情報及びその情報が最後に更新されたのは何時かの情報、をも記憶する。それから、この情報は、以前に可視であったノードに対するハードウエアオクルージョンクエリーをスキップするのに使用される。この技法は、他の基準で容易に拡張することができる。単一のＢＶＨでもって複数の光源を取り扱うため、各ノードは、コヒーレンシー情報変数のセットを、各光源に対して１つ含む。
【００３２】
ここで説明する加速技法の更に別の態様については、セクション２．３．３において以下に説明する。
【００３３】
２．１  リアリティーサーバーインプリメンテーション
前述した技法について、３Ｄウエブサービス及び他のアプリケーションを生成して配置するためのプラットフォームである、ＭＥＮＴＡＬ  ＩＭＡＧＥＳ  ＧＭＢＨにより市販されているリアリティーサーバーに関して、以下より詳細に考察する。
【００３４】
リアリティーサーバーにおけるハードウエアレンダーラーは、多くの種々なシーンを高い性能及び品質でもって表示することができることが必要とされている。このような種類のもっともらしい画像を達成するための重要な点は、リアルなシャドウレンダリングである。
【００３５】
リアリティーサーバーは、２つの最も普通のシャドウレンダリング技法、即ち、シャドウマッピング及びシャドウボリュームを支援する。前述したように、各技法は、それ自身の利点と欠点とを有している。シャドウマップが使用されるときには、ソフトなシャドウを生成するのが比較的に容易であるが、それらシャドウは、特に、大きなシーンにおいてエイリアシング問題を被る。一方、シャドウボリュームは、ピクセル正確度でもってレンダリングされるが、完全にポイント光又は指向性光でない光源を取り扱うのがより難しい。
【００３６】
リアリティーサーバーにおいてロバストステンシルシャドウレンダリングがどのように実施されるか及びこの技法を加速するのに現在のハードウエア特徴がどのように使用されるかについて、以下に説明する。
【００３７】
２．２  シャドウボリュームのオーバービュー
シャドウボリュームでもってシャドウをレンダリングする概念は、ある間おおよそのものであったが、ロバスト技法及び増強型グラフィックハードウエア支援の開発により比較的に最近になって実施可能となってきたものである。このアプローチの基本原理について、以下に簡単に説明する。
【００３８】
２．２．１  ｚパス及びｚフェイル
図４Ａから図４Ｃは、シャドウボリュームの背後にある主概念を例示する一連の図である。図４Ａは、オクルーダー２０２が光源２０４と受け表面２０６との間に位置しているようなシーン２００を例示している。受け表面の一部分２０８は、カメラ２１２の可視フラスタム２１０内にある。受け表面２０６のこの可視部分は、光領域２１４及び影領域２１６を含む。
【００３９】
オクルーダー２０２の実際のシャドウボリュームは、遮蔽区域２２０、すなわち、光源２０４から見えないオクルーダー２０２の背後の全ての点に対応している。照明無しで又は周囲照明のみで、そのシャドウに交差するすべてのジオメトリをレンダリングするのが望ましいことは明らかであるが、そのボリュームの外側のすべては、光源からの光を完全に受けてしまう。
【００４０】
図４Ａに例示されるように、シーンジオメトリに向かって投げ掛けられたカメラに原点を有するレイについて考察する。シャドウボリュームとのこのレイの交差を計数する。シャドウボリュームに入る毎に、カウンターが増大され、出て行く毎に、カウンターが減少される。影にあるジオメトリの部分についてのみ、その結果は、零とは異なるカウンター値となる。この概念は、シャドウボリュームの背後の重要な原理である。もし、各ピクセルについてカウンター値が使用できるならば、影区域は、非影区域から分離されており、この情報を利用するためマルチパスレンダリング技法を使用することができる。
【００４１】
カウンター値を得るため、「リアル」レイトレーシングを行う必要はない。現在使用できるグラフィックハードウエアにおいて典型的に利用できるステンシル機能に頼ることができる。先ず、ステンシルバッファが、それを零にセットすることにより、クリアされる。それから、シャドウボリュームの境界が、ステンシルバッファへとレンダリングされ、カラー及び深さバッファへはレンダリングされない。ハードウエアは、ステンシルバッファにおける値が前向きポリゴンに関しては増大され、後向きポリゴンに関しては減少されるように、セットアップされる。これらの増大動作及び減少動作は、共に、「ラップアラウンド」にセットされる。従って、零まで減少しても、最大ステンシル値まで増大しても、飽和とはならない。
【００４２】
このパスの結果として、ステンシルバッファは、各ピクセルについての交差カウンター値を含み、これら交差カウンター値は、全ての非影ピクセルでは、零であり、全ての影ピクセルでは、非零である。現在のグラフィックカードでは、ボリュームレンダリングは、ｔｈｅ  ｇｌＳｔｅｎｃｉｌＯｐＳｅｐａｒａｔｅ（）機能を有するオープンＧＬにて制御される２−サイドステンシル書込みを使用することにより、単一レンダリングパスにて行われる。シャドウボリュームが描写される前に、ｚバッファにシーンの深さ値を充填しなければならず、これは、周囲パスがとにかくレンダリングされなければならないので、通常そうである。
【００４３】
ステンシル書込みは、深さテストがパスする全てのフラグメントに対して行われなければならないことに注意されたい。従って、ここで説明した方法は、「ｚパス」と称される。ｚパスは、簡単な技法であるが、それには、図４Ｂに例示されるような問題がある。図４Ｂは、図４Ａのオクルーダー２０２、光源２０４及び受け表面２０６を示している。しかしながら、カメラ２１２’の位置は、ここではシャドウボリューム２２０内に位置するように変更されている。カメラ２１２’の位置を変えたことにより、光部分２１４’及び影部分２１６’を含む受け表面２０６の見える部分２０８’、ビューイングフラスタム２１０’の位置が変わってくる。このｚパス技法は、正しくない結果を生じてしまう。何故ならば、シャドウボリューム２２０への入口点が無いからである。従って、もし、カメラと受け表面との間にシャドウボリューム出口点が無いならば、カウンターは、零のままであり、影とされるべき領域が、その代わりに、光領域とされてしまう。もし、カメラと受け表面との間にシャドウボリューム出口点があるならば、カウンターは、非零ボリュームへと減ぜられ、光領域とされるべき領域が、その代わりに、影とされてしまう。
【００４４】
次のような解決法が開発されている。即ち、実際のジオメトリの前でのレイボリューム交差を計数する代わりに、図４Ｃに示されるように、その背後での交差を計数することができる。深さテストが失敗するならば、ステンシルバッファへの書き込みを行い、増大及び減少動作を反転させるように、グラフィックハードウエアをセットアップするだけでよい。この技法は、一般的に、「ｚフェイル」と称される。
【００４５】
ｚフェイルは、どのような場合にも働くが、ｚパスと違って、ボリュームキャップが正しくレンダリングされようにしなければならず、即ちボリュームがその前端でも後端でも閉じられなければならない。図４Ｃに例示されるように、バックキャップの欠落により、正しくない結果が生じてしまう。
【００４６】
ｚパスの場合、フロントキャップは、描写される必要はない。何故ならば、深さテストは失敗し、ステンシル書込みがどのようにも行われないからである。バックキャップは、省略することができる。何故ならば、それは、全てのオブジェクトの背後で無限の所に置かれており、従って、どの深さテストも同様に失敗に終わるからである。
【００４７】
２．２．２  ボリューム生成
シャドウボリュームを生成するための本発明の一態様による技法については、セクション１．１にて前述している。前述した技法は、典型的には、オブジェクトが穴、クラック又は自己交差を有することができないことを意味する、閉じた２−マニホルドポリゴンメッシュに対してのみ正しく働く。このような制約を克服する本発明の別の態様による技法については、セクション２．３．１．１において以下に説明する。
【００４８】
２．２．２．１  レンダリングステップ
セクション１．１にて前述し、図２に例示されているように、シャドウボリュームのレンダリングは、次の３つのステップに分けられる。
１．フロントキャップのレンダリング
２．バックキャップのレンダリング
３．オブジェクトの押し出しシルエット、即ち、ボリュームのサイドのレンダリング
【００４９】
フロントキャップの場合、モデルにおける全てのポリゴンは、ループオーバーされており、光に面するものがレンダリングされる。ポリゴンが光に面しているか否かは、表面法線と光の方向との間のドット積の符号をテストすることにより、効率的にチェックすることができる。バックキャップの場合、再び同じポリゴンは、すべての頂点が光の方向において無限へと投影された状態で、再度レンダリングされる。この投影方法は、ボリュームサイドに対しても使用され、ここでは、ありうるシルエットエッジは、無限へと押し出されて描写され、四角形となる。ありうるシルエットエッジ、即ち、実際のオクルーダーシルエットの部分であるエッジは、表面法線と光の方向との間のドット積の符号を隣接する面のそれらと比較することにより、見出される。
【００５０】
もし、その符号が異なるならば、そのエッジは、押し出される。非凸オブジェクトの場合、この押し出しにより、シャドウレンダリングを破壊しないようなネステッドシルエットを生ずることができる。更に、全ての場合において、生成された面は、それらの法線がそのシャドウボリュームの外側を指すように配向されていることが重要であり、さもないと、ステンシルバッファにおける値のバランスが崩れてしまう。
【００５１】
２．２．２．２  無限でのレンダリング
無限でのレンダリングは、オープンＧＬにおける同次座標に固有のものである（及び直接３Ｄでも同様）。頂点は、位置の代わりに方向を通すことにより、あたかも無限に大きい球へと投影されたかのように、レンダリングすることができる。この場合において、この方向は、光位置からその頂点に向かうベクトルである。同次座標において、方向は、ｗ成分を零にセットすることにより、特定され、一方、位置は、通常、ｗが１にセットされる。
【００５２】
無限でレンダリングするとき、基本要素がファー平面に対してクリップされてしまうという問題が生ずる。このようなクリッピングに対処するのに都合の良い方法は、オープンＧＬにおけるＮＶ ｄｅｐｔｈ ｃｌａｍｐ拡張により支援される深さクランピングを使用することである。イネーブルされるとき、ジオメトリは、ファー平面の背後でもレンダリングされ、そこでの最大可能深さ値を生ずる。もし、その拡張が使用できないならば、特殊な投影を使用して、同じ効果を達成することができる。
【００５３】
２．２．３  性能及び最適化
あまり複雑でないシーンの場合、シャドウボリュームは、多くの性能を犠牲にすることができる。従って、多くの最適化が開発されている。ｚパスは、通常、ｚフェイルより速く動作することに注意されたい。その主たる理由は、ボリュームキャップをレンダリングする必要がないからである。その上、そのシャドウボリュームのオクルーディングされる部分は、通常、オクルーディングされない部分よりも、スクリーン上にて大きく、これは、ｚフェイルにより充填レートを消費させてしまう。従って、可能なときにはいつでもｚパスを使用し、必要なときのみ、即ち、カメラがシャドウボリュームの内側にあるときのみ、ｚフェイルへ切り換えるのが好ましい。
【００５４】
ｚパス及びｚフェイルを、レンダーパスにおいて同時に使用することができ、それら２つの間で動的に切り換えるようにするのがよく、これには、カメラがボリュームの内側にあるかのコンサバティブテストが必要となるだけである。フィルレートがシャドウボリュームに対して主たるボトルネックとなることがあり、従って、更なる最適化として、シザーテスト及び深さバウンドを使用してボリュームを制限するボリュームカリングがある。
【００５５】
２．３  リアリティーサーバーインプリメンテーション
ロバストネス及び性能を改善するための本発明の態様による技法について、次に説明する。特に、シャドウボリュームを、リアリティーサーバーの要件に合わせるための技法について、以下に説明する。
【００５６】
２．３．１  低品質メッシュに対するロバストシャドウ
シャドウボリューム技法は、ゲームエンジンが処理しなければならいメッシュに亘ってアーティストが完全に制御するようなゲームの如きアプリケーションにおいて、普通に使用される。従って、オクルーダーを２−マニホルドメッシュであるように限定することができることが多く、これにより、シャドウボリューム生成が簡単化される。しかしながら、リアリティーサーバーは、閉じていない又は交差ジオメトリを有するメッシュの如き低品質のメッシュを正しく取り扱うことができることが必要とされる。この種のメッシュは、ＣＡＤソフトウエア又は変換ツールにより生成されることが多い。従って、性能を犠牲にし過ぎることなく、アーチファクトの無いシャドウがレンダリングされるメッシュに対する制約を低くすることが望ましい。
【００５７】
２．３．１．１  変更ボリューム生成技法
図５は、前述のボリューム生成技法への変更２５０のフローチャートを示している。このアプローチにおいては、キャップを描写することに加えて、光に面するポリゴンのエッジが、その対応する隣接ポリゴンがその光に面していないときはいつでも、押し出されている。
【００５８】
非２−マニホルドに対してロバストに動作するため、この技法は、次の２つの仕方にて拡張される。
ボックス２５１−先ず、隣接するポリゴンを全く有していないエッジが押し出される。この拡張は、非クローズドメッシュに対して必要とされる。非クローズドメッシュの実施例は、例えば、単一三角形のみがオクルーダーである場合である。
ボックス２５２−次に、ありうるシルエットエッジを押し出し且つキャップを描写するため、光に面するものだけでなく、メッシュにおけるすべてのポリゴンを考慮する。この拡張は、隣接ポリゴンを有する全てのシルエットエッジが、実際に、各接続ポリゴンに対して１回ずつ、２回押し出されることを意味しており、次のことを含む。
（ａ）シャドウボリュームの第１のセットを生成するため、「トワード」表面を押し出すこと、
（ｂ）シャドウボリュームの第２のセットを生成するため、「アウエイ」表面を押し出すこと、及び
（ｃ）全メッシュ表現に対する正しい合成シャドウボリュームを形成するため、シャドウボリュームの第１のセットと第２のセットとを組み合わせること。ここで、トワード表面及びアウエイ表面に共通のエッジは、２回押し出され、その結果生ずるサイドが、光に面しているポリゴン及び光に面していないポリゴンの両者のシャドウボリュームを閉じる。
【００５９】
これらの拡張は、図６Ａから図６Ｃに例示されている。図６Ａは、オープンメッシュから形成されるオクルーダー３００の図を示している。このオープンメッシュは、光源３１０の方に向いた多数の表面３０２及び光源３１０から背けられている多数の表面３０４を含む。このオープンメッシュは、更に、「トワード」表面３０２及び「アウエイ」表面３０４の両者によって共有される多数のエッジ３０６を含む。
【００６０】
図６Ｂに例示される第１のステップにおいて、シャドウボリューム３１２の第１のセットが、「トワード」表面３０２を押し出すことにより、生成される。第２のステップにおいて、シャドウボリューム３１４の第２のセットが、「アウエイ」表面３０４を押し出すことにより、生成される。それから、シャドウボリューム３１２の第１のセット及びシャドウボリューム３１４の第２のセットは、全メッシュに対する正しいシャドウボリュームを形成するため、組み合わされる。前述したように、エッジ３０６は、「トワード」表面及び「アウエイ」表面に共有されており、２回押し出されている。
【００６１】
このオープンメッシュ３００に対するシャドウボリュームは、正しくレンダリングされる。何故ならば、その「共有」エッジ３０６が２回押し出されているからである。この結果生ずるサイドは、光に面しているポリゴン及び光に面していないポリゴンのセットの両者のシャドウボリュームを閉じる。
【００６２】
「トワード」表面及び「アウエイ」表面からシャドウボリュームを押し出す順序は、逆にしても良いことに注意されたい。又、「トワード」表面及び「アウエイ」表面の全てを同時に押し出すような適当なハードウエアも開発できよう。
【００６３】
ここで説明している技法は、オブジェクトを、各々の部分が光源に関して前向きのポリゴン又は後向きのポリゴンのみからなるような複数の部分へ分割する技法として理解することができる。それから、各部分について、対応するシャドウボリュームが、互いに背後の複数の別々のオブジェクトと同様に、レンダリングされる。この技法は、自己交差オブジェクトに対しても有効に働く。前のように、全てのシャドウボリュームジオメトリが、正しく、即ち、その法線がそのボリュームから向けられるように、配向されることに注意を払はなければならない。次に、光に面していないポリゴンについても考察するに、これらポリゴンの生成ボリューム面を全て反転する必要がある。
【００６４】
２．３．１．２  性能コスト
この新しい技法は、簡単で効果的であるが、コストが掛かってしまう。もし、例えば、２−マニホルドメッシュがレンダリングされる場合には、非ロバスト技法の動作が２回行われることになる。ｚフェイルの場合、キャップが、１回でなく、２回レンダリングされ、即ち、前面及び後面に対して行われ、全てのありうるシルエットエッジも２回押し出される。しかしながら、キャップは、一般的には、それほど問題ではない。何故ならば、ほとんどシーンの場合、ｚフェイルで取り扱われる必要のあるオクルーダーは数個でしかないからである。ｚパスについて前述したように、どのキャップも描写する必要はない。
【００６５】
より大きな問題は、押し出されるシルエットエッジの数が２倍であるということである。１つの簡単な解決方法は、２つの面に接続されたエッジを１回のみ押し出してレンダリングし、ステンシルバッファにおける値を１の代わりに２だけ増大又は減少するということである。ｚパスの場合、これにより、この技法のコストを、非ロバスト方法の場合と同じであるまでに下げることができよう。しかしながら、このような機能は、グラフィックハードウエアにおいては支援されず、従って、これらのエッジを２回レンダリングすることを避けることはできない。避けがたい性能ロスを最小とするため、ここで説明する技法は、メッシュが処理ステップにおいて２−マニホルドであるかを検出して、必要な場合にのみロバストボリューム生成を使用する。
【００６６】
又、特に、３つ以上のポリゴンがエッジを共有している場合、及びポリゴンがエッジを共有しているが、異なる頂点ワインディング順序を有する場合において、本インプリメンテーションにより取り扱うことができない場合が依然としてあることに注意されたい。これは、同様に、前処理中に取り扱われ、ここでは、そのような場合は、単一分離ポリゴンへと変換される。
【００６７】
シャドウボリュームと組み合わせて難しいメッシュを扱うことを先ず考えてもよいとしても、既存のステンシルシャドウシステムに本方法を組み合わせることが比較的に簡単であろう。リアリティーサーバーの場合、ロバストシャドウは、それらがある性能を犠牲にしてしまうとしても、全体に必要である。何故ならば、このアプリケーションが取り扱わねばならないメッシュを修正することは、不可能でないとしても、典型的には、難しいからである。
【００６８】
２．３．２  ジオメトリシェーダーでのダイナミックボリューム生成
ＮＶＩＤＩＡのＧｅＦｏｒｃｅ  ８クラスのハードウエアによれば、ジオメトリシェーダー（ＧＳ）と称される新しいパイプラインステージにおいてＧＰＵでのプログラマブル基本要素生成を行うことができる。ジオメトリシェーダーは、基本要素に関して動作するもので、頂点シェーダー（ＶＳ）とフラグメントシェーダー（ＦＳ）との間に論理的に置かれる。全基本要素の頂点は、入力パラメータにて使用できる。
【００６９】
この新しい能力は、シャドウボリュームのダイナミック生成に十分に適している。シルエット決定は、楽なタスクではなく、動画シーンの場合フレーム毎にやり直されねばならない。従って、その計算ロードをＣＰＵからＧＰＵへと移すのが好ましい。ＧＰＵにおいて全体的にシャドウボリュームの生成を行う前の方法は、典型的には、頂点及びフラグメントシェーダーを使用する複雑な技法を必要としている。ここで、ジオメトリシェーダーは、このような問題に対する「本質的」解決方法を提供する。固定機能パイプラインを再現する基本的ジオメトリシェーダーは、入力基本要素を取り込むだけで、それを再び放出して、この場合において、シャドウのフロントキャップを生成する。それから、付加的な基本要素が、必要に応じて、バックキャップ及び押出しシルエットエッジに対して生成される。セクション２．３．１．１にて前述したのと厳密に同じロバスト技法は、ＧＰＵにおいて全体的に実施することができ、こうすることより、ダイナミックシャドウを生成する優れた方法が得られる。
【００７０】
メッシュのシルエットエッジを計算するため、ジオメトリシェーダーは、三角形の隣接情報にアクセスする必要がある。オープンＧＬにおいては、ｇｌＢｅｇｉｎに対する新しいＧＬ ＴＲＩＡＮＧＬＥＳ ＡＤＪＡＣＥＮＣＹ ＥＸＴモードを使用して、三角形当たり付加的な頂点を通すことができる。このモードにおいては、三角形を完成するために、３つの代わりに、６つの頂点が必要とされ、それらのうちの３つは、エッジの隣接頂点を特定するものである。図７は、隣接三角形を有する三角形の頂点配列３５０を例示する図である。この主三角形は、頂点０、２及び４を備える。頂点１、３及び５は、それぞれ、この主三角形の第１のエッジ、第２のエッジ及び第３のエッジを特定している。
【００７１】
入力基本要素タイプを特定することに加えて、ＧＳが生成する基本要素のタイプを特定する必要がある。三角形ストリップが選択され、これにより、単一三角形（キャップに対する）並びに四角形（押出しシルエットエッジに対する）の効率的なレンダリングが可能とされる。放射頂点の最大許容数は、１８（２つのキャップに対して３＋３とサイドに対する４ｘ３）にセットされる。
【００７２】
図８Ａから図８Ｃは、ボリューム生成ジオメトリシェーダーのＧＬＳＬインプリメンテーションのソースコードリスト４００ａから４００ｃを示している。このコードは、ｇｌ ＰｏｓｉｔｉｏｎＩｎがアイスペースへ変換された頂点の座標を含むと仮定している。この変換は、入力頂点にｇｌ ＭｏｄｅｌＶｉｅｗＭａｔｒｉｘを乗算し、それをｇｌ Ｐｏｓｉｔｉｏｎへ書き込むだけで、ＶＳにおいて行われる。それから、基本要素の全ての頂点が、ｇｌ Ｐｏｓｉｔｉｏｎｉｎアレイにて示される。もし、エッジが隣接する三角形を有していないならば、対応する隣接頂点に対してｗを零にセットすることにより、これをエンコードする。
【００７３】
この点に向けられている１つの問題は、シャドウボリュームシェーダーにおけるジオメトリと厳密に同様の実際のレンダリングされるシーンジオメトリを変換することである。即ち、もし、エフトランスフォーム又は固定機能パイプラインがレンダリングのために使用されるならば、少なくともフロントキャップが同様にエフトランスフォームで変換された座標を使用するように、そのインプリメンテーションを調整することが多分必要であろう。さもなければ、シャドウアーチファクト（「シャドウアクニ」）がｚファイティングにより生ぜしめられてしまうであろう。パラメータ１ ｐｏｓは、４Ｄ同次座標においてアイスペースにおける光の位置を含む。これにより、各場合を別々に取り扱う必要なしに、ポイント光及び指向性光を通すことが容易となる。
【００７４】
均一可変ロバストは、セクション２．３．１．１にて前述したような技法でボリュームを生成する必要があるか否かの制御をする。もし、メッシュが２−マニホルドであることが知られているならば、ロバストを偽にセットすることができ、この場合において、シェーダーは、単に、その光に面していない全てのポリゴンを無視する。これは、システムがセクション２．２．１にて前述したようなボリューム生成技法へと効果的に切り換わることを意味している。ｚパスフラグは、ｚパス方法が安全に使用されるかを特定する。この判定は、カメラがそのシャドウボリュームの内側にあるかをチェックすることにより、ランタイムで決定される。本発明の別の態様によれば、厳密なシャドウボリュームよりも粗いバウンディングボリュームを使用して、コンサバティブチェックが実行される。もし、そうであるならば、ｚフェイルを使用する必要があり、さもなければ、シェーダーは、フロントキャップ及びバックキャップのレンダリングをスキップすることができる。
【００７５】
このコードは、低品質メッシュで頻繁に生ずる縮退三角形の問題にも向けられていることに注意されたい。三角形は、当初から縮退であるか、又は、アイスペースへ変換されるとき、計算における数値的不正確さのため、縮退となるかする場合がある。しばしば、これは、ポリゴンへとモザイク化されていて、非常に小さな又は非常に薄い三角形を含むようなメッシュの場合において起こる。縮退又は近縮退三角形は、シャドウボリューム生成において難問である。何故ならば、それが生ずるアーチファクトは、典型的に、シャドウ自体において可視的であるばかりでなく、オクルーダーから「リークする」シャドウストリークとしても現れてしまうからである。
【００７６】
縮退三角形での主たる困難は、それらが光に面しているか否かを判定することである。計算され後で光の方向と比較される法線に依存して、異なる結論に達してしまうことがある。ジオメトリシェーダーにおけるように、もし、複数回同じ三角形を見る必要がある場合に、そのとき、問題が生ずる。１つのポイントにおいて「主」三角形であるものが、別のポイントでの「隣接」三角形であることがある。もし、このような２つの実行が同じ結果を生じないならば、押出しシルエットが１つだけ多すぎるか又は１つだけ少なすぎるかであり、これがアーチファクトに繋がることがある。
【００７７】
この問題を取り扱うため、三角形が光に面しているか否かを判定することが必要なときにはいつでも、厳密に同じ計算が行われるようにしなければならない。不都合なことに、この解決方法では、三角形当たり３つの法線を計算して、それらを３つの異なる光方向ベクトルと比較しなければならないことになる。勿論、この動作は、ある性能を犠牲にすることになる。従って、「難しい」三角形を有しないメッシュのみを取り扱うことが知られているならば、より簡単なインプリメンテーションに戻るのが望ましい。
【００７８】
２．３．３  階層型オクルージョンカリングでの性能改善
シャドウボリュームは、主として、シャドウマップが、典型的には、十分に行えないような、シティーモデルの如き大きなシーンにおいて使用するためリアリティーサーバーに組み入れられている。このようなシーンでは、レンダリング性能は、階層型オクルージョンカリング方法を使用することにより、相当に増強される。
【００７９】
この概念は、シーンにおけるすべてのオブジェクトを、階層型ツリー構造に編成することである。レンダリング中に、そのツリーは、フロント−バック順にて繰り返しトラバースされ、リーフノードに含まれたオブジェクトがレンダリングされる。しかしながら、１つのツリーノードがトラバースされる前に、グラフィックハードウエアによって与えられるオクルージョンカリング特徴を使用して可視性についてのテストがなされる。そのノードが可視であると見出されるならば、全サブツリーを除くことができる。この場合において使用するための最も簡単な階層構造は、軸整列アバウンディングボックス（ＡＡＢＢ）のバイナリバウンディングボリューム階層（ＢＶＨ）である。この種の階層は、非常に速く生成を行うことができ、これは、ＢＶＨ（又はその部分）がフレーム毎に再構成される必要のあるような動画シーンに対して重要である。
【００８０】
ノードが可視であるかをチェックするため、先ず、ビューイングフラスタムとの交差についてテストし、それから、単にＡＡＢＢをレンダリングすることによりオクルージョンクエリーを行うことができる。それが実際に可視である場合にのみ、システムは、それぞれ、ツリートラバーサルを続け又はリーフコンテントをレンダリングする。
【００８１】
階層型オクルージョンカリングを光学的に行うために、非同期オクルージョンクエリー及び一時的コヒーレンスが利用される。オクルージョンクエリーはＧＰＵからのリードバックを必要とするので、それらは、比較的に大きなオーバーヘッドを有する。従って、クエリー結果が得られるまで、そのツリーにおけるある他のポイントでの非同期オクルージョンクエリーを発し、トラバーサルを続けることが可能であるノードが前のフレームにおいて可視であったかについての情報を記憶しておくと、オクルージョンクエリーがすべてで必要とされるか、又はクエリー無しでノードを単にトラバースするのがより速いか、を決める助けとなる。例えば、ノードが前のフレームにおいて可視であったならば、現在のフレームにおいてもそのノードが可視である蓋然性が十分に高く、オクルージョンクエリーをやめてもよいと仮定することができる。もし、前のフレームにおいてノードが可視でなかったならば、現在のフレームにおいてそのノードが可視である蓋然性は相当に低く、オクルージョンクエリーをする価値があると仮定することができる。
【００８２】
本発明の別の態様によれば、このアプローチは、シャドウボリュームにも十分に拡張される。ツリーにおける特定のノードをスキップできるかを見出すことが望まれる。何故ならば、その階層のこの部分におけるどのオブジェクトも可視的ボリュームを投げ掛けないことが知られるからである。オクルージョンクエリーでノードのバウンディングボックスをテストする代わりに、あたかも軸整列バウンディングボックス（ＡＡＢＢ）自身が影を投げかけているかのように、光方向において押し出されたバウンディングボックスがテストされる。換言するならば、システムは、ノードバウンディングボックスのシャドウボリュームに対してオクルージョンカリングを効果的に行う。もし、この押出しボックスが可視でないならば、それは、そのバウンディングボックスの内側のオブジェクトにより投げ掛けられたどの影も可視でないことを意味しており、そのノードを無視することができる。
【００８３】
この原理は、図９Ａから図９Ｅに例示されている。図９Ａは、第１のオクルーダー５０２、第２のオクルーダー５０４、光源５０６及びカメラ５０８を含む典型的なシーン５００の図を示している。ここでの説明のために、２つのオクルーダー５０２及び５０４の各々に対するシャドウボリュームレンダリングが潜在的に高くつくと仮定する。図９Ｂにおいては、第１のオクルーダー５０２及び光源５０６のシャドウボリュームを例示するため、線５１２ａ及び５１２ｂが加えられており、第２のオクルーダーのシャドウボリュームを例示するため、線５１４ａ及び５１４ｂが加えられている。更に又、典型的なビューイングフラスタムを例示するため、線５１８ａ及び５１８ｂが加えられている。
【００８４】
図９Ｂに例示されるように、第２のオクルーダー５０４は、第１のオクルーダー５０２により視界から完全に隠されている。図９Ｂにおいて更に例示されているように、ビューイングフラスタム５１８ａ−５１８ｂ内において、第２のオクルーダー５０４のシャドウボリュームもまた、視界から完全に隠されている。従って、この実施例においては、第２のオクルーダー５０４又はそのシャドウボリュームをレンダリングする必要はない。
【００８５】
前述したように、本発明の態様は、レンダラーがオクルーダー５０４及びそのシャドウボリューム５１４ａ−５１４ｂの両者のレンダリングをスキップできるようにオクルージョンクエリーを行うための効率的な技法を提供する。ここに説明する技法によれば、第２のオクルーダー５０４は、軸整列バウンディングボックス（ＡＡＢＢ）に包囲される。このＡＡＢＢは、それから、「トライアル」シャドウボリュームを生成するため押し出される。それから、システムは、そのトライアルシャドウボリュームのどれかが可視であるか、又はそれが第１のオクルーダー５０２により視界から完全に隠されているか、について決定する。
【００８６】
軸整列バウンディングボックスの生成は、階層的に進む。図９Ｃに例示されるように、第１の生成軸整列バウンディングボックス（ＡＡＢＢ）５２０が、先ず、第１のオクルーダー５０２及び第２のオクルーダー５０４の両者の周りに構成される。このＡＡＢＢは、軸整列平面を、ｘ軸、ｙ軸及びｚ軸に沿ってオクルーダー５０２及び５０４の対の最も近いポイント及び最も遠いポイントに通すことにより、構成される。それから、図９Ｄに示されるように、第１の生成ＡＡＢＢ５２０は、各々が単一オクルーダー５０２、５０４を含むような１対の第２の生成ＡＡＢＢへと細分割される。各オクルーダー５０２、５０４に対して、第２の生成ＡＡＢＢ５２２は、軸整列平面を、ｘ軸、ｙ軸及びｚ軸に沿って各オクルーダー５０２、５０４の最も近いポイント及び最も遠いポイントに通すことにより、構成される。
【００８７】
図９Ｅに示されるように、シャドウボリュームは、そのＡＡＢＢを押し出すことにより、生成される。図９Ｅから明らかなように、ビューイングフラスタム内で、第２のオクルーダー５０４のＡＡＢＢから押し出されたシャドウボリュームは、第１のオクルーダー５０２によりカメラから完全に隠されている。従って、前述したオクルージョンクエリーに基づいて、システムは、第２のオクルーダーのためのシャドウボリュームの生成及びレンダリングを安全にスキップすることができる。
【００８８】
勿論、このような結論は、もし、オクルーディングされるノードが１つのオブジェクトのみの代わりに、シーンの全サブツリーを保持しているならば、真である。ツリートラバーサルが可視リーフノードに達するとき、そのシャドウボリュームは、この章で前述した方法を使用して、レンダリングされる。光源が現在処理されているＡＡＢＢの内側にある場合又はカメラが押出しＡＡＢＢの内側にある場合に、特別な注意を払う必要があることに注意されたい。しかしながら、これらの場合を検出するのは非常に簡単であり、そのときには、オクルージョンクエリーを行わずにノードを単にトラバースすることができる。
【００８９】
明らかなように、従来の階層型オクルージョンカリングのために使用されるのと同じ最適化も、この拡張方法に使用することができる。非同期オクルージョンクエリー及び一時的コヒーレンスは、予期したように働く。唯一の違いは、一時的コヒーレンスを考慮するため、各ＢＶＨノードにおいて光源当たりのコヒーレンシー情報を含まねばならないことである。即ち、各光及びノードについて、可視性フラグ（ノードのシャドウボリュームが最後にチェックされた時に可視であったか否か）を、フレームＩＤ（その可視性情報が最後に更新された時を記述する）と共に、記憶する。
【００９０】
ここに説明する階層型カリング方法は、すべての場合において性能を増大しない。実際に、ある情況においては、レンダリングは、シーンにおける全てのオブジェクトを単に描写するのと比べて、僅かにより遅くなることもある。しかしながら、大多数のシーンについては、階層型カリングは、元の及びシャドウボリューム変形の両者において、性能を相当に改善する。シティーリハーサルの如きケースでは、このスピードアップは、しばしば劇的なものとなる。
【００９１】
ここで説明されるようにトライアルシャドウボリュームを生成するのにＡＡＢＢを使用すると、時には、実際のオクルーダーのシャドウボリュームが可視でないとしても、そのＡＡＢＢシャドウボリュームが可視であると、システムが決定してしまうような「偽肯定」を生じてしまうことがあることに、注意されたい。この場合において、システムは、必要でないとしても、第２のオクルーダーのシャドウボリュームをレンダリングしてしまう。しかしながら、トライアルシャドウボリュームを押し出すためにＡＡＢＢを使用すると、オクルージョンクエリーを行うのに必要とされるコンピューティングリソースの量が相当に減少されるので、多数の偽肯定があるとしても、典型的には、全体として効率の増大を達成することができる。
【００９２】
２．４  リアリティーサーバーインプリメンテーション：結論
シャドウボリュームジオメトリを生成するための非標準方法を使用することにより、難しいメッシュに対しても、シャドウのロバストレンダリングを達成することができる。階層型ハードウエアオクルージョンクエリー及びジオメトリシェーダーと組み合わせてこの方法を使用することにより、ステンシルシャドウでは以前には上手くいかなかった情況に対しても、高性能を達成することも可能となる。ここで説明する技法の全ては、実施するのが比較的に簡単である。
【００９３】
図１０Ａ及び図１０Ｂに実施例を示している。図１０Ａは、ざっと５００，０００個のポリゴンを有する複雑なツリーメッシュを含むシティーシーンクローズアップ６００ａを示している。ロバスト技法は、ツリーリーフの間のシャドウイングを正しく取り扱う。このシーンにおけるメッシュは、どれも、２−マニホルドでない。図１０Ｂは、ズームアウトされた図１０Ａと同じモデル６００ｂを示している。両方のビューは、ダイナミックシャドウボリューム生成を起動した状態で、双方向レートでレンダリングされる。
【００９４】
ここで説明した技法を、変更し、又は増強することができることは、理解されよう。例えば、特に、極端に高いジオメトリ複雑性を有するシーンを取り扱うために、付加的な性能最適化を実施することができる。
【００９５】
３．  本発明を実施することのできるデジタル処理環境
前述した本発明をインプリメンテーションし実施することのできる、典型的な、比較的に通常のデジタル処理構造及び環境について、図１１、及び図１２Ａ及び図１２Ｂに関連して、以下に説明する。
【００９６】
当業者により理解されるように、前述したような本発明は、典型的には、例えば、動画映画、コンピュータ支援デザイン表現又は他の典型的なコンピュータグラフィック出力を含む、人間が知覚できる（又はデジタル的に記憶され及び／又は送信される）画像又は一連の画像を出力するようなコンピュータグラフィックシステムにおいて、丸められたコーナー及びエッジ、及びその他のアクティビティの出現の生成を可能とする方法、システム、装置及びコンピュータプログラム製品を提供する。従って、本発明は、ディスプレイ、キーボード、タブレット及び／又はマウスの如きユーザインターフェース要素、メモリ、記憶装置、他の通常のコンピュータグラフィックシステムコンポーネントと共に、コンピュータグラフィックシステムの部分を構成するコンピュータのコンピュータソフトウエア又はコンピュータハードウエアの部分として実施することができる。この種の従来のコンポーネントは、当業者によりよく知られており、従って、ここでより詳細に説明する必要はないのであるが、本発明がコンピュータグラフィックシステムにおいてこのようなコンポーネントに関連してどのように実施されるかについて示すため、以下概説する。
【００９７】
詳述するに、当業者であれば、本発明は、映画における表示又は他のダイナミック表示のための如き、画像の生成及び合成において使用できることは、理解されよう。ここで説明する技法は、画像のピクセルに対してピクセル値が生成されるようなコンピュータグラフィックシステムの部分として実施することができる。ピクセル値は、シミュレートカメラの画像平面に記録されるようなシーンにおけるあるポイントを表している。この下位コンピュータグラフィックシステムは、本発明の方法の如き、選択方法論を使用して画像に対するピクセル値を生成するようにコンフィギュレーションすることができる。
【００９８】
前述の詳細説明は、これらの技法による方法、構造、システム及びコンピュータソフトウエア製品の実施例を例示している。当業者により理解されるように、ここで説明した方法及びシステムは、スタンドアローン構成において又はネットワークを通して、マイクロソフトウインドウズ、リナックス又はユニックスの如き従来のオペレーティングシステムに従って動作する（又はエミュレーティングする）パーソナルコンピュータ（ＰＣ）又は他の等価デバイスの如き従来のコンピュータ装置を使用して、ソフトウエア、ハードウエア又はソフトウエアとハードウエアとの組み合わせにて実施することができる。従って、ここで説明した種々な処理態様及び手段は、適切にコンフィギュレーションされたデジタル処理装置又はデバイスのネットワークのソフトウエア及び／又はハードウエア要素にて実施することができる。処理は、順次又は並列に行うことができ、又、特殊用途又はリコンフィギュレーション可能なハードウエアを使用して実施することができる。
【００９９】
実施例として、ここに添付した図１１は、このようなコンピュータグラフィック処理を実施することのできる例示的コンピュータシステム１０００を示している。図１１を参照するに、一実施形態におけるコンピュータシステム１０００は、プロセッサモジュール１００１、及びキーボード１００２Ａ及び／又はマウス１００２Ｂ（又はデジタイジングタブレット又は他の等価な要素であり、全体としてオペレータ入力要素１００２として示す）の如きオペレータ入力コンポーネントを含むオペレータインターフェース要素及びビデオディスプレイ装置１００３を含む。この例示的コンピュータシステム１０００は、従来のストアドプログラムコンピュータアーキテクチャーであってよい。プロセッサモジュール１００１は、例えば、与えられたデジタルデータに関して処理動作及び記憶動作を行う、１つ以上のプロセッサ、ディスク及び／又はテープ記憶要素（別に図示せず）の如きメモリ及び大容量記憶装置を含むことができる。オペレータ入力要素１００２は、オペレータが処理のための情報を入力できるようにするため設けられる。ビデオディスプレイ装置１００３は、オペレータが処理のために入力するデータ、オペレータが処理の制御のために入力する情報並びに処理中に生成される情報を含めて、オペレータに対してスクリーン１００４上にプロセッサモジュール１００１により生成された出力情報を表示するために設けられる。プロセッサモジュール１００１は、種々なアプリケーションのための情報が種々な「ウインドウ」を使用して表示されるような、いわゆる「グラフィックユーザーインターフェース」（「ＧＵＩ」）を使用して、ビデオディスプレイ装置１００３による表示のための情報を生成することができる。
【０１００】
用語「メモリ」、「記憶装置」及び「ディスク記憶装置」は、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ読み取り可能なフラッシュドライブ、コンピュータ読み取り可能なＲＡＭ又はＲＯＭ要素又はデジタル情報をエンコーディングするためのその他の任意の知られた手段の如き、任意のコンピュータ読み取り可能な媒体を包含するものである。用語「アプリケーションプログラム」、「アプリケーション」、「プログラム」、「コンピュータプログラム製品」又は「コンピュータソフトウエア製品」は、媒体が固定又はリムーバブルであれ、永久的又は消去可能であれ、又はその他のものであれ、コンピュータ読み取り可能な媒体にエンコードされ及び／又は記憶されたコンピュータ読み取り可能なプログラムからなる任意のコンピュータプログラム製品を包含するものである。例えば、図１２Ｂの概略ブロック図のブロック１１２２に示されるように、アプリケーション及びデータは、内部的又は外部的であれ、ディスク、ＲＡＭ、ＲＯＭ、他のリムーバブル又は固定の記憶装置に記憶され、又、当業分野にてよく知られた実施方法及び技法に従って、ダウンロード又はアップロードされるものである。本明細書に示されるように、本発明は、コンピュータ読み取り可能な媒体に記憶されたソフトウエア又はコンピュータプログラム製品の形をとることができ、又は、本発明は、アップロードされ又はダウンロードされ、又はＦＰＧＡ、ＲＯＭ又は他の電子的構造体に固定されるコンピュータプログラムコードの形式とすることもでき、又は、本発明は、このような方法を実施するための方法又はシステムの形をとることもできる。各場合において、本発明は、コンピュータ又はコンピュータシステムが、画像又はシーンにおけるピクセルに対するピクセル値を計算できるように動作でき、そのピクセル値は、ディスプレイ制御電気又は電子出力を生成して、最終的に、人間が知覚できる形にて画像の表示ができるようにし、及び／又は後での表示及び／又は処理のためにこのような画像（又はこのような画像を特定するデータ）の記憶ができるようにするため、グラフィックカード、ディスプレイコントローラ又はＬＣＤ及び／又はＣＲＴのようなディスプレイ要素の如き、従来の要素であってよいコンピュータグラフィックシステムの他の要素により使用することができる。
【０１０１】
コンピュータシステム１０００は、オペレータからの入力情報を受け取るためのキーボード１００２ａ及びマウス１００２ｂ、及びオペレータに対して出力情報を表示するためのビデオディスプレイドライブ１００３の如き特定のコンポーネットを含むものとして示されているのであるが、コンピュータシステム１０００は、図１１に示したようなものに加えて、又はそれらに代えて、種々なコンポーネントを含むことができることは、理解されよう。
【０１０２】
更に又、プロセッサモジュール１００１は、全体として参照符号１００５として示された１つ以上のネットワークポートを含むことができ、これらネットワークポートは、このコンピュータシステム１０００をコンピュータネットワークに接続する通信リンクに接続される。これらネットワークポートは、コンピュータシステム１０００が、そのネットワークにおける他のコンピュータシステム及び他のデバイスへ情報を送信したり、それらから情報を受信したりすることができるようにする。例えば、クライアント−サーバーパラダイムに従って組織された典型的なネットワークにおいては、そのネットワークにおける特定のコンピュータシステムは、他のクライアントコンピュータシステムによる処理のためのデータ及びプログラム（一般的には、「情報」）を記憶し、それにより、そのクライアントコンピュータシステムがその情報を都合良く共用できるようにするサーバーとして指定されている。特定のサーバーにより維持されている情報にアクセスする必要のあるクライアントコンピュータシステムは、サーバーがネットワークを通してそれに情報をダウンロードすることができるようにする。データを処理した後、クライアントコンピュータシステムは、その処理されたデータを記憶のためサーバーへと戻すこともできる。コンピュータシステム（前述したサーバー及びクライアントを含む）に加えて、ネットワークは、又、例えば、そのネットワークにおいて接続された種々なコンピュータシステムの間で共用されるような、プリンタ、ファクシミリ装置、デジタルオーディオ又はビデオ記憶装置及び分配装置等を含むこともできる。ネットワークにおいてコンピュータシステムを相互接続する通信リンクは、従来のように、それらコンピュータシステムの間に信号を搬送するためのワイヤ、光ファイバ又は他の媒体を含む任意の都合のよい情報搬送媒体を備えることができる。コンピュータシステムは、通信リンクを通して転送されるメッセージを用いて、ネットワークを通して情報を転送し、その各メッセージは、情報及びそのメッセージを受信すべき装置を識別する識別子を含むものである。
【０１０３】
図に示すコンピュータシステム１０００に加えて、本発明による方法、装置又はソフトウエア製品は、スタンドアローンであれ、ネットワーク接続であれ、ポータブルであれ、又は固定であれ、従来のＰＣ１１０２、ラップトップ１１０４、ハンドヘルド又はモバイルコンピュータ１１０６を含む、図１２Ａ及び図１２Ｂの実施例により示されたもの（例えば、ネットワークシステム１１００）の如き、広範囲に亘る従来のコンピューティング装置及びシステムのうちのいずれにおいても動作でき、又は、サーバー１１１０及び記憶装置１１１２を含むことのできるインターネット又は他のネットワーク１１０８を通して動作することもできる。
【０１０４】
従来のコンピュータソフトウエア及びハードウエアプラクティスと調和して、本発明に従ってコンフィギュレーションされたソフトウエアアプリケーションは、図１２Ａ及び図１２Ｂに示されたように、例えば、ＰＣ１１０２内で動作でき、この場合において、プログラム命令は、ＲＯＭ又はＣＤ−ＲＯＭ１１１６（図１２Ｂ）、磁気ディスク又は他の記憶装置１１２０から読み出され、又、ＣＰＵ１１１８による実行のためＲＡＭ１１１４へとロードされる。データは、従来のキーボード、スキャナ、マウス、デジタイジングタブレット又は他の要素１１０３を含む任意の知られた装置又は手段を介してシステムへと入力される。図１２Ｂに示されるように、図示の記憶装置１１２０は、リムーバブル記憶装置を含む。図１２Ｂに更に示されるように、アプリケーション及びデータ１１２２は、固定又はリムーバブル記憶装置、又はＲＯＭのうちのあるもの又は全てに置かれ、又はダウンロードされる。
【０１０５】
当業者には理解されるように、ここに説明した本発明の方法態様は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はＡＳＩＣ構成を使用してここに説明した処理を実施するために特に構成された特定用途向け集積回路（ＡＳＩＣ）の如きハードウエア要素にて実行することができる。種々な形式のＡＳＩＣが多くの製造者から入手できるのであるが、現在に入手できるＡＳＩＣは、本明細書に説明した機能を与えない。このような製造者としては、共にカリフォルニア州サンタクララにあるインテルコーポレーション及びＮＶＩＤＩＡコーポレーションがある。従来のＡＳＩＣ又は等価な集積回路の実際の半導体素子は、本発明の部分ではないので、ここでは、説明しない。
【０１０６】
当業者には理解されるように、ＡＳＩＣ又は他の従来の集積回路又は半導体素子は、前述した図１から図１０に示したような本発明の方法を実施するため、ここでより詳述したような本発明の教示を使用して、そのような仕方にてインプリメンテーションされる。
【０１０７】
当業者には理解されるように、本発明の方法態様は、ワークステーション又はＰＣのオペレーティングシステムの集約的コマンド及び本発明に従ってコンフィギュレーションされたコンピュータプログラム製品の元で動作する、ワークステーション及びパーソナルコンピュータ（ＰＣ）の如き、市販されているデジタル処理システム内で実行される。用語「コンピュータプログラム製品」は、コンピュータ読み取り可能な媒体にエンコードされた任意のセットのコンピュータ読み取り可能なプログラム命令を包含するものである。コンピュータ読み取り可能な媒体は、これらに限定するのではないが、ワークステーション、ＰＣ又は他のデジタル処理装置又はシステムに対してローカルなものであれ、リモートなものであれ、コンピュータハードディスク、コンピュータフロッピーディスク、コンピュータ読み取り可能なフラッシュドライブ、コンピュータ読み取り可能なＲＡＭ又はＲＯＭ要素、又はデジタル情報をエンコードし、記憶し又は与えるための任意の他の知られた手段を含む、任意の形式のコンピュータ読み取り可能な要素を包含する。種々な形式のコンピュータ読み取り可能な要素及び媒体が、コンピューティング技術においてよく知られており、これらの選択は、実施者に委ねられている。各場合において、本発明は、コンピュータシステムがピクセル値を計算できるように動作でき、ピクセル値は、ディスプレイ制御電子出力を生成するため、グラフィックカード又はディスプレイコントローラの如き従来の要素であってよいコンピュータシステムにおけるハードウエア要素により使用される。従来のグラフィックカード及びディスプレイコントローラは、コンピューティング技術においてよく知られており、必ずしも、本発明の部分ではなく、それらの選択は、実施者に委ねられている。
【０１０８】
前述の説明は、当業者が本発明を実施できるようにする詳細を含んでいるのであるが、この説明は、本質的に例示であり、本発明の教示による利点を有するようなそれらの多くの変更及び変形が当業者には明らかであろうことを認識されたい。従って、本発明は、特許請求の範囲によってのみ限定されるものであり且つ特許請求の範囲は、従来技術により許される限りにおいて広く解釈されるべきものとしようとしているものである。
【符号の説明】
【０１０９】
１０…シャドウボリューム生成モジュール、２０…ＢＶＨトラバーサルモジュール、３０…デジタル処理装置、２００…シーン、２０２…オクルーダー、２０４…光源、２０６…受け表面、２０８…受け表面の一部分、２０８’…受け表面の見える部分、２１０…可視フラスタム、２１０’…ビューイングフラスタム、２１２…カメラ、２１２’…カメラ、２１４…光領域、２１４’…光部分、２１６…影領域、２１６’…影部分、２２０…遮蔽区域（シャドウボリューム）、３００…オクルーダー（オープンメッシュ）、３０２…トワード表面、３０４…アウエイ表面、３０６…エッジ、３１０…光源、３１２…シャドウボリューム、３１４…シャドウボリューム、３５０…三角形の頂点配列、４００ａ…ソースコードリスト、４００ｂ…ソースコードリスト、４００ｃ…ソースコードリスト、５００…シーン、５０２…第１のオクルーダー、５０４…第２のオクルーダー、５０６…光源、５０８…カメラ、５１２ａ…線、５１２ｂ…線、５１４ａ…線（シャドウボリューム）、５１４ｂ…線（シャドウボリューム）、５１８ａ…線（ビューイングフラスタム）、５１８ｂ…線（ビューイングフラスタム）、５２０…第１の生成軸整列バウンディングボックス（ＡＡＢＢ）、５２２…第２の生成ＡＡＢＢ、６００ａ…シティーシーンクローズアップモデル、６００ｂ…モデル、１０００…コンピュータシステム、１００１…プロセッサモジュール、１００２…オペレータ入力要素、１００２ａ…キーボード、１００２ｂ…マウス、１００３…オペレータインターフェース要素及びビデオディスプレイ装置、１００４…スクリーン、１００５…ネットワークポート、１１００…ネットワークシステム、１１０２…ＰＣ、１１０３…キーボード／スキャナ／マウス／その他、１１０４…ラップトップコンピュータ、１１０６…ハンドヘルドコンピュータ、１１０８…インターネット／他のネットワーク、１１１０…サーバー、１１１２…記憶装置、１１１４…ＲＡＭ、１１１６…ＲＯＭ、１１１８…ＣＰＵ、１１２０…記憶装置（リムーバブル記憶装置を含む）、１１２２…アプリケーション／データ
【図１】
2010512582.tif 000003
【図２】
2010512582.tif 000004
【図３】
2010512582.tif 000005
【図４Ａ】
2010512582.tif 000006
【図４Ｂ】
2010512582.tif 000007
【図４Ｃ】
2010512582.tif 000008
【図５】
2010512582.tif 000009
【図６Ａ】
2010512582.tif 000010
【図６Ｂ】
2010512582.tif 000011
【図６Ｃ】
2010512582.tif 000012
【図７】
2010512582.tif 000013
【図８Ａ】
2010512582.tif 000014
【図８Ｂ】
2010512582.tif 000015
【図８Ｃ】
2010512582.tif 000016
【図９Ａ】
2010512582.tif 000017
【図９Ｂ】
2010512582.tif 000018
【図９Ｃ】
2010512582.tif 000019
【図９Ｄ】
2010512582.tif 000020
【図９Ｅ】
2010512582.tif 000021
【図１０Ａ】
2010512582.tif 000022
【図１０Ｂ】
2010512582.tif 000023
【図１１】
2010512582.tif 000024
【図１２Ａ】
2010512582.tif 000025
【図１２Ｂ】
2010512582.tif 000026
【国際調査報告】
2010512582.tif 000027