説明

アンビエント・オクルージョンを使用する写実的画像処理のためのシステム、方法、およびプログラム

【課題】アンビエント・オクルージョンを使用する写実的画像処理のための方法、コンピュータ・プログラム及びシステムを提供する。
【解決手段】シーン形状モデル及びオブジェクトを記述する複数のピクセル・データを含む、シーン・モデル・データを受け取る(505)。第1のピクセル・データを選択し、1次ピクセル色及び1次レイを生成する(515,520)。1次レイが交差したオブジェクト及び交点Pに基づき、表面法線N及び1次ヒット色を決定し、1次ピクセル色を修正する。交点P及び表面法線Nに基づき、アンビエント・オクルージョン(AO)レイを生成する。各AOレイ毎に、当該AOレイの方向Dを逆転させ、当該AOレイの原点Oをシーンの外部の点にセットする。もし、点Pに到達する前に、一のAOレイが一のオブジェクトと交差しなければ、当該AOレイを、AO計算に組み込み、評価し、1次ピクセル色の修正を行い、一の画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・グラフィックス及び写実的画像(Photorealistic image)の生成に係り、さらに詳細に説明すれば、アンビエント・オクルージョン(ambient occlusion:略称「AO」)を使用する改良された写実的画像処理のためのシステム及び方法に係る。
【背景技術】
【0002】
現代のコンピュータ・グラフィックス・システム及び方法は、ビデオ・ゲーム、フライト及び他のシミュレーション、動画及び他の多数のアプリケーションを含む、種々のアプリケーションにおいて使用するための高品質の画像を描画するように設計された種々の技術を含む。例えば、アニメーション・スタジオについては、今やレイ・トレーシング及び大域照明技術が、動画の製作及び特殊効果に不可欠な役割を果たしている。
【0003】
1つの共通アプローチは、レイ(ray)の階層的グループ又は「パケット」を使用し、これを階層的加速構造(HAS:hierarchical acceleration structure)に対してテストすることにより、例えば、観測点に到達しない形状のサブセットを考察の対象から除外できるようにすることである。通常のアプローチは、理論上は効率的であるが、アンビエント・オクルージョン(AO)レイのキャスティングは、しばしばキャッシュ及びローカル・ストアに著しい負担をかけ、不要な作業量を必要とする。
【発明の概要】
【発明が解決しようとする課題】
【0004】
従って、通常のシステム及び方法に関連する問題及び不都合のうちの少なくとも幾つかに対処する、写実的画像処理のためのシステム及び方法が要請されている。
【課題を解決するための手段】
【0005】
以下の要約は、本明細書に開示した実施形態に特有の新規な特徴のうちの幾つかの理解を容易にするために提供するものであって、これが完全な記述であることを意図していない。実施形態の種々の側面を十分に理解するためには、本明細書、請求項、図面及び要約書を全体として参照されたい。
【0006】
1つの実施形態では、シーン形状モデル及びシーン内に配置したオブジェクトを記述する複数のピクセル・データを含む、シーン・モデル・データを受け取る。複数のピクセル・データのうち第1のピクセル・データを選択する。第1のピクセル・データに基づき、1次ピクセル色及び1次レイを生成する。もし、1次レイがシーン内のオブジェクトと交差すれば、交点Pを決定する。交差したオブジェクト及び交点Pに基づき、表面法線Nを決定する。交点Pに基づき、1次ヒット色を決定する。1次ヒット色に基づき、1次ピクセル色を修正する。交点P及び表面法線Nに基づき、各々が一の方向Dを有する複数のアンビエント・オクルージョン(AO)レイを生成する。各AOレイごとに、当該AOレイの方向Dを逆転させ且つ当該AOレイの原点Oをシーンの外部の点にセットする。各AOレイを、その原点から交点Pに向かうようにシーン内へ進行させる。もし、交点Pに到達する前に、一のAOレイが一のオブジェクトと交差すれば、当該AOレイをアンビエント・オクルージョン計算から除外する。もし、交点Pに到達する前に、一のAOレイが一のオブジェクトと交差しなければ、当該AOレイをアンビエント・オクルージョン計算に組み込む。組み込まれたAOレイに基づき、アンビエント・オクルージョンを評価する。アンビエント・オクルージョン及び1次ヒット色に基づき、1次ピクセル色のシェーディングを行い、ピクセル・データ用の1次ピクセル色に基づき、一の画像を生成する。
【発明の効果】
【0007】
本発明は、他の方法及びシステムと比較して、多数の利点を提供する。例えば、本明細書に開示したグラフィック・エンジンは、制限されたローカル・ストレージを有するシステムにおいてさえ、改良されたレイ・トレーシング性能を提供することができる。また、本明細書に開示した実施形態は、所望の写実的品質の要件及びグラフィック・エンジンを具体化するために使用される特定のシステムに適合するようにスケーラブルな、アンビエント・オクルージョン性能を改良する。
【図面の簡単な説明】
【0008】
【図1】推奨実施形態に従った、コンピュータ・グラフィックス・システムを示すブロック図である。
【図2】推奨実施形態に従った、例示的なシーン内の1次レイのキャスティングを示すブロック図である。
【図3】推奨実施形態に従った、例示的なシーン内のアンビエント・オクルージョン・レイを示すブロック図である。
【図4】推奨実施形態に従った、例示的なシーン内のアンビエント・オクルージョンに対する改良されたアプローチの例を示すブロック図である。
【図5】推奨実施形態に従って実装することができる、改良されたアンビエント・オクルージョン方法の論理的な動作ステップを示す高水準のフローチャートである。
【図6】推奨実施形態に従って実装することができる、改良されたアンビエント・オクルージョン方法の論理的な動作ステップを示す高水準のフローチャートである。
【図7】推奨実施形態に従って実装することができる、改良されたアンビエント・オクルージョン方法の論理的な動作ステップを示す高水準のフローチャートである。
【図8】1つ以上の推奨実施形態を具体化するように構成することができる、例示的なコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【0009】
これらの非制限的な例で説明する特定の値及び構成は、変更することが可能であって、少なくとも1つの実施形態を説明するためにのみ引用され、本発明の範囲を制限することを意図していない。
【0010】
以下の説明では、本発明を完全に理解することができるように、多数の詳細事項を記述する。しかし、本発明は、そのような詳細事項なしでも実施することができる。他の場合には、不要な詳細事項を開示することによって本発明を不明瞭にしないように、周知の要素をブロック図等の形式で例示した。さらに、殆どの部分については、ネットワーク通信、電気−磁気シグナリング技術、ユーザ・インタフェース又は入力/出力技術等に関する詳細事項を省略した。というのは、そのような詳細事項は、本発明を完全に理解するのに必要であるとは考えられず、当分野では周知であると考えられるからである。
【0011】
本発明は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)又はハードウェア及びソフトウェアの両側面を組み合わせた実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明は、任意の有形的媒体内にコンピュータ使用可能プログラム・コードを具体化した、コンピュータ・プログラムの形式を取ることができる。
【0012】
1つ以上のコンピュータ使用可能又はコンピュータ可読媒体の任意の組み合わせを使用することができる。例えば、コンピュータ使用可能又はコンピュータ可読媒体は、電子、磁気、光学、電磁気、赤外線又は半導体式のシステム(若しくは装置)又は伝送媒体とすることができる。コンピュータ可読媒体のより特殊な例は、1つ以上の線を有する電気的な接続、フレキシブル・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、読み取り専用のCD−ROM、光ストレージ装置、インターネット又はイントラネットをサポートする伝送媒体、磁気ストレージ装置等を含むであろう。さらに、コンピュータ使用可能媒体又はコンピュータ可読媒体を、紙又は他の適切な媒体とすることもできる。すなわち、紙又は他の適切な媒体上に印刷されたプログラムを、例えば、光学式スキャンを介して捕捉し、コンパイルし、解釈し、又は必要に応じて適宜処理した後、その結果をコンピュータ・メモリに格納することができるからである。本明細書の文脈では、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム等に関連して又はこれらによって使用するためのプログラムを保持し、格納し、通信し、伝搬し、移送することができる、任意の媒体とすることができる。コンピュータ使用可能媒体は、伝搬されるデータ信号の形式を有することもできるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ使用可能プログラム・コードを具体化することができる。コンピュータ使用可能プログラム・コードは、無線、有線、光ファイバ・ケーブル、RF等を含む、適切な任意の媒体を使用して伝送することができる。
【0013】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java(登録商標)、Smalltalk、C++等のようなオブジェクト指向プログラミング言語及び「C」プログラミング言語のような通常の手続き的プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書くことができる。このプログラム・コードは、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行することができ、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行することができ、或いは遠隔コンピュータ又はサーバ上で完全に実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続することができ、或いはその接続を(例えば、インターネット・サービス・プロバイダを使用するインターネットを通して)外部コンピュータに行うことができる。
【0014】
以下では、本発明の実施形態に従った、方法、装置(システム)及びコンピュータ・プログラムのフローチャート又はブロック図を参照して、本発明を説明する。これらのフローチャート又はブロック図の各ブロック、複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、当該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサ上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能を実装するための手段を作成することを目的として、一のマシンを生産することができる。
【0015】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、当該コンピュータ可読媒体内に格納された諸命令が、フローチャート又はブロック図のブロックで指定された機能を実装する命令手段を含む製品を生産することを目的として、コンピュータ又は他のプログラム可能なデータ処理装置に対し特定の態様で機能するように指示することができる。
【0016】
また、これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能なデータ処理装置にロードすると、当該コンピュータ又は他のプログラム可能なデータ処理装置上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能を実装するためのプロセスを提供することを目的として、一のコンピュータ実装方法を生成するように当該コンピュータ又は他のプログラム可能なデータ処理装置上で一連の動作ステップを実行させることができる。
【0017】
プログラム・コードを格納及び/又は実行するのに適したデータ処理システムは、システム・バスを通してメモリ要素に直接的又は間接的に接続された少なくとも1つのプロセッサを含む。これらのメモリ要素は、プログラム・コードの実行中に使用されるローカル・メモリ、バルク記憶装置、プログラム・コードの実行中にバルク記憶装置からの検索回数を減少させるために少なくとも或るプログラム・コードの一時的記憶領域を提供するキャッシュ・メモリを含むことができる。
【0018】
I/O装置(キーボード、ディスプレイ、ポインティング装置等を含む)は、システムに対し直接的に又は介在するI/Oコントローラを通して結合することができる。また、ネットワーク・アダプタをデータ処理システムに対し結合することもできる。そのようにすると、当該データ処理システムは、介在する専用又は公衆ネットワークを通して、他のデータ処理システム、遠隔プリンタ又はストレージに結合されるようになる。ネットワーク・アダプタの例には、モデム、ケーブル・モデム及びイーサネット(登録商標)・カード等がある。
【0019】
以下、図面を参照して説明する。図1は、本発明の推奨実施形態に従った、アンビエント・オクルージョンを使用する改良された写実的画像処理のためのシステム100の幾つかのコンポーネントを示す高水準のブロック図である。一般に、システム100は、アンビエント・オクルージョンを使用して、写実的画像処理を実行し、グラフィック・エンジン102を含む。
【0020】
例えば、多数の写実的画像処理技術は、光の想像上のレイが光源からシーンを通して進行する際のパスをトレースすることに注目する。「レイ・キャスティング」では、シーン内の各ピクセルごとに、グラフィックス・システムは、選択された観測点からシーンを通して選択された光源に進行する想像上のレイをトレースし、当該レイが光源に進行する途中でシーン内のオブジェクトと交差するか否かに基づき、ピクセル色、シェーディング及び他の要因を更新する。このように、グラフィックス・システムは、シーン内のオブジェクトが観測点に対し可視的である(可視性)か否か、そして光源から到来する光が当該オブジェクトに当たることをシーン内の他のオブジェクトが阻止する(直接シャドウ)か否を速やかに決定することができる。そのため、グラフィックス・システムは、3次元シーンを、例えばコンピュータのスクリーンに適切な2次元画像に描画することができる。本明細書において、「レイ・キャスティング」は、可視性及び直接シャドウの計算のためにレイをトレースすることを意味する。
【0021】
「レイ・トレーシング」、特にWhitted-style のレイ・トレーシングでは、トレース中のレイがシーン内のオブジェクトと交差する場合、グラフィックス・システムは、3つの追加のタイプのレイ(すなわち、その原点がトレース中のレイとオブジェクトの交点である「2次レイ」、反射レイ、屈折レイ及びシャドウ・レイ)の1つ以上を生成する。「反射」レイは、交点から元のレイの正反射パスの方向に進行する。もし、反射レイが他のオブジェクトと交差すれば、当該反射されたオブジェクトは、最初のオブジェクト上に当該反射されたオブジェクトのミラー画像を示すことによって、交点を表すピクセルに影響する。
【0022】
もし、元のトレース中のレイが透明オブジェクトと交差すれば、「屈折」レイは、交点から元のレイの屈折パスの方向に進行し、当該オブジェクトを通して進行することができる。もし、屈折レイが他のオブジェクトと交差すれば、グラフィックス・システムは、交点を表すピクセルを更新する。もし、当該オブジェクトが光源と向かい合っていれば、「シャドウ」レイは、交点から光源への直線パスをトレースする。もし、シャドウ・レイが不透明オブジェクトと交差すれば、当該不透明オブジェクトは、光源から交点に到来する光を阻止し、その結果、グラフィックス・システムは、交点を表すピクセルを更新する。
【0023】
Whitted-styleの2次レイに加えて、代表的なグラフィックス・システムは、描画されるシーンの写実性を強化するために、他の多数のシーン操作を実行することができる。例えば、「大域照明」(シーンに対し間接照明効果を追加する技術の総称)は、シーン照明の現実性を改良することにより、シーンに対し追加的な現実性を加える。大域照明技術は資源集約的であることが多いので、幾つかの代表的なグラフィックス・システムは、大域照明をシミュレートするためにアンビエント・オクルージョンを使用する。一般に、通常の「アンビエント・オクルージョン」は、1次及び2次の交点から複数のレイをキャストし、他のオブジェクト及び表面と交差するサンプル・レイの数に基づき、カバレッジ比率を計算する。
【0024】
アンビエント・オクルージョン及びレイ・トレーシングの2次レイは、レイ・キャスティングにおいて利用可能でない詳細事項を追加し、その結果、より写実的な画像に帰着する。しかし、これらの追加レイは、追加的な計算及びストレージ資源を必要とする。そのような追加的な計算及びストレージの要件は、対話型のレイ・トレーシングをしばしば非実用的又は不可能にした。本明細書に開示する新規な実施形態は、これらの制限のうちの幾つかを克服する。
【0025】
以下で詳述するように、システム100は、レイの階層的グループ又は「パケット」を使用し、これを階層的加速構造(HAS)に対してテストすることにより、例えば、観測点に到達しない形状のサブセットを考察の対象から除外するように構成することができる。一般に、HASは、或る順序で配列された複数のノードから構成されるデータ構造であり、シーン形状に関する情報を保持するために使用される。そのような情報は、特に、特定のレイ・パスがシーン内のオブジェクトと交差するか否かを評価するために使用することができる。例示的なHASは、ユニフォーム・グリッド、バイナリ・ツリー、kdツリー、オクトツリー及びバウンディング・ボリューム階層(BVH)を含む。レイの階層的パケットを使用し且つ加速構造を通してこれらのパケットをトラバースすると、容認可能な精度を維持しつつ、必要とされる動作の数を著しく減少させることができる。
【0026】
実際には、アンビエント・オクルージョン積分を解決するのに有用な種々の代表的な技術が存在する。最も直截的なアプローチの1つは、交点Pからレイをキャストするためにモンテカルロ又はサンプリング方法を使用することにより、交点Pにおける可視性関数を近似し、次いでシーン形状内の他のオブジェクトとの交差をテストするというものである。交点Pにおけるアンビエント露出は、交差しなかったアンビエント・レイの数を、キャストされたレイの総数で除算することによって評価される。
【0027】
HASの代表的な効率的実装は、3次元シーンを前方から後方に、交点からシーン境界又はオブジェクト交点へトラバースすることにより、アンビエント・オクルージョン(AO)レイを3次元シーンと交差させ、その結果、遮蔽される加速構造の部分の不要なトラバーサルを回避することができる。例えば、1つのアプローチでは、当該階層内の各レベルは、当該レベルにおける子ノードのための最大間隔の次元を格納する。実行時には、グラフィック・エンジンは、最大間隔をレイ方向と組み合わせることにより、最初に訪れるべき子ノードを選択する。
【0028】
通常のアプローチは、理論上は効率的であるが、交点PからのAOレイのキャスティングは、しばしばキャッシュ及びローカル・ストアに著しい負担をかけ、不要な作業量を必要とする。特に、交点Pがシーン内に存在し、そして前方から後方へのトラバーサルの性質のために、AOレイが交点Pの前にあるシーン形状との交差を開始することができる前に、グラフィック・エンジンが、HASの遮蔽された部分を調べることがあり得る。従って、以下で詳述するように、システム100は、キャッシュ及びローカル・ストアに関する負担を減少させつつ、HASをトラバースするための機構を提供する。
【0029】
広義には、システム100が提供するグラフィックス・システムは、特定シーンのための写実的アンビエント・オクルージョン・レベルを当該グラフィックス・システムによって決定するプロセスを改良することを通して、写実的画像処理の品質を著しく改良する。本明細書に開示した実施形態は、一般的には、レイ・トレーシングの性能を改良し、具体的には、アンビエント・オクルージョン操作を改良する。さらに、本明細書に開示した新規なグラフィック・エンジン及び実施形態は、制限されたローカル・ストレージを有するシステムにおいてさえ、レイ・トレーシングの性能を改良することができる。従って、本明細書に開示した実施形態は、ハイエンド・システム上の性能を改良し、そして当該実施形態がなければグラフィックス・ハードウェアの能力を超えるであろうグラフィックス動作の容認可能な性能を使用可能にすることができる。
【0030】
具体的には、グラフィック・エンジン102は、シーン・モデル入力104を受け取り、これを処理して複数のピクセル色データ及び他の情報を生成する。グラフィック・エンジン102は、生成された情報をディスプレイ・サブシステム106へ渡し、当該サブシステム106は、生成された情報を使用してディスプレイ108上に画像を表示する。代表的なシーン・モデル入力104は、複数のピクセル・データ及びシーン内のオブジェクトの配置を記述するシーン形状モデルを含む。代表的な動画は、何千もの静止画像を含むことができ、その各々はシーン内のオブジェクトの配置である。
【0031】
一般に、複数の「ピクセル・データ」は、シーン内のオブジェクトをディスプレイ・スクリーンのような参照フレームと相関させて、この参照フレームからシーンを記述するピクセルの数に有限の上界を置く。シーン・モデル入力内で使用される各ピクセルは、関連するピクセル・データを有する。1つの実施形態では、ピクセル・データは、他のピクセルへの当該ピクセルの相対的位置を指示する当該ピクセル用の座標参照と、後述するように、グラフィック・エンジン102がピクセル・データを処理する過程で修正する予備ピクセル色とを含む。代替実施形態では、ピクセル・データは、予備色を含んでおらず、以下で詳述する処理に基づき、グラフィック・エンジン102が、複数のピクセル・データの各々に対しピクセル色を追加する。
【0032】
図示の実施形態では、グラフィック・エンジン102は、入力/出力(I/O)モジュール120を含む。一般に、I/Oモジュール120は、通常のI/Oインタフェースである。動作中、I/Oモジュール120は、シーン・モデル入力104を受け取る。また、I/Oモジュール120は、ディスプレイ・サブシステム106に結合する。ディスプレイ・サブシステム106は、通常のディスプレイ・サブシステムであり、グラフィック・エンジン102から処理済みのシーン・モデル・データを受け取り、当該処理済みのシーン・モデル・データに基づき、ディスプレイ108上に画像を表示するように構成される。
【0033】
図示の実施形態では、グラフィック・エンジン102は、SPU(synergistic processing unit)130及びメモリ140を含む。SPU 130は、後述するように修正される部分を除くと、通常の処理ユニット(PU)である。1つの実施形態では、SPU 130は、Cell(商標)プロセッサである。代替実施形態では、SPU 130は、Broadband Engine(商標)プロセッサである。メモリ140は、後述するように修正される部分を除くと、通常のメモリ・モジュール140である。一般に、動作中、グラフィック・エンジン102は、未処理のシーン・モデル・データ104を受け取り、当該未処理のシーン・モデル・データ104をメモリ140内に格納する。SPU 130は、シーン・モデル・データ104を処理することにより、画像を表示するために使用すべきディスプレイ・サブシステム106に適切な処理済みのシーン・モデル・データを生成する。
【0034】
具体的には、メモリ140は、モデル・データ142を含む。モデル・データ142は、種々の処理段階で、受け取られたシーン・モデル・データを参照する。1つの実施形態では、モデル・データ142は、HASとして配列される。1つの実施形態では、モデル・データ142は、バウンディング・ボリューム階層(BVH)として配列される。
【0035】
SPU130は描画モジュール132及びローカル・ストア134を含む。描画モジュール132は、以下で詳述するように、シーン・モデル・データを処理するように構成された論理ブロックである。ローカル・ストア134は、後述するように改変される部分を除くと、通常のPUのローカル・ストアである。一般に、SPU 130は、メモリ140からモデル・データ142の諸部分を検索し、検索済みの部分をローカル・ストア134内に格納する。1つの実施形態では、検索済みの各部分は、前記複数のピクセル・データのうちの単一のピクセル・データである。以下で詳述するように、描画モジュール132は、シーン・モデル・データ104の検索済みの諸部分を処理し、ピクセル色を追加するか又は既存のピクセル色を修正し、修正済みのピクセル・データをモデル・データ142に戻す。
【0036】
具体的には、グラフィック・エンジン102は、シーン・モデル・データ104を受け取り、本明細書に開示した新規なアンビエント・オクルージョン技術を実行する。図2は、例示的なシーン200内の1次レイ・キャスティングを示す。シーン200は、複数のオブジェクト210及び一の表面220を含む。観測点232からキャストされる1次レイ250は、交点240において表面220と交差する。表面法線230は、(交点240において)表面220に垂直なベクトルの方向を指示する。
【0037】
図3は、観測点332を有する例示的なシーン300における、AOレイのキャスティングを示す。複数のAOレイ350は、表面320の交点340から外方に進行する。AOレイ350のうちの幾つかは、一のオブジェクト310と交差するであろう。
【0038】
図4は、観測点432及びシーン境界402を有する例示的なシーン400における、推奨実施形態に従った改良されたAOレイの処理を示す。複数のAOレイ450は、シーン境界402の外部にある諸原点から進行する。一般に、シーン境界402は、グラフィック・エンジン102に既知の、シーン・モデル・データの限界を表す。
【0039】
各AOレイ450は、シーン境界402の外部にあるその原点から表面420の交点440に向かって直線状に進行する。幾つかの実施形態では、グラフィック・エンジン102は、AOレイ450をパケット460へグループ化する。図示のように、原点452a、452b及び456を有するAOレイ450は、交点440に向かう途中でシーン400内のオブジェクトと交差しない。従って、これらのレイは、後続のアンビエント・オクルージョン計算に組み込まれる。
【0040】
図示のように、原点454a及び454bを有するAOレイ450は、交点440に向かう途中でオブジェクト410aと交差する。そのため、表面420は、オブジェクト410aによって部分的に遮蔽され、従ってこれらのレイは、後続のアンビエント・オクルージョン計算に組み込まれない。
【0041】
1つの実施形態では、グラフィック・エンジン102は、アンビエント・オクルージョン計算において全てのAOレイを考慮し、アンビエント・オクルージョン計算に「組み込まれた」AOレイの数を、アンビエント・オクルージョン計算に「組み込まれた」AOレイ及びアンビエント・オクルージョン計算から「除外された」AOレイの総数で除算することによって、カバレッジ比率を生成する。代替実施形態では、グラフィック・エンジン102は、アンビエント・オクルージョン計算及び/又はシェーディング計算に「組み込まれた」AOレイだけを考慮する。
【0042】
図5は、アンビエント・オクルージョンを使用する、写実的画像処理方法の1つの実施形態を示す。具体的には、図5は、例えば、図1のシステム100によって実行される論理的な動作ステップを示す、高水準のフローチャート500である。一般に、図1のグラフィック・エンジン102のようなグラフィック・エンジンは、特段の指摘がない限り、この方法の諸ステップを実行する。
【0043】
本プロセスが開始すると、グラフィック・エンジン102は、シーン形状モデル及び複数のピクセル・データを含む、シーン・モデル・データを受け取る(ブロック505)。1つの実施形態では、複数のピクセル・データのうち1つ以上は、予備ピクセル色を含む。次に、グラフィック・エンジン102は、現ピクセル・データとして複数のピクセル・データのうちの1つを選択する(ブロック510)。
【0044】
次に、グラフィック・エンジン102は、現ピクセル・データに基づき、1次ピクセル色を生成する(ブロック515)。1つの実施形態では、グラフィック・エンジン102は、予備ピクセル色に基づき、1次ピクセル色を生成する。次に、グラフィック・エンジン102は、現ピクセル・データに基づき、1次レイを生成する(ブロック520)。説明を明瞭にするため、図示の実施形態では、グラフィック・エンジン102は、1つのピクセル当たり1つの1次レイを生成する。代替実施形態では、グラフィック・エンジン102は、1つのピクセル当たり複数の1次レイを生成し、各1次レイごとに後述するステップの1つ以上を実行する。
【0045】
次に、グラフィック・エンジン102は、シーン形状モデルに基づき、1次レイがシーン内のオブジェクトと交差するか否かを決定する(ブロック525)。もし、1次レイがシーン内のオブジェクトと交差すれば(ブロック525)、本プロセスは、YES枝路に沿ってブロック530に継続する。
【0046】
次に、グラフィック・エンジン102は、1次レイ及びオブジェクトの交差に基づき、交点Pを決定する(ブロック530)。次に、グラフィック・エンジン102は、1次レイ及びオブジェクトの交差に基づき、表面法線Nを決定する(ブロック535)。
【0047】
次に、グラフィック・エンジン102は、1次レイ及びオブジェクトの交差に基づき、1次ヒット色を決定する(ブロック540)。次に、グラフィック・エンジン102は、1次ヒット色に基づき、1次ピクセル色を修正する(ブロック545)。本プロセスは、図6のマーカ「A」に継続する。
【0048】
図6は、アンビエント・オクルージョンを使用する、写実的画像処理方法の1つの実施形態を示す。具体的には、図6は、例えば、図1のシステム100によって実行される論理的な動作ステップを示す、高水準のフローチャート600である。一般に、図1のグラフィック・エンジン102のようなグラフィック・エンジンは、特段の指摘がない限り、この方法の諸ステップを実行する。
【0049】
本プロセスは、マーカ「A」からブロック605に継続する。グラフィック・エンジン102は、交点P及び表面法線Nに基づき、各々が一のレイ方向を有する複数のアンビエント・オクルージョン(AO)レイを生成する(ブロック605)。
【0050】
次に、グラフィック・エンジン102は、AOレイをパケットへグループ化する(ブロック610)。次に、グラフィック・エンジン102は、処理すべきAOレイ/パケットが存在するか否かを決定する(ブロック615)。最初の実行時には、処理すべき少なくとも1つのAOレイが存在するであろう。もし、処理すべきAOレイ/パケットが存在すれば(ブロック615)、本プロセスは、YES枝路に沿ってブロック620に継続する。
【0051】
次に、グラフィック・エンジン102は、現AOレイ/パケットとして少なくとも1つのAOレイ/パケットのうちの1つを選択する(ブロック620)。次に、グラフィック・エンジン102は、現AOレイ(又は現パケット内の各AOレイ)の方向を逆転させる(ブロック625)。次に、グラフィック・エンジン102は、現AOレイの原点を交点Pから変更し、現AOレイの元の方向に沿って、シーン境界の外部にあることが知られている点に、原点Oをセットする(ブロック630)。
【0052】
次に、グラフィック・エンジン102は、最大のAOレイ・トラバーサルをセットする(ブロック635)。1つの実施形態では、最大レイ・トラバーサルは、原点O及び交点Pの間のシーン内距離を表す。代替実施形態では、最大レイ・トラバーサルは、HASにおける、シーン境界及び交点Pの間のノードの数を表す。
【0053】
次に、グラフィック・エンジン102は、現AOレイを、当該AOレイの方向に沿って、その原点OからHASの第1のノードに進行させる(ブロック640)。次に、グラフィック・エンジン102は、現AOレイがシーン内のオブジェクトにヒットするか否かを決定する(ブロック645)。もし、現AOレイがシーン内のオブジェクトにヒットしていれば(ブロック645)、本プロセスは、YES枝路に沿ってブロック650に継続する。グラフィック・エンジン102は、現AOレイを除外し(ブロック650)、そして本プロセスは、マーカ「B」を介してブロック615に戻り、そこでグラフィック・エンジン102は、処理すべき追加のAOレイ/パケットが存在するか否かを決定する。
【0054】
もし、現AOレイが(現ノードにおける)シーン内のオブジェクトにヒットしていなければ(ブロック645)、本プロセスは、NO枝路に沿ってブロック655に継続し、そこでグラフィック・エンジン102は、現AOレイが交点Pに到達したか否かを決定する。もし、現AOレイが交点Pに到達していれば(ブロック655)、本プロセスは、YES枝路に沿ってブロック660に継続する。
【0055】
1つの実施形態では、ブロック655において、グラフィック・エンジン102は、現AOレイがその最大トラバーサル距離を進行したか否かを決定し、そうであれば、交点Pに到達したとして現AOレイをカウントする。次に、グラフィック・エンジン102は、現AOレイを組み込み(ブロック660)、そして本プロセスは、マーカ「B」を介してブロック615に戻り、そこでグラフィック・エンジン102は、処理すべき追加のAOレイ/パケットが存在するか否かを決定する。
【0056】
もし、現AOレイが交点Pに到達していなければ(ブロック655)、本プロセスは、NO枝路に沿ってブロック665に継続する。グラフィック・エンジン102は、次のHASノードを現HASノードとして選択し(ブロック665)、そして本プロセスは、ブロック640に戻り、そこでグラフィック・エンジン102は、現AOレイを現HASノードに進行させる。
【0057】
従って、ブロック640〜665に示すように、グラフィック・エンジン102は、各AOレイを、その原点から交点Pに向かうようにシーン内へ進行させる。もし、このAOレイが交点Pに向かう途中で一のオブジェクトにヒットすれば、グラフィック・エンジン102は、当該AOレイを除外し、処理のために次のAOレイを選択する。一方、このAOレイが交点Pに向かう途中で一のオブジェクトにヒットしなければ、グラフィック・エンジン102は、当該AOレイを組み込み、処理のために次のAOレイを選択する。
【0058】
もし、ブロック615において、処理すべき(現1次レイ交点用の)AOレイ/パケットがそれ以上存在しなければ、本プロセスは、NO枝路に沿って図7のマーカ「C」に継続する。
【0059】
図7は、アンビエント・オクルージョンを使用する、写実的画像処理方法の1つの実施形態を示す。具体的には、図7は、例えば、図1のシステム100によって実行される論理的な動作ステップを示す、高水準のフローチャート700である。一般に、図1のグラフィック・エンジン102のようなグラフィック・エンジンは、特段の指摘がない限り、この方法の諸ステップを実行する。
【0060】
本プロセスは、マーカ「C」からブロック705に継続し、そこでグラフィック・エンジン102は、組み込まれたAOレイに基づき、現ピクセル用のAOカバレッジを計算する。代替実施形態では、グラフィック・エンジン102は、組み込まれたAOレイ及び除外されたAOレイの両方に基づき、現ピクセル用のAOカバレッジを計算する。
【0061】
次に、グラフィック・エンジン102は、計算したAOカバレッジに基づき、1次ピクセル色を修正する(ブロック710)。次に、グラフィック・エンジン102は、処理すべき追加のピクセル及び/又はピクセル・データが存在するか否かを決定する(ブロック715)。もし、処理すべき追加のピクセルが存在すれば(ブロック715)、本プロセスは、YES枝路に沿ってマーカ「D」から図5のブロック510に戻り、そこでグラフィック・エンジン102は、次のピクセル・データを現ピクセル・データとして選択し、そして本プロセスは、前述のように継続する。
【0062】
もし、1次レイがシーン内のオブジェクトと交差していなければ(ブロック525)、本プロセスは、NO枝路に沿ってマーカ「E」から前述のブロック715に継続する。次に、グラフィック・エンジン102は、複数のピクセル・データを有するシーン・モデル・データを格納する(ブロック720)。次に、ディスプレイ・サブシステム106は、複数のピクセル・データに基づき、ディスプレイ用の画像を生成する(ブロック725)。
【0063】
従って、本明細書に開示した実施形態は、他の方法及びシステムと比較して、多数の利点を提供する。例えば、本明細書に開示したグラフィック・エンジンは、制限されたローカル・ストレージを有するシステムにおいてさえ、改良されたレイ・トレーシング性能を提供することができる。また、本明細書に開示した実施形態は、所望の写実的品質の要件及びグラフィック・エンジンを具体化するために使用される特定のシステムに適合するようにスケーラブルな、アンビエント・オクルージョン性能を改良する。
【0064】
前述のように、本明細書に開示した1つ以上の実施形態は、コンピュータ・システムにおいて実施又は具体化することができる。一般に、本明細書において、「コンピュータ」という用語は、任意の自動計算機械を指す。従って、「コンピュータ」という用語は、ラップトップ、パーソナル・コンピュータ、ミニコンピュータ及びメインフレームのような汎用計算機だけでなく、携帯情報端末(PDA)、ネットワーク対応のハンドヘルド装置、インターネット又はネットワーク対応の携帯電話等のような装置も含む。図8は、本明細書に開示した実施形態の1つ以上を実施するのに使用することができる、例示的なコンピュータ・システムの詳細を示すブロック図である。
【0065】
具体的には、図8は、コンピュータ・システム800を示す。コンピュータ・システム800は、コンピュータ802を含む。コンピュータ802は、通常のコンピュータであり、少なくとも1つのプロセッサ810を含む。プロセッサ810は、通常のコンピュータ・プロセッサであり、シングル−コア、デュアル−コア、中央処理ユニット(PU)、SPU(synergistic processing unit)、付加PU又は他の適切なプロセッサを含むことができる。
【0066】
プロセッサ810は、システム・バス812に結合する。システム・バス812は、通常のシステム・バスである。図示のように、コンピュータ802の種々のコンポーネントは、システム・バス812に結合する。例えば、コンピュータ802が含むメモリ820は、システム・バス812を通してプロセッサ810に結合する。メモリ820は、通常の主メモリであり、例えば、ランダム・アクセス・メモリ(RAM)を含むことができる。一般に、メモリ820は、アプリケーション822、オペレーティング・システム824及びアクセス機能826を格納する。
【0067】
一般に、アプリケーション822は、通常のソフトウェア・プログラム・アプリケーションであり、任意の数の代表的なプログラムに加えて、本発明の1つ以上の実施形態を組み込んだコンピュータ・プログラムを含むことができる。オペレーティング・システム824は、通常のオペレーティング・システムであり、例えば、UNIX(登録商標)、AIX(商標)、Linux(登録商標)、マイクロソフト社のウィンドウズ(登録商標)、MacOS(商標)等を含むことができる。アクセス機能826は、ネットワーキング機能を含む通常のアクセス機能であり、オペレーティング・システム824内に含めることができる。
【0068】
また、コンピュータ802は、ストレージ830を含む。一般に、ストレージ830は、データを格納するための通常の装置である。図示のように、ストレージ830は、ハード・ディスク832、フラッシュ又は他の揮発性メモリ834及び/又は光ストレージ装置836を含むことができる。
【0069】
I/Oインタフェース840も、システム・バス812に結合する。I/Oインタフェース840は、通常のインタフェースである。図示のように、I/Oインタフェース840は、コンピュータ802の外部にある装置に結合する。具体的には、I/Oインタフェース840は、ユーザ入力装置842及びディスプレイ装置844に結合する。入力装置842は、通常の入力装置であり、例えば、マウス、キーボード、数字キーパッド、タッチ・スクリーン、マイクロホン、ウェッブカメラ等を含むことができる。ディスプレイ装置844は、通常のディスプレイ装置であり、例えば、モニタを含むことができる、LCDディスプレイ、GUIスクリーン、テキスト・スクリーン、タッチ・スクリーン、点字ディスプレイ等を含むことができる。
【0070】
ネットワーク・アダプタ850も、システム・バス812に結合する。ネットワーク・アダプタ850は、通常のネットワーク・アダプタであり、例えば、無線通信、イーサネット(登録商標)、LAN、WAN又は他の適切なアダプタを含むことができる。図示のように、ネットワーク・アダプタ850は、コンピュータ802を他のコンピュータ及び装置852に結合することができる。他のコンピュータ及び装置852は、ネットワーク環境内で一般に使用される通常のコンピュータ及び装置である。
【0071】
前述のフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能な命令から成る、モジュール、セグメント又はコードの部分を表すことができる。幾つかの代替実装では、ブロック内に表記した機能は、図面に示す順序とは異なる順序で生じることができる。例えば、図面に順次に示した2つのブロックは、それらの機能性に依存して、実質的に同時に実行することができ、或いは逆の順序で実行することもできる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる。
【0072】
前述の及び他の特徴及び機能の変形又はそれらの代替構成は、望ましくは、他の多くの異なるシステム又はアプリケーションへ組み合わせることができる。さらに、現に予測されていない代替、修正、変形又は改良が、その後に当業者によってなされることが可能であろうが、本願の請求項は、これらもその範囲内に包含することを意図する。
【符号の説明】
【0073】
100・・・システム
102・・・グラフィック・エンジン
104・・・シーン・モデル入力
106・・・ディスプレイ・サブシステム
108・・・ディスプレイ
120・・・I/Oモジュール
130・・・SPU(synergistic processing unit)
132・・・描画モジュール
134・・・ローカル・ストア
140・・・メモリ
142・・・モデル・データ
200、300、400・・・シーン
210、310、410・・・オブジェクト
220、320、420・・・表面
230・・・表面法線
232、332、432・・・観測点
240、340、440・・・交点
250、350、450・・・AOレイ
402・・・シーン境界
410a・・・オブジェクト
452a、452b・・・原点
454a、454b・・・原点
456・・・原点
460・・・パケット

