(57)【要約】  本発明は、３次元シーン（３５）の２次元イメージ（１２）を取得するために、３次元シーンのレンダリングまたはインターラクティブライティングをするための方法に関係する。１組のシェーダーと、シーンの３Ｄオブジェクトのマテリアルプロパティとを考慮して、シェーディングプロセス（１５）を実行するステップを含み、シェーディングプロセスは、２次元イメージ（１２）中のイメージ位置（ｘ、ｙ、ｓｘ、ｓｙ）に関連して情報記録にアクセスできるフォーマットで、シェーダー（２０）に、および／または、３次元シーン（３５）のマテリアルプロパティ（１９）に関する情報記録を記憶するのに使用されるシェーダーフレームバッファ（２４）を生成させる。【選択図】  図５
2012503811.tif 000002
【特許請求の範囲】
【請求項１】
３次元シーン（３５）の２次元イメージ（１２）を取得するために、前記３次元シーンのレンダリングまたはインターラクティブライティングをするための方法において、
１組のシェーダーと、前記シーンの３Ｄオブジェクトのマテリアルプロパティとを考慮して、シェーディングプロセス（１５）を実行するステップを含み、
前記シェーディングプロセスは、前記２次元イメージ（１２）中のイメージ位置（ｘ、ｙ、ｓｘ、ｓｙ）に関連して情報記録にアクセスできるフォーマットで、シェーダー（２０）に、および／または、前記３次元シーン（３５）のマテリアルプロパティ（１９）に関する前記情報記録を記憶するのに使用されるシェーダーフレームバッファ（２４）を生成させる方法。
【請求項２】
ジオメトリフレームバッファ（２２）を生成させるために、ラスタ化プロセス（１３）を実行するステップと、
シャドーマップ（２３）を生成させるために、前記３次元シーン（３５）中に規定されている１組のライト（１８）に関して、前記シーン（３５）のビジビリティプロセス（１４）を実行するステップとを含み、
前記ジオメトリフレームバッファ（２２）および／またはシェーディングフレームバッファ（２４）は、前記２次元イメージ（１２）の部分に対応している、バケットまたはフラグメントに分けられている請求項１記載の方法。
【請求項３】
バケットまたはフラグメントは、永続的な記憶装置上に記憶され、対応するイメージ部分が処理されるときに、ライブメモリ中にロードされる請求項２記載の方法。
【請求項４】
前記ラスタ化プロセス、前記ビジビリティプロセス、および／または、前記シェーディングプロセスが、サブプロセスに分割される請求項２または３記載の方法。
【請求項５】
シェーダー（２０）情報は、複数のノードを備えるシェーディングツリー構造中に記憶され、前記シェーダーフレームバッファ（２４）は、前記シェーダーツリー構造からのノードの評価の結果を記憶するように構成されている先行する請求項のうちの１項記載の方法。
【請求項６】
前記シェーディングプロセス（１４）の間に、前記イメージのサブ領域（３３）のみが処理される先行する請求項のうちの１項記載の方法。
【請求項７】
レンダリングされた最終的なイメージビューからの前記シーンのコンポーネントにわたってナビゲートするのに使用されることになっている追加のシーン記述情報のような、前記シーン（３５）のインターラクティブ制御のための追加的な情報（３９）、または、レンダリングに関連しない使用のための追加的な情報（３９）を、前記ジオメトリフレームバッファは含む先行する請求項のうちの１項記載の方法。
【請求項８】
前記ジオメトリフレームバッファ（２２）は動的な拡張に対して適合される先行する請求項のうちの１項記載の方法。
【請求項９】
前記シェーダーフレームバッファは、前記シェーダー（２０）による使用のための追加的な情報を記憶するのに適している先行する請求項のうちの１項記載の方法。
【請求項１０】
前記ビジビリティプロセスは、各ライトソースに対して、別々に実行される先行する請求項のうちの１項記載の方法。
【請求項１１】
中央処理ユニットおよびディスクを具備する、先行する請求項のうちの１項記載の方法を実現するシステム。
【請求項１２】
請求項１〜１０記載の方法を実現するコンピュータプログラムプロダクト。
【請求項１３】
請求項１２記載のコンピュータプログラムの、ソースコードまたは実行可能なコードを具備する記憶媒体。
【発明の詳細な説明】
【発明の背景】
【０００１】
本発明は、３次元シーンのレンダリングのための方法に関係する。
【０００２】
短編アニメーションムービーまたは長編アニメーションムービーのための３次元（３Ｄ）コンピュータ発生イメージを生成させるプロセスはライティングと呼ばれるステップを含む。ライティングフェーズは、所定のシーンのジオメトリがどのようにライトに反応するかを記述するマテリアルプロパティを有する３Ｄジオメトリでできたシーンの３Ｄ表示を照明することを意図しているライティングシナリオを規定することからなる。ライターは、このライティングシナリオを規定することを担当する人である。ライターの仕事は、美しいイメージを発生させる芸術的な目的を達成するために、パラメータをライティングシナリオに変化させる反復プロセスからなる。パラメータの修正の各ステップにおいて、ライターは、最終的なイメージ上の修正の結果を見て、このような修正の効果を評価する必要がある。
【０００３】
望ましい“芸術的な”結果を取得するために、複雑な３Ｄイメージをライティングするには、非常に洗練された表示を有する非常に複雑な３Ｄジオメトリの処理を要する。３Ｄシーンを正しくライティングするには、３Ｄシーン中のさまざまなマテリアルの複雑なインタラクションと、マテリアルの反射率量と、１つ以上のライトソースの位置とが原因で、大量の時間と手作業の労力を要する。
【０００４】
大きな３Ｄシーンの処理に対するボトルネックの１つは、実行しなければならない複雑なジオメトリック計算の量である。複雑なイメージをレンダリングするために使用する現行のアルゴリズムは、通常、単純な３Ｄイメージに対して数分から長時間までにおよぶコンピュータ処理時間を要する。都合のよいことには、算出電力にかかるコストはだんだん少なくなってきている。都合の悪いことには、３Ｄイメージを生成させる熟練労働者にかかるコストはだんだん多くなってきている。
【０００５】
３Ｄシーンをライティングする現行の標準的なプロセスでは、３Ｄシーンの（例えば、ライト、テクスチャ、およびマテリアルプロパティのような）少数のパラメータを変化させ、その後、１つ以上のコンピュータにより作品をレンダリングする。しかしながら、レンダリングプロセスには、変化の結果をレビューできるようになるまでに、数分または長時間もかかることがある。
【０００６】
さらに、３Ｄシーンが正しくない場合には、プロセスを繰り返さなければならない。
【０００７】
レンダリングに必要とされる時間を改善する既知の技術には、文献ＵＳ７４２７９８６に記載されているように、専用のハードウェアコンポーネントを使用することを含む。
【０００８】
代替的には、メモリ中にロードすることになるデータ量の制限をねらう方法が、文献ＵＳ７５３２２１２に記載されている。
【０００９】
本発明の目的は、３Ｄコンピュータ発生イメージを生成させるときに、既知の方法による不利益なしで、ライティングの生産性と芸術的な制御とをさらに向上させることである。
【発明の概要】
【００１０】
本発明は、３次元シーンの２次元イメージを取得するために、３次元シーンのレンダリングまたはインターラクティブライティングをするための方法に関係する。方法は、１組のシェーダーと、シーンの３Ｄオブジェクトのマテリアルプロパティとを考慮して、シェーディングプロセスを実行するステップを含み、シェーディングプロセスは、２次元イメージ中のイメージ位置に関連して情報記録にアクセスできるフォーマットで、シェーダーに、および／または、３次元シーンのマテリアルプロパティに関する情報記録を記憶するのに使用されるシェーダーフレームバッファを生成させる。
【００１１】
本発明は、３Ｄコンピュータ発生イメージを生成させるときに、ライティングの生産性と芸術的な制御とを向上させる方法を提供することにより、先行技術の制限を克服する。
【００１２】
ディープファイルアプローチを使用する初期のジオメトリの複雑性とは無関係に、最終的なイメージのサイズのみに依存する値のアレイにより、ジオメトリフラグメントは表される。再ライティングアプリケーションにフレームバッファファイルアプローチを適用して、これを、他の既存のインターラクティブライティング解法よりも効果的にする。
【００１３】
本発明の１つの実施形態にしたがうと、本発明にしたがう方法は、ジオメトリフレームバッファを生成させるために、ラスタ化プロセス実行するステップと、シャドウマップを生成させるために、３次元シーン中に規定されている１組のライトに関して、３次元シーンのビジビリティプロセスを実行するステップとを含み、ジオメトリフレームバッファ、シェーディングフレームバッファは、２次元イメージの部分に対応しているバケットに分けられている。
【００１４】
実際に、複雑なジオメトリを扱うときに、ジオメトリフレームバッファの使用は非常に煩わしいことがある。所定の複雑な３Ｄイメージに対して、結果としてのジオメトリフレームバッファファイルのサイズは、１００Ｇｂ前後になることがあり、１つのプロセスによって、すべて一度に発生させること、および／または、すべて一度にロードすることができない。それゆえ、そのサイズのデータを発生させてアクセスできるようにするために、クライアントプロセスによって、オンデマンドで、別々に発生させ、ロードし、放棄することができる、より小さいファイルの集合に、ジオメトリフレームバッファファイルを分ける。
【００１５】
本発明の１つの態様にしたがうと、バケットは、永続的な記憶装置上に記憶され、対応するイメージ部分が処理されるときに、ライブメモリ中にロードされる。
【００１６】
各プロセスまたはサブプロセスの算出の結果をキャッシュするために、ライブメモリ（ＲＡＭ）の代わりに、ディスク記憶装置（ハードドライブ）を使用する。これに対する理由は、ＲＡＭは、サイズが限定されており、１つのプロセスのライフに限定される一時的なメモリであるからである。ディスク記憶装置を使用することで、情報の静的なキャッシングのために、実質的に無制限で、安価なメモリリソースにアクセスし、同一のデータの複数の算出を確実に回避する。
【００１７】
所定のビューポイントから可視のすべてのジオメトリフラグメントを一度だけ算出して、その結果をディスクに入れることにより、ライティングプロセスにおけるインターラクティビティを向上させる。
【００１８】
本発明の別の態様にしたがうと、ラスタ化プロセス、ビジビリティプロセス、および／または、シェーディングプロセスが、サブプロセスに分割される。さらなる態様にしたがうと、ビジビリティプロセスは、各ライトソースに対して別々に実行される。
【００１９】
本発明の別の態様にしたがうと、シェーダー情報は、複数のノードを備えるシェーディングツリー構造中に記憶され、シェーダーフレームバッファは、シェーダーツリー構造からのノードの評価の結果を記憶するように構成されている。
【００２０】
シェーディングノード計算の結果をキャッシュすることにより、修正における再評価の必要性を制限する。実際には、ジオメトリフレームバッファの各フラグメントは、所定のシェーダー中の対応するフラグメントの評価の結果とマッピングされ、この評価状態のみをキャッシュする、このシェーダーに対するカスタムフレームバッファを発生させる。
【００２１】
本発明の別の態様にしたがうと、シェーディングプロセスの間に、イメージのサブ領域のみが処理される。
【００２２】
このようなメカニズムを、レンダリングされたイメージの“関心領域”と呼ぶことがある。これは、イメージの算出を、指定する領域に限定するために、総イメージのサブポーションから構成される。この方法は、キャッシュされたジオメトリと、シャドウと、シェーダーフレームバッファからの、予め算出された適切なバケットのみを使用し、最小限のデータ量のみをロードして、イメージ部分の最適なレンダリングを可能にする。
【００２３】
本発明の別の態様にしたがうと、レンダリングされた最終的なイメージビューからのシーンのコンポーネントを通してナビゲートするのに使用されることになっている追加のシーン記述情報のような、シーンファイルのインターラクティブ制御のための追加的な情報、または、レンダリングに関連しない使用のための追加的な情報を、ジオメトリフレームバッファは含む。
【００２４】
本発明のさらなる態様にしたがうと、ジオメトリフレームバッファは動的な拡張に対して適合される。
【００２５】
本発明のさらなる態様にしたがうと、シェーダーフレームバッファは、シェーダーによる使用のために追加的な情報を記憶するのに適している。
【００２６】
これらのデータのタイプは、ジオメトリック情報だけではなく、どんな種類のものでも可能である。ここで、シェーダーツリーの各シェーダーは、これを使用し、各シェーダーがその最終的な算出をスピードアップするのに役立たせることが可能な、特殊化された、予めの算出データを記憶することができる。
【００２７】
本発明はまた、中央処理ユニットのみならず、上記の方法を実現するコンピュータプログラムプロダクトと、上記の方法を実現するコンピュータプログラムの、ソースコードまたは実行可能なコードを備える記憶媒体とを含む、上述したような方法を実現するシステムに関連している。
【００２８】
これから、本発明のさまざまな特徴の実施形態を実現する方法およびデバイスを、図面を参照して説明する。
【図面の簡単な説明】
【００２９】
【図１】図１は、本発明にしたがった方法に関連して使用されるハードウェアアーキテクチャの概略図である。
【図２】図２は、レンダリングアーキテクチャの概略図である。
【図３】図３は、本発明中で使用されるキャッシング構造を備える、レンダリングアーキテクチャの概略図である。
【図４】図４は、本発明にしたがった方法の概略ダイヤグラムである。
【図５】図５は、シェーダー評価の結果のキャッシングおよび再使用を図示している概略ダイヤグラムである。
【詳細な説明】
【００３０】
本発明の実施形態を図示するために、図面および関係する説明を提供するが、本発明の範囲を限定するものではない。明細書中の“１つの実施形態”または“実施形態”に対する言及は、実施形態に関連して記述する特定の特徴、構造、あるいは特性が、少なくとも本発明の実施形態中に含まれていることを示すことを意図している。明細書中のさまざまな箇所での“１つの実施形態では”または“実施形態”というフレーズの現れは、必ずしもすべて同一の実施形態に言及しているわけではない。
【００３１】
図面全体を通して、参照しているエレメント間での対応関係を示すために、参照番号を再使用している。
【００３２】
下記の説明は、当業者が本発明を作成および使用できるように提供され、発明者により考えられた最適なモードを示すが、使用可能なバリエーションを限定はしない。
【００３３】
本開示中で使用するように、文脈がそうでないことを要求する場合以外は、用語“comprise”と、“comprising”、“comprises”、および“comprised”のような、この用語のバリエーションは、他の追加的なものや、コンポーネントや、整数や、ステップなどを除くことを意図していない。
【００３４】
下記の説明では、実施形態の全体を通した理解を提供するために、特有な詳細を与えている。しかしながら、これらの特有な詳細なしで、実施形態を実施することができることを当業者は理解するだろう。実施形態を曖昧にしないように、よく知られている方法および技術を詳細の中に示していないかもしれない。
【００３５】
また、フローチャート、フローダイヤグラム、構造ダイヤグラム、またはブロックダイヤグラムとして描写するプロセスとして、実施形態を説明してもよいことに留意されたい。フローチャートでは、シーケンシャルなプロセスとして動作を説明することがあるが、動作のうちの多くは、並行して、または、同時に、実行することができる。さらに、動作の順序を再構成することができる。その動作が完了したときに、プロセスは終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスが関数に対応するときに、その終了は、呼び出し関数または主関数に対する、関数の戻りに対応する。
【００３６】
さらに、記憶装置は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、および／または、情報を記憶するための他の機械読取可能媒体を含む、データを記憶するための１つ以上のデバイスを表してもよい。用語“機械読取可能媒体”は、これらには限定されないが、命令および／またはデータを記憶することと、含むことと、あるいは運ぶこととが可能な、ポータブル記憶デバイスもしくは固定記憶デバイスと、光学記憶デバイスと、ワイヤレスチャネルと、他のさまざまな媒体とを含む。
【００３７】
なお、実施形態は、ハードウェアや、ソフトウェアや、ファームウェアや、ミドルウェアや、マイクロコードや、これらの組み合わせにより実現してもよい。ハードウェアや、ソフトウェアや、ファームウェアや、ミドルウェアや、マイクロコードにより実現されるときに、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体もしくは他の記憶装置のような、機械読取可能媒体中に記憶される。プロセッサは、必要なタスクを実行する。コードセグメントは、手順、関数、サブプログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは、命令、データ構造、またはプログラムステートメントの組み合わせを表す。情報や、データや、引数や、パラメータや、またはメモリコンテンツを、パスすることならびに／あるいは受信することにより、コードセグメントは、別のコードセグメント、または、ハードウェア回路に結合される。メモリシェアリングや、メッセージパッシングや、トークンパッシングや、ネットワーク送信などを含む、適した手段を通して、情報、引数、パラメータ、データなどは、パス、フォワードあるいは送信される。
【００３８】
用語“データエレメント”は、単一のアイテムとしてパッケージングされた何らかの少量のデータのことを指す。用語“データ単位”は、論理セクションを備えるデータエレメントの集合および／またはデータ単位の集合のことを指す。用語“記憶データベース”は、機械（例えば、コンピュータ）により読取可能な形態で、情報を提供（すなわち、記憶および／または送信）する何らかのメカニズムを含む。例えば、機械読取可能媒体は、リードオンリーメモリ（ＲＯＭ）；ランダムアクセスメモリ（ＲＡＭ）；磁気ディスク記憶媒体；光学記憶媒体；フラッシュメモリデバイス；電気的な、光学的な、音響学的な、または他の形態の、伝播信号（例えば、搬送波、赤外線信号、デジタル信号など）；などを含む。
【００３９】
一般的に、ここで使用する用語“データ”および“データアイテム”は、ビットのシーケンスのことを指す。したがって、データアイテムは、ファイルのコンテンツや、ファイルの一部分や、メモリ中のページや、オブジェクト指向のプログラム中のオブジェクトや、デジタルメッセージや、デジタルスキャンされたイメージや、ビデオ信号またはオーディオ信号の一部や、あるいは、ビットのシーケンスにより表すことができる他の何らかのエンティティであってもよい。用語“データ処理”は、ここでは、データアイテムの処理のことを指し、時に、処理しているデータアイテムのタイプに依存する。例えば、デジタルイメージのためのデータプロセッサは、オーディオ信号のためのデータプロセッサとは異なることがある。
【００４０】
下記の説明では、本発明の１つ以上の実施形態の特定の特徴を記述するために、特定の専門用語を使用する。
【００４１】
用語“バケット”は、少量のデータへの高速アクセスのための関係するキーとともに記憶されているデータ単位のことを指す。例えば、バケットは予め定められた数の、一様なサイズのより小さいブロックに再分割されているメモリのブロックで構成することができ、ブロックのそれぞれは、メモリの割り振り可能な単位である。用語“stream”、“streamed”、および“streaming”は、何らかの著しいタイムラグなしで、十分なデータを確実に連続的に受信するのに十分な一定の高スピードレートにおけるデータ転送のことを指す。
【００４２】
用語“シェーディング”は、可視の（前方面の）表面上における照明の効果のことを指す。３Ｄシーンをレンダリングするときに、シェーディングは、反射光、大気、およびカメラ情報と組み合わされ、３Ｄシーンに対する内面色および外面色の最終的な外観を算出する。
【００４３】
用語“ＵＶマッピング”は、２Ｄイメージが３Ｄモデルを表すようにする３Ｄモデリングプロセスのことを指す。ＵＶマップは、３Ｄオブジェクトを、テクスチャとして知られているイメージ上に変形する。
【００４４】
用語“ノイズ”は、イメージに導き入れられる明度または色情報における、擬似ランダムで不要なばらつきのことを指す。イメージノイズは、シャドウ領域のような、低信号レベルを有するイメージ領域において最もはっきりする。
【００４５】
用語“サンプリング技法”は、観測したデータポイントに基づいて、他の観測されていないデータポイントを統計的に推測または予測するために、測定された個々のデータポイントを使用する統計的な実践のことを指す。
【００４６】
図１で説明されているように：本発明にしたがった方法は、１つまたは多数のコアからなる中央処理ユニットすなわちＣＰＵ１を含む、標準的なコンピュータアーキテクチャ５を使用し、ＢＵＳ４を通してデータにアクセスし、ランダムアクセスメモリユニット２中に一時的にデータを記憶するか、または、ファイルシステム３上に永久的にデータを記憶するかのいずれかをして、実現することができる。
【００４７】
本発明にしたがったシステムは、２つの異なるタイプのコンピュータ：Ａ ＨＰ ｘｗ６６００グラフィックワークステーション（２ Ｉｎｔｅｌ Ｘｅｏｎ ＣＰＵ ｑｕａｄ ｃｏｒｅ ２．８４Ｇｈｚ，８Ｇｂ ＲＡＭ ＤＤＲ２，１６０Ｇｂ １０，０００ｒｐｍ ハードドライブ）上と、ＨＰエリートルック８７３０ｗラップトップコンピュータ（１Ｉｎｔｅｌ Ｃｏｒｅ２ ｅｘｔｒｅｍｅ ＣＰＵ２．５３Ｇｈｚ，８Ｇｂ ＲＡＭ ＤＤＲ２，３２０ Ｇｏ ７，２００ｒｐｍハードドライブ）上とでテストした。
【００４８】
図２を参照すると、レンダリングアーキテクチャ１０は、入力として、３Ｄシーンのライティングシナリオ１１を受け取り、出力として、最終的なイメージ１２を発生させるシステムである。レンダリングアーキテクチャ１０は、３つの異なるプロセスを実行する３つの主なユニットを備えている。
【００４９】
第１のプロセスは、ラスタ化プロセス１３であり、ここで、３Ｄシーンのジオメトリ複雑性を、最終的なイメージの解像度に基づくカメラ空間に変換する。
【００５０】
第２のプロセスは、ビジビリティプロセス１４であり、ここで、対応するシャドウを決定するために、３Ｄシーンのジオメトリ複雑性をライトのビューポイントから処理する。
【００５１】
第３のプロセスは、シェーディングプロセス１５であり、ここで、所定のピクセルから可視のジオメトリに適用されるマテリアルがどのようにライトに反応するかを評価することにより、このピクセルの最終的な色を決定する。
【００５２】
各プロセスを、下記に説明するように、サブプロセスに分割することができる。
【００５３】
ラスタ化プロセス１３を、最終的なイメージを表している長方形のエリア１６に適用する。イメージ空間中のジオメトリ複雑性の算出をバケット１７という名のサブイメージに分割することにより、このプロセスをサブプロセスに分けることができる。
【００５４】
バケットは、フレームバッファの一部であり、フラグメントは、フレームバッファ中またはバケット中の原子エンティティである。例えば、アンチエイリアシングがない場合は、フラグメントはピクセルに対応するだろう。
【００５５】
３Ｄシーンのライティングシナリオ１１の各ライト１８に、ビジビリティプロセス１４を別々に適用することができる。
【００５６】
マテリアルプロパティ１９を記述するために使用するライティングシナリオの、各ピクセルに対して、および、各オブジェクトに対して、シェーディングプロセス１５を別々に適用することができる。一般的にシェーダーと呼ばれる、接続されているマテリアルオペレータのグループを使用して、各マテリアルのプロパティを表すマテリアルアーキテクチャを考えると、各シェーダー２０は、他のものと無関係に算出されてよい。
【００５７】
これから図３を参照すると、上記に説明したレンダリングアーキテクチャ１０中で使用する、キャッシュまたは記憶装置エンティティが識別されている。
【００５８】
ジオメトリフレームバッファキャッシュ２２は、イメージ空間１６におけるラスタ化プロセス１３の結果から生じ、シャドウマップキャッシュ２３は、３Ｄシーンのライティングシナリオの各ライト１８に対するビジビリティプロセス１４の結果から生じ、汎用シェーダーフレームバッファキャッシュ２４は、何らかのシェーダー２０の状態と、シェーディングプロセス１５のマテリアルプロパティ１９をキャッシュするために使用され、オプションとしては、ケースに応じて、いくつかのシェーダーがより特殊化されたキャッシュ２５を発生させる。
【００５９】
これから図４を参照すると、３Ｄシーンをライティングするための方法のステップのダイヤグラムが示されており、これは、本発明の１つの実施形態にしたがって、何らかの３Ｄパラメータが変更されて複雑な３Ｄシーンをライティングするときに、ユーザが経験するレンダリング時間を減少させ、インターラクティブフィードバックを提供する。
【００６０】
方法は、複雑なジオメトリック計算をディスク上のジオメトリフレームバッファファイル２２に記憶させるステップを含む。
【００６１】
既に規定されているカメラ３０に対するラスタ化プロセスの結果を記憶させることにより、このファイルが発生される。
【００６２】
インターラクティブ再ライティングセッション３２においてシェーディング１５を実行するときに、シーン３５の一部における変化に対応して、シェーディングあるいは再シェーディングされることになっている、イメージのサブ領域３３またはシーンの一部の選択が実行される。
【００６３】
シェーディングされているサブ領域３３に基づいて、ジオメトリフレームバッファファイル２２のバケット１７表示を使用して、必要とするデータのみをメモリ中にストリーミングし３４、その後廃棄する。さらに詳細には、例にしたがうと、３Ｄシーンの選択された部分の単一のバケットがメモリにロードされる。その後、３Ｄシーンの選択された部分のシェーディングが実行される。いったんこのシェーディングが実行されると、メモリはクリアされる。その後、３Ｄシーンの選択された部分のデータの次のバケットが処理される。ロードされ、クリアにされるステップは、操作されるべき３Ｄシーンの部分にシェーディングが適用されるまで繰り返される。
【００６４】
このアプローチにより、ジオメトリフレームバッファファイル全体をメモリ中にロードすることが回避できる。
【００６５】
修正されたシェーダーおよびこれらに従属するもののみを再シェーディングするために、各シェーダー２０の評価状態３６は、ジオメトリフレームバッファファイル表示２４の下でキャッシュされ、次の更新において、前のシェーダー状態がディスクから再ロードされる。
【００６６】
ここから図５に目を向けると、シェーダー評価結果のキャッシュおよび再使用のプロセスがより詳細に説明されている。
【００６７】
シェーダー２０は、３Ｄシーン中の所定のジオメトリに関係する所定のマテリアルのプロパティを算出するために使用されるオブジェクトである。３Ｄシーンをライティングするときに、レンダリングされる最終的なイメージはカメラ３０のビューポイントから算出される。
【００６８】
カメラ３０は、３Ｄジオメトリ４２を、イメージ空間またはジオメトリフレームバッファ２２に変換させるのに使用されるプロジェクション４０を規定している。このジオメトリフレームバッファは、各サブピクセルに対して、所定のサブピクセルの下で可視のすべてのジオメトリフラグメントを記述する。各サブピクセルは、ピクセル座標ｘ、ｙおよびサブピクセル座標ｓｘ、ｓｙにより、識別される。
【００６９】
先に説明したように、３Ｄシーンをラスタ化するときに、フレームバッファは論理バケット１７に分けられる４３。各バケットは、イメージの１組のフラグメントを表している。
【００７０】
シェーディングプロセス１５の間に、所定のバケット１７のサブピクセル４４の下でフラグメントをシェーディングするときに、そのフラグメントに関係するマテリアル１９が評価され４５、シェーダーｓ３ ２０の評価をトリガし、これ自体は別のシェーダーｓ２ ２０の評価をトリガし、（通常、赤／緑／青／アルファのチャネルに対する４つのダブル精度値のアレイの形態の下で）、この評価の最終的な結果を、ジオメトリフレームバッファと同一の編成にしたがうファイル構成に記憶させる。すなわち、バケット当たり１つのキャッシュファイル４６、４７と、フラグメント当たり１つの値である。各シェーダーは、これ自体の評価の結果を、これ自体のシェーダーキャッシュファイルに記憶させるという同一のタスクを実行することに留意されたい。
【００７１】
これから、シェーダーｓ３の入力パラメータ４８のうちの１つを修正するときに、従属しているものを見て、最終的なマテリアルｍ１ １９を再算出する必要があり、シェーダーｓ３に対するキャッシュ４７は無効になるが、この修正に依存していないシェーダーｓ２は影響されず、将来の評価のためにこのキャッシュ４６をクリーンに保つ。
【００７２】
そして、ｓ３のパラメータ４８の修正の後にイメージ２２を再シェーディングするときに、所定のサブピクセル４４の下でのフラグメントのシェーディングは、再びマテリアルｍ１ １９の評価をトリガし、これ自体は、キャッシュが無効であるシェーダーｓ３ ２０の評価をトリガし、これ自体は、シェーダーｓ２ ２０の評価をトリガし、キャッシュが有効であるためにシェーダーｓ２ ２０の評価はスキップされ、結果としての値は、所定のフラグメントに対するシェーダーキャッシュファイルから直接読み取られる。
【００７３】
カメラにより現在表されているリーフノードだけの代わりに、シェーディングツリーの任意のノードの結果を記憶するのに、ジオメトリフレームバッファファイルアプローチを使用することができる。それゆえ、シェーディングツリーにおいて、従属していないパラメータが変更されたときには、任意のノードは、そのキャッシュを使用して、その再評価をスキップすることができる。この方法では、シェーディングツリー中で変更されたノードより後のシェーディングノードのみを再算出する必要がある。シェーディングツリー中の先のノード算出は、既に記憶されており、シェーディングツリー全体を再計算する現在の関連技術とは異なって、変更させる必要はない。典型的な３Ｄシーンは何千ものシェーディングノードを含むので、残りのノードを記憶しつつ１０個程度のノードのみを再算出することにより、１００倍までインターラクティブレンダリングスピードを増加させることができる。
【００７４】
方法は、シェーディングツリーノードキャッシュを使用して、レンダリングの質を向上させるステップをさらに含む。
【００７５】
本方法は、３Ｄシーンレンダリングの質も向上させる。例えば、現在、３Ｄシーン中のシャドウのほとんどは、サンプリング技法を通して算出されている。これらのサンプリング技法は、ノイズを生成させる。ノイズを減らすために、一般的なアプローチは、サンプリングの数、それゆえの、算出時間を増加させることである。シャドーイング情報をジオメトリフレームバッファファイル中にキャッシュしているので、“実質的に”キャッシュされているイメージをフィルタリングし、通常そうするために必要とされる算出時間なしで、ノイズを減らすことができる。
【００７６】
別の実施形態では、ジオメトリフレームバッファファイルを動的に拡張できる。すなわち、３Ｄシーンに関する、複雑なジオメトリック計算だけではなく、例えば、算出の結果、または、外部情報へのインデックスのような、数あるタイプの情報を記憶させることができる。例えば、記憶装置中に記憶させることができる他のタイプの情報の中で、ピクセル当たりの色、パラメトリックＵＶマッピング、テクスチャＵＶマッピング、キャラクターの名前に対するインデックス、算出時間、または、最も高輝度のライトに対するインデックスである。
【００７７】
別の実施形態では、最大限の効率ためにカスタマイズされた、特殊化されたユーザインターフェース表示をユーザに提供するために、ジオメトリフレームバッファファイルアプローチを使用することができる。例えば、特殊化されたユーザインターフェース表示は、インターラクティブジオメトリや、マテリアルや、ライトや、または、キャラクターに取り組むアニメーターの名前を提供することができる。数ある情報の中で、キャラクターに対するアニメーションのバージョンを表示させて、特殊化されたユーザインターフェース表示から選択することができる。加えて、ワークフローに対する何らかの関連する情報を、より効率的な特殊化されたユーザインターフェース表示中に示すこともでき、ユーザの生産性を増加させ、完成した３Ｄシーンを生成させるのに必要なリソースを減少させる。
【００７８】
図４上で見ることができるように、レンダリングされたイメージウィンドウ３８からのシーンコンポーネントの選択３７や、または、プロダクションパイプラインデータを参照するために、ジオメトリフレームバッファファイル中でピクセルごとのベースで汎用情報３９を記憶させることから活用することのような、３Ｄシーンのインターラクティブ制御のために、余分な情報の記憶装置を提供することもある。
【００７９】
この目的のために、プロダクション情報を含むことがある、レンダリングされた３Ｄキャラクター、または、３Ｄシーンに対して、ジオメトリフレームバッファファイルインデックス情報（メタデータ）を記憶させることができる。例えば、３Ｄキャラクターまたは３Ｄシーンが完全にレンダリングされた後に、例えば、バージョンや、レンダリング時間や、誰がこれに取り組んだかや、キャラクターの名前のような、キャラクターに関連するメタデータ情報を記憶させて、プロダクションプロセス間に検索するためにインデックス付けすることができる。これにより、ユーザが、プロダクションプロセスの任意のポイントにおいて、３Ｄキャラクターまたは３Ｄシーンを選択し、３Ｄキャラクターまたは３Ｄシーンに関連する情報にインターラクティブにアクセスし、３Ｄキャラクターまたは３Ｄシーンに関連する情報を表示させる能力を提供する。
【００８０】
通常そうであるように、各算出ステップを、レンダリングエンジンにより自動的にトリガでき、または、ユーザにより手動で動作させる／動作停止させることができる。実際に、ユーザは、ジオメトリフレームバッファや、シャドウマップや、シェーダーを再算出するか否かを決定することができる。これに加えて、ユーザは、所定のシェーダーの評価を明示的に動作停止でき、または、所定のシェーダーをフリーズさせて、前の算出のキャッシュを所定のシェーダーに使用させるようにすることができる。目的は、ユーザが役に立たないと考えることがある高価な算出を回避することである。
【００８１】
例えば、反射を有するシーンのケースでは、シーンの反射は、レイトレースライトにより実行される。反射算出は、これがシーンジオメトリ全体を処理する必要があるかもしれないので、非常に遅いことがある。シーンの他のライティングパラメータを修正しながら、このレイトレースされたライトをフリーズさせて、最終的なイメージ算出をスピードアップさせることができる。最終的なイメージが正しいものでなかったとしても、修正が反射に影響することがあることから、所定の状況では、芸術家にとってこれらの違いは必ずしも重要ではないかもしれない。
【００８２】
結論として、イメージが正しいか否かを芸術的に判断するために、何が重要であるかにおける決定は、ソフトウェアが賢く推測できない、主観的な人間のパラメータに依存している。芸術家が、その芸術的な作業を実行するときに、ライティングプロセスを調整し、これを、これ自体の方法論に適応させ、最高の柔軟性を確実なものにすることができるシステムを提案している。
【００８３】
本発明をある程度の特定性とともに記述してきたが、本開示が例示として行なわれていることを理解するだろう。本発明の範囲から逸脱することなく、上記の記述においてさまざまな変更が行なわれる際に、上記記述中に含まれる、または、添付している図面中に示している、すべての物事は、例示的なものとすべきであり、限定されているシーンにおいて使用しないことを意図している。
【図１】
2012503811.tif 000003
【図２】
2012503811.tif 000004
【図３】
2012503811.tif 000005
【図４】
2012503811.tif 000006
【図５】
2012503811.tif 000007
【手続補正書】
【提出日】平成23年8月4日(2011.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
３次元シーン（３５）の２次元イメージ（１２）を取得するために、前記３次元シーンのレンダリングまたはインターラクティブライティングをするための方法において、
１組のシェーダーと、前記シーンの３Ｄオブジェクトのマテリアルプロパティとを考慮して、シェーディングプロセス（１５）を実行するステップを含み、
前記シェーディングプロセスは、前記２次元イメージ（１２）中のイメージ位置（ｘ、ｙ、ｓｘ、ｓｙ）に関連して情報記録にアクセスできるフォーマットで、シェーダー（２０）に、および／または、前記３次元シーン（３５）のマテリアルプロパティ（１９）に関する前記情報記録を記憶するのに使用されるシェーダーフレームバッファ（２４）を生成させる方法。
【請求項２】
ジオメトリフレームバッファ（２２）を生成させるために、ラスタ化プロセス（１３）を実行するステップと、
シャドーマップ（２３）を生成させるために、前記３次元シーン（３５）中に規定されている１組のライト（１８）に関して、前記シーン（３５）のビジビリティプロセス（１４）を実行するステップとを含み、
前記ジオメトリフレームバッファ（２２）および／またはシェーディングフレームバッファ（２４）は、前記２次元イメージ（１２）の部分に対応している、バケットまたはフラグメントに分けられている請求項１記載の方法。
【請求項３】
バケットまたはフラグメントは、永続的な記憶装置上に記憶され、対応するイメージ部分が処理されるときに、ライブメモリ中にロードされる請求項２記載の方法。
【請求項４】
前記ラスタ化プロセス、前記ビジビリティプロセス、および／または、前記シェーディングプロセスが、サブプロセスに分割される請求項２または３記載の方法。
【請求項５】
シェーダー（２０）情報は、複数のノードを備えるシェーディングツリー構造中に記憶され、前記シェーダーフレームバッファ（２４）は、前記シェーダーツリー構造からのノードの評価の結果を記憶するように構成されている請求項１〜４のうちの１項記載の方法。
【請求項６】
前記シェーディングプロセス（１５）の間に、前記イメージのサブ領域（３３）のみが処理される請求項１〜５のうちの１項記載の方法。
【請求項７】
レンダリングされた最終的なイメージビューからの前記シーンのコンポーネントにわたってナビゲートするのに使用されることになっている追加のシーン記述情報のような、前記シーン（３５）のインターラクティブ制御のための追加的な情報（３９）、または、レンダリングに関連しない使用のための追加的な情報（３９）を、前記ジオメトリフレームバッファは含む請求項１〜６のうちの１項記載の方法。
【請求項８】
前記ジオメトリフレームバッファ（２２）は動的な拡張に対して適合される請求項１〜７のうちの１項記載の方法。
【請求項９】
前記シェーダーフレームバッファは、前記シェーダー（２０）による使用のための追加的な情報を記憶するのに適している請求項１〜８のうちの１項記載の方法。
【請求項１０】
前記ビジビリティプロセスは、各ライトソースに対して、別々に実行される請求項１〜９のうちの１項記載の方法。
【請求項１１】
中央処理ユニットおよびディスクを具備する、請求項１〜１０のうちの１項記載の方法を実現するシステム。
【請求項１２】
請求項１〜１０のうちの１項記載の方法を実現するコンピュータプログラム。
【請求項１３】
請求項１２記載のコンピュータプログラムの、ソースコードまたは実行可能なコードを具備する記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
本発明をある程度の特定性とともに記述してきたが、本開示が例示として行なわれていることを理解するだろう。本発明の範囲から逸脱することなく、上記の記述においてさまざまな変更が行なわれる際に、上記記述中に含まれる、または、添付している図面中に示している、すべての物事は、例示的なものとすべきであり、限定されているシーンにおいて使用しないことを意図している。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
［１］３次元シーン（３５）の２次元イメージ（１２）を取得するために、前記３次元シーンのレンダリングまたはインターラクティブライティングをするための方法において、
１組のシェーダーと、前記シーンの３Ｄオブジェクトのマテリアルプロパティとを考慮して、シェーディングプロセス（１５）を実行するステップを含み、
前記シェーディングプロセスは、前記２次元イメージ（１２）中のイメージ位置（ｘ、ｙ、ｓｘ、ｓｙ）に関連して情報記録にアクセスできるフォーマットで、シェーダー（２０）に、および／または、前記３次元シーン（３５）のマテリアルプロパティ（１９）に関する前記情報記録を記憶するのに使用されるシェーダーフレームバッファ（２４）を生成させる方法。
［２］ジオメトリフレームバッファ（２２）を生成させるために、ラスタ化プロセス（１３）を実行するステップと、
シャドーマップ（２３）を生成させるために、前記３次元シーン（３５）中に規定されている１組のライト（１８）に関して、前記シーン（３５）のビジビリティプロセス（１４）を実行するステップとを含み、
前記ジオメトリフレームバッファ（２２）および／またはシェーディングフレームバッファ（２４）は、前記２次元イメージ（１２）の部分に対応している、バケットまたはフラグメントに分けられている［１］記載の方法。
［３］バケットまたはフラグメントは、永続的な記憶装置上に記憶され、対応するイメージ部分が処理されるときに、ライブメモリ中にロードされる［２］記載の方法。
［４］前記ラスタ化プロセス、前記ビジビリティプロセス、および／または、前記シェーディングプロセスが、サブプロセスに分割される［２］または［３］記載の方法。
［５］シェーダー（２０）情報は、複数のノードを備えるシェーディングツリー構造中に記憶され、前記シェーダーフレームバッファ（２４）は、前記シェーダーツリー構造からのノードの評価の結果を記憶するように構成されている先行する請求項のうちの１項記載の方法。
［６］前記シェーディングプロセス（１４）の間に、前記イメージのサブ領域（３３）のみが処理される先行する請求項のうちの１項記載の方法。
［７］レンダリングされた最終的なイメージビューからの前記シーンのコンポーネントにわたってナビゲートするのに使用されることになっている追加のシーン記述情報のような、前記シーン（３５）のインターラクティブ制御のための追加的な情報（３９）、または、レンダリングに関連しない使用のための追加的な情報（３９）を、前記ジオメトリフレームバッファは含む先行する請求項のうちの１項記載の方法。
［８］前記ジオメトリフレームバッファ（２２）は動的な拡張に対して適合される先行する請求項のうちの１項記載の方法。
［９］前記シェーダーフレームバッファは、前記シェーダー（２０）による使用のための追加的な情報を記憶するのに適している先行する請求項のうちの１項記載の方法。
［１０］前記ビジビリティプロセスは、各ライトソースに対して、別々に実行される先行する請求項のうちの１項記載の方法。
［１１］中央処理ユニットおよびディスクを具備する、先行する請求項のうちの１項記載の方法を実現するシステム。
［１２］［１］〜［１０］記載の方法を実現するコンピュータプログラムプロダクト。
［１３］［１２］記載のコンピュータプログラムの、ソースコードまたは実行可能なコードを具備する記憶媒体。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2012503811.tif 000008
【国際調査報告】
2012503811.tif 000009
2012503811.tif 000010