【特許請求の範囲】
【請求項1】
画像を生成するための方法であって、
シーン形状モデル及びシーン内に配置されたオブジェクトを記述する複数のピクセル・データを含む、シーン・モデル・データを受け取るステップと、
前記複数のピクセル・データのうち第1のピクセル・データを選択するステップと、
前記第1のピクセル・データに基づき、1次ピクセル色を生成するステップと、
前記第1のピクセル・データに基づき、1次レイを生成するステップと、
前記1次レイが前記シーン内のオブジェクトと交差するか否かを決定するステップと、
前記1次レイが前記シーン内のオブジェクトと交差する場合は、交点Pを決定するステップと、
前記交差したオブジェクト及び前記交点Pに基づき、表面法線Nを決定するステップと、
前記交点Pに基づき、1次ヒット色を決定するステップと、
前記1次ヒット色に基づき、前記1次ピクセル色を修正するステップと、
前記交点P及び前記表面法線Nに基づき、各々が一の方向Dを有する複数のアンビエント・オクルージョン(AO)レイを生成するステップと、
各AOレイごとに、当該AOレイの方向Dを逆転させ且つ当該AOレイの原点Oを前記シーンの外部の点にセットするステップと、
各AOレイを、当該AOレイの原点から前記交点Pに向かうように前記シーン内へ進行させるステップと、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差する場合は、当該AOレイをアンビエント・オクルージョン計算から除外するステップと、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差しない場合は、当該AOレイをアンビエント・オクルージョン計算に組み込むステップと、
組み込まれたAOレイに基づき、アンビエント・オクルージョンを評価するステップと、
前記アンビエント・オクルージョン及び前記1次ヒット色に基づき、前記1次ピクセル色のシェーディングを行うステップと、
前記ピクセル・データ用の前記1次ピクセル色に基づき、一の画像を生成するステップとを含む、方法。
【請求項2】
各AOレイごとに最大トラバーサル距離をセットするステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記トラバーサル距離が、前記AOレイの原点と前記交点Pの間の距離である、請求項2に記載の方法。
【請求項4】
前記シーン形状モデルを、複数のノードを含む階層的加速構造(HAS)へ編成するステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記HASがkdツリーである、請求項4に記載の方法。
【請求項6】
前記HASがバウンディング・ボリューム階層である、請求項4に記載の方法。
【請求項7】
各AOレイを進行させる前記ステップが、前記HASをノードからノードへトラバースするステップを含む、請求項4に記載の方法。
【請求項8】
前記複数のAOレイをパケットへグループ化するステップをさらに含む、請求項1に記載の方法。
【請求項9】
画像を生成するためのプログラムであって、
シーン形状モデル及びシーン内に配置されたオブジェクトを記述する複数のピクセル・データを含む、シーン・モデル・データを受け取るステップと、
前記複数のピクセル・データのうち第1のピクセル・データを選択するステップと、
前記第1のピクセル・データに基づき、1次ピクセル色を生成するステップと、
前記第1のピクセル・データに基づき、1次レイを生成するステップと、
前記1次レイが前記シーン内のオブジェクトと交差するか否かを決定するステップと、
前記1次レイが前記シーン内のオブジェクトと交差する場合は、交点Pを決定するステップと、
前記交差したオブジェクト及び前記交点Pに基づき、表面法線Nを決定するステップと、
前記交点Pに基づき、1次ヒット色を決定するステップと、
前記1次ヒット色に基づき、前記1次ピクセル色を修正するステップと、
前記交点P及び前記表面法線Nに基づき、各々が一の方向Dを有する複数のアンビエント・オクルージョン(AO)レイを生成するステップと、
各AOレイごとに、当該AOレイの方向Dを逆転させ且つ当該AOレイの原点Oを前記シーンの外部の点にセットするステップと、
各AOレイを、当該AOレイの原点から前記交点Pに向かうように前記シーン内へ進行させるステップと、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差する場合は、当該AOレイをアンビエント・オクルージョン計算から除外するステップと、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差しない場合は、当該AOレイをアンビエント・オクルージョン計算に組み込むステップと、
組み込まれたAOレイに基づき、アンビエント・オクルージョンを評価するステップと、
前記アンビエント・オクルージョン及び前記1次ヒット色に基づき、前記1次ピクセル色のシェーディングを行うステップと、
前記ピクセル・データ用の前記1次ピクセル色に基づき、一の画像を生成するステップと

をプロセッサに実行させるプログラム。

【請求項10】
画像を生成するためのシステムであって、
ディスプレイ・サブシステムに結合された画像ディスプレイと、
前記ディスプレイ・サブシステムに結合されたプロセッサとを備え、
前記プロセッサが、
シーン形状モデル及びシーン内に配置されたオブジェクトを記述する複数のピクセル・データを含む、シーン・モデル・データを受け取り、
前記複数のピクセル・データのうち第1のピクセル・データを選択し、
前記第1のピクセル・データに基づき、1次ピクセル色を生成し、
前記第1のピクセル・データに基づき、1次レイを生成し、
前記1次レイが前記シーン内のオブジェクトと交差するか否かを決定し、
前記1次レイが前記シーン内のオブジェクトと交差する場合は、交点Pを決定し、
前記交差したオブジェクト及び前記交点Pに基づき、表面法線Nを決定し、
前記交点Pに基づき、1次ヒット色を決定し、
前記1次ヒット色に基づき、前記1次ピクセル色を修正し、
前記交点P及び前記表面法線Nに基づき、各々が一の方向Dを有する複数のアンビエント・オクルージョン(AO)レイを生成し、
各AOレイごとに、当該AOレイの方向Dを逆転させ且つ当該AOレイの原点Oを前記シーンの外部の点にセットし、
各AOレイを、当該AOレイの原点から前記交点Pに向かうように前記シーン内へ進行させ、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差する場合は、当該AOレイをアンビエント・オクルージョン計算から除外し、
前記交点Pに到達する前に一のAOレイが一のオブジェクトと交差しない場合は、当該AOレイをアンビエント・オクルージョン計算に組み込み、
組み込まれたAOレイに基づき、アンビエント・オクルージョンを評価し、
前記アンビエント・オクルージョン及び前記1次ヒット色に基づき、前記1次ピクセル色のシェーディングを行い、
前記ピクセル・データ用の前記1次ピクセル色に基づき、一の画像を生成するように構成される、システム。
【請求項11】
前記プロセッサが、各AOレイごとに最大トラバーサル距離をセットするようにさらに構成される、請求項10に記載のシステム。
【請求項12】
前記プロセッサが、前記シーン形状モデルを、複数のノードを含む階層的加速構造(HAS)へ編成するようにさらに構成される、請求項10に記載のシステム。
【請求項13】
各AOレイを進行させることが、前記HASをノードからノードへトラバースすることを含む、請求項12に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−134919(P2010−134919A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2009−262804(P2009−262804)
【出願日】平成21年11月18日(2009.11.18)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】