(57)【要約】コンピュータ・システムの方法（図３Ｂ）に、第１イメージ（図３Ｂ、イメージ１）と第２イメージ（図３Ｂ、イメージ２）でレンダリングされるオブジェクトのジオメトリック記述を受け取り、第１イメージ（図３Ｂ、イメージ１）と第２イメージ（図３Ｂ、イメージ２）のオブジェクトに関する複数のレンダリング・オペレーション（図３Ｂ、項目３９０、４００）を実行し、複数のレンダリング・オペレーション（図３Ｂ、項目３９０、４００）は、第１の複数のレンダリング・オペレーション（図３Ｂ、項目３９０）と少なくとも第２レンダリング・オペレーション（図３Ｂ、項目４００）を含み、第１イメージ（図３Ｂ、イメージ１）のオブジェクトの第２レンダリング・オペレーション（図３Ｂ、項目４００）と第２イメージ（図３Ｂ、イメージ２）のオブジェクトの第２レンダリング・オペレーション（図３Ｂ、項目４００）は、実質的に類似し、第１の複数のレンダリング・オペレーション（図３Ｂ、項目３９０）は、第１イメージ（図３Ｂ、イメージ１）に関して実行され、第１の複数のレンダリング・オペレーション（図３Ｂ、項目３９０）は、第２イメージ（図３Ｂ、イメージ２）に関して実行され、第２レンダリング・オペレーション（図３Ｂ、項目４００）は、第１イメージ（図３Ｂ、イメージ１）と第２イメージ（図３Ｂ、イメージ２）について１回実行される。
2006525558.tif 000002
【特許請求の範囲】
【請求項１】
第１オブジェクトのジオメトリック記述を受け取ることと、
第１イメージと第２イメージとの両方について１回、前記第１オブジェクトの前記ジオメトリック記述に応答して前記第１オブジェクトに関するシェーディング・オペレーションの第１の組を実行することと、
前記第１イメージ内の前記第１オブジェクトに関するシェーディング・オペレーションの第２の組を実行することと、
前記第２イメージ内の前記第１オブジェクトに関するシェーディング・オペレーションの第３の組を実行することと、
前記第１イメージ内の前記第１オブジェクトのシェーディング値を決定するために、前記第１オブジェクトに関するシェーディング・オペレーションの前記第１の組の結果を前記第１オブジェクトに関するシェーディング・オペレーションの前記第２の組の結果と組み合わせることと、
前記第２イメージ内の前記第１オブジェクトのシェーディング値を決定するために、前記第１オブジェクトに関するシェーディング・オペレーションの前記第１の組の結果を前記第１オブジェクトに関するシェーディング・オペレーションの前記第３の組の結果と組み合わせることと
を含む、前記第１イメージと前記第２イメージを含む複数のイメージ内のオブジェクトをシェーディングする方法。
【請求項２】
第１処理スレッドが、シェーディング・オペレーションの前記第２の組を実行する前記ステップを実行し、
第２処理スレッドが、シェーディング・オペレーションの前記第３の組を実行する前記ステップを実行し、
前記第１処理スレッドと前記第２処理スレッドが、同時処理スレッド、オーバーラップする処理スレッド、と並列処理スレッドからなる群から選択された形で関係する
請求項１に記載の方法。
【請求項３】
前記第１オブジェクトに関するシェーディング・オペレーションの前記第１の組が、前記第２イメージ内の前記第１オブジェクトに関するシェーディング・オペレーションと同一の前記第１イメージ内の前記第１オブジェクトに関するシェーディング・オペレーションを含む請求項１に記載の方法。
【請求項４】
前記第１オブジェクトに関するシェーディング・オペレーションの前記第２の組が、前記第１イメージに固有である請求項３に記載の方法。
【請求項５】
前記第１オブジェクトに関するシェーディング・オペレーションの前記第１の組が、環境照明値に応答して決定される請求項３に記載の方法。
【請求項６】
前記第１オブジェクトに関するシェーディング・オペレーションの前記第２の組が、拡散照明とスペキュラ照明からなる群から選択された照明値に応答して決定される請求項５に記載の方法。
【請求項７】
前記第１オブジェクトに関するどのシェーディング・オペレーションがシェーディング・オペレーションの前記第１の組に含まれるかの判定を受け取ることをさらに含む請求項１に記載の方法。
【請求項８】
請求項１に記載の方法に従ってシェーディングされた前記第１イメージと前記第２イメージを含む有形の媒体。
【請求項９】
シェーディング・オペレーションの前記第１の組のうちの少なくとも１つが、前、後、合間、インターリーブされたからなる群から選択された形での、シェーディング・オペレーションの前記第２の組のうちの少なくとも１つの実行とシェーディング・オペレーションの前記第３の組のうちの少なくとも１つの実行に関連する請求項１に記載の方法。
【請求項１０】
第２オブジェクトのジオメトリック記述を受け取ることと、
前記第１イメージと前記第２イメージとの両方に関して１回、前記第２オブジェクトの前記ジオメトリック記述に応答して前記第２オブジェクトに関するシェーディング・オペレーションの第１の組を実行することと、
前記第１イメージ内の前記第２オブジェクトに関するシェーディング・オペレーションの第２の組を実行することと、
前記第２イメージ内の前記第２オブジェクトに関するシェーディング・オペレーションの第３の組を実行することと
を含み、前記第１オブジェクトに関するシェーディング・オペレーションの前記第１の組のシェーディング・オペレーションが、前記第１イメージ内の前記第２オブジェクトに関するシェーディング・オペレーションの前記第２の組と前記第２イメージ内の前記第２オブジェクトに関するシェーディング・オペレーションの前記第３の組からなる群から選択されたシェーディング・オペレーションに含まれる
請求項１に記載の方法。
【請求項１１】
前記第１オブジェクトが、第１頂点と第２頂点を含み、
シェーディング・オペレーションの前記第１の組とシェーディング・オペレーションの前記第２の組が、前記第１頂点に対するシェーディング・オペレーションの前記第１の組とシェーディング・オペレーションの前記第２の組とそれに続く前記第２頂点に対するシェーディング・オペレーションの前記第１の組前記第１の組とシェーディング・オペレーションの前記第２の組及び前記第１頂点と前記第２頂点に対するシェーディング・オペレーションの前記第１の組とそれに続く前記第１頂点と前記第２頂点に対するシェーディング・オペレーションの前記第２の組からなる群から選択された形で前記第１頂点と前記第２頂点に適用される
請求項１に記載の方法。
【請求項１２】
複数のイメージからのイメージごとに複数のオブジェクトからの第１オブジェクトをレンダリングすることであって、前記第１オブジェクトのレンダリングが、前記複数のイメージからのイメージごとに前記第１オブジェクトに関して実行されるレンダリング・オペレーションの第１群と、前記複数のイメージからの複数のイメージについて前記第１オブジェクトに関して１回実行されるレンダリング・オペレーションの第２群とを含む、レンダリングすること
を含む、前記複数のイメージ内の前記複数のオブジェクトをレンダリングする方法。
【請求項１３】
前記複数のイメージからのイメージごとに前記複数のオブジェクトからの前記第１オブジェクトをレンダリングした後に、前記複数のイメージからのイメージごとに前記複数のオブジェクトからの第２オブジェクトをレンダリングすることであって、前記第２オブジェクトをレンダリングすることが、前記複数のイメージからのイメージごとに前記第２オブジェクトに関して実行されるレンダリング・オペレーションの第１群と、前記複数のイメージからの複数のイメージについて前記第２オブジェクトに関して１回実行されるレンダリング・オペレーションの第２群とを含む、レンダリングすること
をさらに含む請求項１２に記載の方法。
【請求項１４】
前記複数のイメージがＮ個のイメージを含み、
前記第１オブジェクトに関するレンダリング・オペレーションの前記第２群が、Ｍ回実行され、
１≦Ｍ＜Ｎである
請求項１２に記載の方法。
【請求項１５】
レンダリング・オペレーションの前記第１群が、可視性オペレーションとレイ・トレース・オペレーションを含むオペレーションの群から選択される請求項１４に記載の方法。
【請求項１６】
レンダリング・オペレーションの前記第２群が、ダイシング・オペレーション、テクスチャ・マッピング・オペレーション、変位オペレーションを含むオペレーションの群から選択される請求項１４に記載の方法。
【請求項１７】
レンダリング・オペレーションの前記第２群が、ジオメトリック・データ取出と手続ジオメトリック・データ生成を含むオペレーションの群から選択される請求項１３に記載の方法。
【請求項１８】
レンダリング・オペレーションの前記第１群が、スペキュラ照明シェーディング、ハイライト照明シェーディング、拡散照明シェーディング、環境照明シェーディングを含むシェーディング・オペレーションの群から選択される請求項１７に記載の方法。
【請求項１９】
レンダリング・オペレーションの前記第２群が、スペキュラ照明シェーディング、ハイライト照明シェーディング、拡散照明シェーディング、環境照明シェーディングを含むシェーディング・オペレーションの群から選択される請求項１３に記載の方法。
【請求項２０】
請求項１３に記載の方法に従ってレンダリングされたオブジェクトを含む複数のイメージを保管する媒体。
【請求項２１】
前記複数のイメージを出力することをさらに含む請求項１９に記載の方法。
【請求項２２】
レンダリング・オペレーションの前記第２群からの少なくとも１つのレンダリング・オペレーションが、前と後からなる群から選択された形で、レンダリング・オペレーションの前記第１群からの少なくとも１つのレンダリング・オペレーションに関して実行される請求項１２に記載の方法。
【請求項２３】
レンダリング・オペレーションが、前記第１オブジェクトに関して１回実行されるレンダリング・オペレーションの前記第２群と前記複数のイメージからのイメージごとに前記第２オブジェクトに関して実行されるレンダリング・オペレーションの前記第１群との両方に含まれる請求項１３に記載の方法。
【請求項２４】
Ｎ個のイメージを含む複数のイメージを保管するように構成されたメモリと、
前記メモリに結合されたプロセッサであって、前記複数のイメージからのイメージごとに１回のＮ回だけ、複数のオブジェクトからの第１オブジェクトに関してレンダリング・オペレーションの第１群を実行するように構成され、前記複数のイメージについてＭ回、前記複数のオブジェクトからの前記第１オブジェクトに関してレンダリング・オペレーションの第２群を実行するようにも構成され、Ｍ＜Ｎである、プロセッサと
を含む、前記複数のイメージ内の前記複数のオブジェクトをレンダリングするコンピュータ・システム。
【請求項２５】
前記プロセッサが、前記第１オブジェクトに関するレンダリング・オペレーションの前記第１群を実行した後に、前記複数のイメージからのイメージごとに１回のＮ回だけ、前記複数のオブジェクトからの第２オブジェクトに関してレンダリング・オペレーションの第１群を実行するようにも構成される請求項２４に記載のコンピュータ・システム。
【請求項２６】
１≦Ｍ＜Ｎである請求項２４に記載のコンピュータ・システム。
【請求項２７】
レンダリング・オペレーションの前記第１群が、可視性オペレーションとレイ・トレース・オペレーションからなるオペレーションの群から選択される請求項２６に記載のコンピュータ・システム。
【請求項２８】
レンダリング・オペレーションの前記第２群が、ジオメトリックダイシング・オペレーション、テクスチャ・マッピング・オペレーション、ジオメトリック変位オペレーションからなるオペレーションの群から選択される請求項２７に記載のコンピュータ・システム。
【請求項２９】
レンダリング・オペレーションの前記第２群が、前記第１オブジェクトのジオメトリック・データ取出と前記第１オブジェクトの手続ジオメトリック・データ生成からなるオペレーションの群から選択される請求項２６に記載のコンピュータ・システム。
【請求項３０】
レンダリング・オペレーションの前記第１群が、スペキュラ・シェーディング、ハイライト・シェーディング、拡散シェーディング、と環境シェーディングからなるシェーディング・オペレーションの群から選択される請求項２６に記載のコンピュータ・システム。
【請求項３１】
レンダリング・オペレーションの前記第２群が、スペキュラ・シェーディング、ハイライト・シェーディング、拡散シェーディング、環境シェーディングからなるシェーディング・オペレーションの群から選択される請求項２６に記載のコンピュータ・システム。
【請求項３２】
前記プロセッサが、第１オブジェクトに関するレンダリング・オペレーションの前記第１群からレンダリング・オペレーションごとに別々のプロセスをｓｐａｗｎするように構成される請求項２６に記載のコンピュータ・システム。
【請求項３３】
レンダリング・オペレーションの前記第１群からのレンダリング・オペレーションごとの前記別々のプロセスが、同時プロセスと並列プロセスからなる群から選択されたプロセスである請求項３２に記載のコンピュータ・システム。
【請求項３４】
少なくとも１つのレンダリング・オペレーションが、前記第１オブジェクトに関するレンダリング・オペレーションの前記第１の組と前記第２オブジェクトに関するレンダリング・オペレーションの前記第１群との両方に共通する請求項２４に記載のコンピュータ・システム。
【請求項３５】
前記第１オブジェクトに関するレンダリング・オペレーションの前記第１群からの第１レンダリング・オペレーションが、前と後からなる群から選択される形で前記第１オブジェクトに関するレンダリング・オペレーションの前記第２群からの第１レンダリング・オペレーションと関連して実行され、
前記第１オブジェクトに関するレンダリング・オペレーションの前記第１群からの第２レンダリング・オペレーションが、前と後からなる群から選択される形で前記第１オブジェクトに関するレンダリング・オペレーションの前記第２群からの前記第１レンダリング・オペレーションと関連して実行され、
前記第１オブジェクトに関するレンダリング・オペレーションの前記第２群からの第２レンダリング・オペレーションが、前と後からなる群から選択される形で前記第１オブジェクトに関するレンダリング・オペレーションの前記第１群からの前記第２レンダリング・オペレーションと関連して実行される
請求項２４に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・アニメーションに関する。具体的には、本発明は、関連するイメージ・フレームの効率的なレンダリングの技法と装置に関する。
【０００２】
関連する出願の参照
本発明は、 に一緒に出願されたショット・シェーディングの方法と装置、代理人書類番号021751-000100USに関連し、全ての目的においてそれを参照する。
【０００３】
著作権
この特許書類に開示された部分は著作権保護の対象である対象を含む。著作権所有者は特許商標庁の特許ファイルや記録に表れるように特許書類や特許開示をそのまま複製することに反対はしないが、それ以外の著作権を保留する。
【背景技術】
【０００４】
常に、映画製作者は、しばしば、架空の生物、遠くの場所、空想的なものを伴う作り話をすることを試みてきた。それを行うために、映画製作者は、しばしば、架空を「現実」にするアニメーション技法に頼った。アニメーションの主な路の２つに、伝統的に、ドローイングベース・アニメーション技法と物理アニメーション技法が含まれる。
【０００５】
ドローイングベース・アニメーション技法は、ウォルト・ディズニーなどの映画製作者によって２０世紀に洗練され、「白雪姫」や「ファンタジア」（１９４０年）などの映画に使用された。このアニメーション技法は、通常、アーティストが透明の媒体またはセルにアニメートされたイメージを手書き（またはペイント）することを必要とする。ペインティングの後に、各セルが、映画の１つまたは複数のフレームとしてフィルムに取り込まれるか記録される。
【０００６】
物理ベース・アニメーション技法は、通常、ミニチュア・セット、小道具、キャラクタの作成を必要とする。映画製作者は、セットを作り、小道具を追加し、ミニチュア・キャラクタをあるポーズで位置決めする。アニメータが、満足するようにすべてのものが配置された後、フィルムの１つまたは複数のフレームが、その特定の配置を映す。物理アニメーション技法は、「キング・コング」（１９３２年）などの映画のためにウィリー・オブライエンなどの映画製作者によって開発された。その後、この技法が、「猿人ジョー・ヤング」（１９４８年）や、タイタンの戦い（１９８１年）を含む映画のために、レイ・ハリーハウゼンなどのアニメータによって洗練された。
【０００７】
２０世紀後半のコンピュータの広い可用性に伴って、アニメータは、アニメーション・プロセスでの支援のためにコンピュータに頼り始めた。これには、たとえばイメージをペイントすることによって、インビトゥイーン・イメージを生成すること（「インビトゥィーニング」）によってなど、ドローイングベース・アニメーションを容易にするためのコンピュータの使用が含まれる。これには、物理アニメーション技法を増補するためのコンピュータの使用も含まれる。たとえば、物理モデルを、コンピュータ・メモリ内の仮想モデルによって表し、操作することができる。
【０００８】
コンピュータ支援アニメーション（computer aided animation、ＣＡＡ）産業を開拓した会社の１つが、Ｐｉｘａｒ  Ｉｎｃｏｒｐｏｒａｔｅｄ社であった。Ｐｉｘａｒは、特にＣＡＡ用に設計されたコンピューティング・プラットフォームと、現在はＲｅｎｄｅｒＭａｎ（登録商標）と称するアニメーション・ソフトウェアの両方を開発した。ＲｅｎｄｅｒＭａｎ（登録商標）は、アニメーション産業で特によく歓迎され、アカデミー賞（登録商標）で２回表彰された。
【０００９】
本発明の記名された発明者は、オリジナルＲｅｎｄｅｒＭａｎ（登録商標）ソフトウェアを共同開発した。その時に、記名された発明者は、このソフトウェアのオペレーションに影響する複数の工学的仮定を行った。１つの仮定は、メモリに保管されたシーンのジオメトリック記述が、比較的小さいということであった。ジオメトリック・シーン記述に、通常、位置、オブジェクト（表現対象物）、オブジェクト配置などのジオメトリック記述が含まれた。記名された発明者は、出力イメージ・フレームの解像度が高く、コンピュータ・プログラム・メモリに経済的に保管できないとも仮定した。
【００１０】
これらの仮定に鑑みて、フレームをレンダリングする時に、ジオメトリック・シーン・データが、まず、ディスク・メモリからプログラム・メモリに移動される。次に、フレームが、バケットと称する、一連のより小さいフレーム部分に副分割され、バケットに現れるオブジェクトの諸部分が、レンダリングされる。このプロセスを、フレームがレンダリングされるまで、フレーム内の残りのバケットについて繰り返す。したがって、このプロセスは、次のフレームの始まりの前に、１フレーム内のすべてのオブジェクトをレンダリングする。いくつかの面で、ＲｅｎｄｅｒＭａｎ（登録商標）のアニメーション・プロセスは、一時に１フレームがレンダリングされるという点で、上で述べた伝統的なアニメーション技法に類似していた。並列処理技法が、使用可能であり、実施されていたが、各フレームは、それでも個別に別々に、他のフレームと別にレンダリングされた。
【特許文献１】米国特許第４８９７８０６号
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記に鑑みて、本発明の発明者は、アニメートされた特徴を作るプロセスを容易にするために、アニメーション・ソフトウェアの領域でさらなる改善を行うことが望ましいことを理解した。
【課題を解決するための手段】
【００１２】
本発明は、コンピュータ・アニメーションの分野に関する。具体的に言うと、本発明は、関連するイメージ・フレームの効率的なレンダリングの技法と装置に関する。
【００１３】
本発明は、コンピュータ支援アニメーションの分野でのレンダリングのパラダイム・シフトを表す。本発明者は、工学的仮定の異なる組を使用することによって、レンダリング時間を大幅に減らせることを認めた。とりわけ、１つの仮定は、シーン記述は大きいので、コンピュータ・プログラム・メモリに保管するのが高価であることであり、もう１つの仮定は、イメージ解像度は「低い」ので、イメージ（フレーム）をコンピュータ・プログラム・メモリに簡単に保管できることである。たとえば、通常のシーン記述は、３００ギガバイト程度になり、イメージは、３００メガバイト程度である。
【００１４】
この仮定を行うことによって、本発明者は、一連の関連するイメージ（「ショット」）のオブジェクトを効率的にレンダリングして、総レンダリング時間を減らすことができることを認めた。各イメージを、本明細書では「フレーム」または「イメージ・フレーム」とも称する。この新規のアイデアを実装するために、ジオメトリック・シーン・データが、一時に１オブジェクトずつ、ハード・ディスクからレンダリング・エンジンにストリーミングされる。そして、そのオブジェクトが現れるショット内のすべてのイメージ・フレームのための各オブジェクトをレンダリング・エンジンがレンダリングする。
【００１５】
たとえば、まず、オブジェクトがディスク・ドライブから取り出され、レンダリング・エンジンが、そのオブジェクトのポリゴン・ダイシング(polygonal dicing)スキーマを決定する。次に、レンダリング・エンジンが、オブジェクトのポリゴン・ダイシング・スキーマに対して変位マップを実行する。次に、レンダリング・エンジンが、オブジェクトに対して、ある時間不変シェーディング計算すなわち、ショット内のフレームのオブジェクトに共通するシェーディング計算を実行する。これらの前計算を、本明細書では「ショット固有」レンダリング、「ショット不変」レンダリング、または「時間不変」レンダリングと称する。たとえば、８０フレームを含むショットについて、８０個の異なるフレーム内のオブジェクトについてショット不変シェーディング計算を８０回実行するのではなく、レンダリング・エンジンは、８０個のすべてのフレームのオブジェクトについてシェーディング計算を１回実行する。この例のもう１つの場合では、レンダリング・エンジンが、シェーディング計算を８０回未満だけ実行する。
【００１６】
次に、レンダリング・エンジンは、時間変動シェーディング計算などの「イメージ固有」レンダリングまたは「フレーム固有」レンダリングを計算する。フレームごとに、ショット固有レンダリング結果とフレーム固有レンダリング結果を組み合わせて、最終的なイメージ・フレームを形成する。これらのシェーディング・オペレーションは、直列にまたは並列に実行することができる。
【００１７】
本発明の１態様によれば、コンピュータ・システム用の方法が説明される。１つの技法に、第１イメージと第２イメージでレンダリングされるオブジェクトのジオメトリック記述を受け取ることと、第１イメージと第２イメージのオブジェクトに関する複数のレンダリング・オペレーションを実行することが含まれる。さまざまな方法で、複数のレンダリング・オペレーションに、第１の複数のレンダリング・オペレーションと少なくとも第２のレンダリング・オペレーションが含まれ、第１イメージのオブジェクトの第２レンダリング・オペレーションと第２イメージのオブジェクトの第２レンダリング・オペレーションは、実質的に類似する。第１の複数のレンダリング・オペレーションは、第１イメージについて１回と、第２イメージについて１回実行される。さらに、第２レンダリング・オペレーションは、第１イメージと第２イメージの両方について１回実行される。
【００１８】
本発明のもう１つの態様によれば、複数のイメージ内の複数のオブジェクトをレンダリングする方法が開示される。さまざまな技法に、複数のイメージからのイメージごとに、複数のオブジェクトからの第１オブジェクトをレンダリングすることが含まれる。レンダリングに、複数のイメージからのイメージごとに第１オブジェクトについて実行されるレンダリング・オペレーションの第１群と、複数のイメージからの複数のイメージについて第１オブジェクトについて１回実行されるレンダリング・オペレーションの第２群が含まれる。
【００１９】
本発明のもう１つの態様によれば、複数のイメージ内の複数のオブジェクトをレンダリングするコンピュータ・システムが開示される。このコンピュータ・システムに、Ｎ個のイメージを含む複数のイメージを保管するように構成されたメモリと、プロセッサとが含まれる。プロセッサは、複数のオブジェクトからの第１オブジェクトのレンダリング・オペレーションの第１群を、複数のイメージからのイメージごとに１回ずつ、Ｎ回実行するように構成される。プロセッサは、複数のイメージについて、複数のオブジェクトからの第１オブジェクトのレンダリング・オペレーションの第２群を、Ｍ回実行するようにも構成され、Ｍ＜Ｎである。
【００２０】
本発明の一態様によれば、第１イメージと第２イメージを含む複数のイメージ内のオブジェクトをシェーディングする方法が説明される。１つの技法に、第１オブジェクトのジオメトリック記述を受け取ることと、第１イメージと第２イメージの両方について１回、第１オブジェクトのジオメトリック形状に応答して第１オブジェクトのシェーディング・オペレーションの第１の組を実行することが含まれる。方法に、第１イメージ内の第１オブジェクトのシェーディング・オペレーションの第２の組を実行することと、第２イメージ内の第１オブジェクトのシェーディング・オペレーションの第３の組を実行することも含まれる。さまざまな方法に、第１イメージ内の第１オブジェクトのシェーディング値を決定するために、第１オブジェクトのシェーディング・オペレーションの第１の組の結果と第１オブジェクトのシェーディング・オペレーションの第２の組の結果とを組み合わせることと、第２イメージ内の第１オブジェクトのシェーディング値を決定するために、第１オブジェクトのシェーディング・オペレーションの第１の組の結果と第１オブジェクトのシェーディング・オペレーションの第３の組の結果とを組み合わせることも含まれる。
【００２１】
本発明のもう１つの態様によれば、Ｎ個のイメージ内の複数のオブジェクトをシェーディングする方法が説明される。１つの技法に、Ｎ個のイメージの複数のオブジェクトからのあるオブジェクトのシェーディング計算を１回実行することが含まれる。さらに、そのオブジェクトのシェーディング計算の第１の組が、Ｍを超えない回数だけ、そのオブジェクトのジオメトリック・データに応答して実行され、ＭはＮ未満である。
【００２２】
本発明のもう１つの態様によれば、プロセッサを含むコンピュータ・システム内で複数のイメージ内のオブジェクトをシェーディングするコンピュータ・プログラム製品が開示される。コンピュータ・プログラム製品に、Ｎ個のイメージについてＭ回だけ第１オブジェクトのシェーディング・オペレーションの第１の組を実行するようにプロセッサに指示するコードと、Ｎ個のイメージについてＮ回だけ第１オブジェクトのシェーディング・オペレーションの第２の組を実行するようにプロセッサに指示するコードと、Ｎ個のイメージの第１オブジェクトのシェーディング値を決定するために、第１オブジェクトのシェーディング・オペレーションの第１の組と第１オブジェクトのシェーディング・オペレーションの第２の組とを組み合わせるようにプロセッサに指示するコードとを含めることができる。さまざまな実施形態で、Ｍ＜Ｎである。コンピュータ・コードは、通常、不揮発性メモリ、光メモリ、ハード・ディスク・ドライブ、ネットワーク・ストレージ・ドライブ、または類似物などの有形の媒体に常駐する。
【発明を実施するための最良の形態】
【００２３】
本発明をより完全に理解するために、添付図面を参照する。これらの図が、本発明の範囲における制限と考えられてはならないことを理解して、本発明のこれから説明する実施形態と現在理解されている最良の形態を、添付図面の使用を介して追加の詳細と共に説明する。
【００２４】
図１は、本発明の一実施形態による通常のコンピュータ・レンダリング・システム１００のブロック図である。
【００２５】
この実施形態では、コンピュータ・システム１００に、通常、モニタ１１０、コンピュータ１２０、キーボード１３０、ユーザ入力デバイス１４０、ネットワーク・インターフェース１５０、その他の類似物が含まれる。
【００２６】
この実施形態では、ユーザ入力デバイス１４０が、通常、コンピュータ・マウス、トラックボール、トラック・パッド、無線リモート、その他の類似物として実施される。ユーザ入力デバイス１４０は、通常、ユーザに、モニタ１１０に表示されるオブジェクト、アイコン、テキスト、その他の類似のものを選択させることができる。
【００２７】
ネットワーク・インターフェース１５０の実施形態に、通常、イーサネット・カード、モデム（電話、衛星、ケーブル、ＩＳＤＮ）、（非同期）ディジタル加入者回線（ＤＳＬ）ユニット、その他が含まれる。ネットワーク・インターフェース１５０は、通常、図示のようにコンピュータ・ネットワークに結合される。他の実施形態では、ネットワーク・インターフェース１５０を、コンピュータ１２０のマザーボードに物理的に統合することができ、ソフトＤＳＬまたはその類似のソフトウェア・プログラムとすることができる。
【００２８】
コンピュータ１２０に、通常、プロセッサ１６０と、ランダム・アクセス・メモリ（ＲＡＭ）１７０、ディスク・ドライブ１８０などのメモリ・ストレージ・デバイスと、これらの構成要素を相互接続するシステム・バス１９０などの馴染みのあるコンピュータ構成要素が含まれる。
【００２９】
一実施形態で、コンピュータ１２０は、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ社のＸｅｏｎ（商標）マイクロプロセッサなどの複数のマイクロプロセッサを有するＰＣ互換コンピュータである。さらに、この実施形態では、コンピュータ１２０に、通常は、ＵＮＩＸベースのオペレーティング・システムが含まれる。
【００３０】
ＲＡＭ  １７０とディスク・ドライブ１８０は、データ、オーディオ／ビデオ・ファイル、コンピュータ・プログラム、アプレット・インタープリタまたはアプレット・コンパイラ、仮想マシンの保管、さらにジオメトリック・シーン・データを含む記載された発明の実施形態、オブジェクト・データ・ファイル、シェーダ記述子、レンダリング・エンジン、出力イメージ・ファイル、テクスチャ・マップ、変位マップ、その他の類似のものの保管のための有形の媒体の例である。他のタイプの有形の媒体に、フロッピ・ディスク、リムーバブル・ハード・ディスク、ＣＤ−ＲＯＭやバー・コードなどの光記憶媒体、フラッシュ・メモリ、読取専用メモリ（ＲＯＭ）、バッテリバックアップ式揮発性メモリなどの半導体メモリ、ネットワーク接続されたストレージ・デバイス、その他の類似物が含まれる。
【００３１】
この実施形態では、コンピュータ・システム１００に、ＨＴＴＰプロトコル、ＴＣＰ／ＩＰプロトコル、ＲＴＰ／ＲＴＳＰプロトコル、その他の類似のものなど、ネットワークを介する通信を可能にするソフトウェアも含めることができる。本発明の代替実施形態では、たとえばＩＰＸ、ＵＤＰ、またはそれと類似した他の通信ソフトウェアやトランスポート・プロトコルも使用することができる。
【００３２】
図１は、本発明を実施できるコンピュータ・レンダリング・システムを表す。多数の他のハードウェア構成やソフトウェア構成が、本発明と共に使用するのに適することが、当業者にはすぐに明白になる。たとえば、Ｐｅｎｔｉｕｍ（商標）マイクロプロセッサまたはＩｔａｎｉｕｍ（商標）マイクロプロセッサ、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ社のＯｐｔｅｒｏｎ（商標）マイクロプロセッサまたはＡｔｈｌｏｎＸＰ（商標）マイクロプロセッサ、Ｍｏｔｏｒｏｌａ，Ｉｎｃ．社のＰｏｗｅｒＰＣ  Ｇ３（商標）マイクロプロセッサ、Ｇ４（商標）マイクロプロセッサ、その他の類似物などの他のマイクロ・プロセッサの使用が企図されている。さらに、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社のＷｉｎｄｏｗｓＸＰ（登録商標）、ＷｉｎｄｏｗｓＮＴ（登録商標）、または類似のＷｉｎｄｏｗｓ（登録商標）オペレーティング・システム、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社のＳｏｌａｒｉｓ、ＬＩＮＵＸ、ＵＮＩＸ、Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ  Ｃｏｒｐｏｒａｔｉｏｎ社のＭＡＣ  ＯＳ、その他の類似の他のタイプのオペレーティング・システムが企図されている。
【００３３】
図２は、本願を使用した用語を示す図である。具体的に言うと、図示されているように、仮想カメラ２００が、イメージごとに定義される。仮想カメラ２００は、イメージ平面２１０に関連し、イメージ平面２１０は、イメージが記録される２次元平面を定義する。イメージ平面２１０から、レンダリングされるイメージの外側境界を定義するスクリーン・ウィンドウ２２０が定義される。画素位置２３０が、スクリーン・ウィンドウ２２０内で定義される。本発明の一実施形態では、スクリーン・ウィンドウ２２０が、２０００水平画素と１０００垂直画素の画素解像度を有する。本発明の他の実施形態では、水平方向または垂直方向でのより高いまたはより低い画素解像度が心に描かれている。
【００３４】
図３Ａ〜Ｃは、本発明の実施形態によるフロー処理のブロック図である。具体的に言うと、このブロック図は、アニメーションの個々のフレーム（イメージ）が、実質的に同時にまたは時間的に近くでレンダリングされる処理を開示するものである。
【００３５】
この実施形態では、実質的に同時にレンダリングされる個々のフレームを、イメージの「ショット」と称する。ショットに、アニメーションの複数のフレームを含めることができ、時間的に連続するフレームを含めることができ、同一時刻を表す（カメラ、ライティングなどが異なる）フレームを含めることができ、時間的に分離されたフレームを含めることができる。
【００３６】
本発明の一実施形態で、処理は、レンダリングされるイメージの指定、ステップ３００から始まる。この例では、イメージ指定に、１つまたは複数のシーン背景の指定、イメージ内のオブジェクトとテクスチャの指定、イメージに適用されるライティングの指定、オブジェクト配置データの指定、シーン内のオブジェクトのアニメーション・パラメータ、変位マップ、その他の類似のもの指定が含まれる。通常、イメージは、現在入手可能な普通の３次元モデリング技法やソフトウェアを使用することによって１人または複数のアニメータによって指定される。たとえば、Ａｌｉａｓ｜Ｗａｖｅｆｒｏｎｔ社のＭａｙａ（商標）ソフトウェアなどのソフトウェアやその類似物を使用して、シーンを指定することができる。
【００３７】
この例では、背景の指定に、通常、下で説明するオブジェクトが配置される位置または「セット」のジオメトリック指定が含まれる。ジオメトリック指定に、ジオメトリック境界、１つまたは複数の「環境」マップ、その他を含めることができる。これらの環境マップは、静的とするか、時と共に変化するものとすることができる。本発明の例では、セットは、部屋、屋内の位置、屋外の位置、または類似のものなど、オブジェクトが配置される位置を表すことができる。
【００３８】
オブジェクトは、アニメータによってセット内に配置または位置決めされる。これらのオブジェクトは、家具、植物、乗物、その他の類似物など、シーン内の無生物オブジェクトである。さらに、これらのオブジェクトを、たとえばキャラクタ、椅子、ドア、その他の類似物など、シーン内で移動するか移動されるオブジェクトとすることができる。この実施形態では、オブジェクトを、単純なものから複雑なものまでとすることができ、一部のオブジェクトが、１つまたは複数のより小さいオブジェクトから形成される。いくつかの実施形態で、オブジェクトの一部だけを、メモリから取り出すことができ、そのオブジェクトの残りの部分は、レンダリングされる前に動的に作成される。単なる例として、映画モンズターズ・インク（商標）のキャラクタ、サリー（商標）に、３００万個を超える髪オブジェクトが含まれるが、約１００万個の髪オブジェクトだけがメモリに保管され、残りの２００万個の髪オブジェクトは、オン・ザ・フライで生成される。その場合に、動的に生成されるオブジェクトを、手続的に生成されたオブジェクト(procedurally generated object)と呼ぶ。
【００３９】
この実施形態では、オブジェクトが、通常は互いに別々に保管される。すなわち、各オブジェクトを、それ自体のファイルに保管し、コンピュータ・ファイル・システムによって取り出すことができる。本発明の他の実施形態では、複数のオブジェクトのデータを、単一のファイルに含めることができる。
【００４０】
イメージ内のオブジェクトの指定に、そのようなオブジェクトの表面処理の指定も含めることができる。たとえば、イメージ内の単一のオブジェクトに、ベース・テクスチャ、ほこり、損傷、くぼみ、変位、数式、その他のものを指定するテクスチャ・マップなどの複数の表面処理を関連付けることができる。この実施形態では、表面処理が、通常、オブジェクトと別々のファイルとして保管される。他の実施形態では、オブジェクトと関連する表面処理を、単一のファイルに一体化することができる。
【００４１】
イメージ内でオブジェクトが置かれるか位置決めされる位置は、通常はアニメータによって指定される。イメージ内で動かないオブジェクトについて、配置位置は、静的すなわちショット不変である。しかし、ショット内で動くオブジェクトに対して、配置データは、通常、オブジェクトの最初の位置および／または方位を表す。異なるイメージ内で動く時の動くオブジェクトの位置は、アニメーション・パラメータによって決定される。
【００４２】
この実施形態で、各シーンに、通常、光源やライティング・パラメータの指定が含まれる。ライティング・データに、光源、ライト・タイプ（たとえば、拡散、点）、ライティング位置、ライティング距離、その他を含めることができる。このライティング・データを、単一のファイルまたは複数のファイルに保管することができる。
【００４３】
この例では、シーン内で動くオブジェクトのアニメーション・データに、通常、動くオブジェクトがシーン内で当初はどこに置かれるかの指定を含めることができ、特定のオブジェクトがイメージ内のどこに動くかに関するデータが含まれる。この実施形態では、データが、空間内の特定の点を指定することができ、あるいは、空間内の点を決定する数式を指定することなどができる。多数の普通の方法を使用して、アニメーション・データを指定することができる。この実施形態では、アニメーション・データを、個々のファイルに保管することができ、あるいは、上で説明したデータ要素のうちの１つまたは複数と組み合わせることができる。
【００４４】
図３Ａでは、示された次のステップが、イメージの「ショット」を構成する複数のイメージの識別、ステップ３１０である。一実施形態で、ショットに、シーケンシャル・フレームを含めることができる。他の実施形態で、ショットに、同一のジオメトリック背景とオブジェクトを使用するが異なる時刻の複数のイメージ（非シーケンシャル・フレーム）を含めることができ、ショットに、同一のジオメトリック背景とオブジェクトを使用するが、異なるカメラ・アングル（「アングル」）からの複数のイメージを含めることができる。もう１つの実施形態で、ショットに、「ブラケットされた（ｂｒａｃｋｅｔｅｄ）」レンダリング・パラメータとともに同一のジオメトリック・データとオブジェクトを使用する複数のイメージを含めることができる。言い換えると、ショット内のイメージは、ほぼ実質的に同一のレンダリング・パラメータを有するが、たとえば＋１ＥＶ、＋０ＥＶ、−１ＥＶ調整など、普通の写真で一般的であるようにブラケットされた１つ（または複数）のレンダリング・パラメータを有することができる。本発明の実施形態では、ブラケットされたとすることのできるレンダリング・パラメータに、１つまたは複数の光強度の変更、たとえば表面の粗さなど、表面のテクスチャの変更、ライト位置の変更、「バーン・ドア(barn door)」光境界の変更、テクスチャ・ノイズ周波数（周波数制御を用いる手続テクスチャベース・ノイズ）の変更、その他を含めることができる。この場合に、ダイシング、サーフェスハイディング(surface-hiding：隠面処理)、シェーディング・オペレーションの多く、その他を、ショットについて１回実行することができる。下の実施形態では、ショット内のイメージが、通常、類似するジオメトリック・シーン・データ、オブジェクト・データ、その他を共用する。
【００４５】
この実施形態では、「第１オブジェクト」が、ショット内の異なるイメージのイメージ平面に最も近いオブジェクトとしてレンダリング・システムによって推定される、ステップ３２０。この実施形態では、レンダリング・システムは、オブジェクト配置データに基づいて、どのオブジェクトがカメラに最も近いかを推定することができる。他の実施形態では、たとえば、最も複雑でないオブジェクト、ショット内の最大個数のイメージに現れるオブジェクト、選択されたオブジェクト（たとえば、メイン・キャラクタ）、その他のものなど、任意のオブジェクトを「第１オブジェクト」として選択することができる。
【００４６】
本発明の一実施形態では、次に、オブジェクトを要求する、ステップ３３０。この例では、要求は、そのオブジェクトおよび／または他のオブジェクトを含む、ローカル・ディスク・ドライブまたはネットワーク・ドライブからのファイルに関するものとすることができる。オブジェクトを複数のサブオブジェクトから構成することができるので、データ・ファイルに、複数のサブオブジェクトの指定が含まれる場合がある。この実施形態では、通常のシーン記述が大きく、単なる例として、３００ギガバイト程度またはそれ以上である。したがって、本発明者は、一時に１オブジェクトをシーン記述データから処理できると判定した。
【００４７】
この要求に応答して、オブジェクトが、プログラム・メモリに保管される、ステップ３４０。一実施形態で、ストリーミング・テクノロジが使用され、その結果、データ・ファイル全体がまだ完全にメモリによって取り出されていなくても、レンダリング・エンジンがオブジェクトの処理を開始できるようになっている。他の実施形態で、レンダリング・エンジンは、メモリから取り出された後にオブジェクトの処理を開始する。オブジェクトは、通常、１つまたは複数のジオメトリックプリミティブまたはモデリング・プリミティブからなる。
【００４８】
本発明の一実施形態で、オブジェクトは、オブジェクトの初期指定に基づいて動的に決定される。たとえば、オブジェクトの一部を指定し、ネットワーク・ドライブに保管することなどができる。次に、オブジェクトが要求された時に、オブジェクトの指定された部分を使用して、そのオブジェクトの残りの部分を動的に構成することができる。
【００４９】
この実施形態では、オブジェクトを指定したならば、ジオメトリックプリミティブが、ポリゴン・メッシュまたはグリッドに分解される、ステップ３５０。オブジェクトを小さいポリゴンに分解する処理を、産業界で理解されているように、「ダイシング」と称する。多数の普通の技法を使用して、オブジェクトをダイシングすることができ、たとえば、ダイシングは、オブジェクトを三角形、４辺を有するポリゴン、その他の類似物に分割することができる。この実施形態では、小さいポリゴンのそれぞれが、イメージ平面内の画素とほぼ同一のサイズにセットされるが、他の実施形態では、このサイズをより小さくまたはより大きくすることができる。この例では、小さいポリゴンの頂点が、識別され、頂点の座標位置が、プログラム・メモリまたはディスク・メモリに保管される。
【００５０】
この実施形態では、オブジェクトが、ショット内の全イメージでイメージ平面に最も近い位置にある時に限って、１回ダイシングされることが好ましい。それを行うことによって、そのオブジェクトがショット内の他のイメージに現れた時に、レンダリング・システムがそのオブジェクトを再ダイシングする必要がなくなる。他の実施形態で、ショット内の異なるイメージの間でオブジェクトのサイズに大きい差がある場合に、レンダリング・システムは、オブジェクトの再ダイシングが有利である可能性があることを判定することができる。これらの実施形態の例を、図４Ａ〜Ｂに示す。
【００５１】
図４Ａ〜Ｂに、本発明の実施形態の例を示す。図４Ａでは、オブジェクトが、あるフレームでオブジェクト５００として現れ、別のフレームでオブジェクト５１０として現れる。図からわかるように、オブジェクト５００は、普通のアルゴリズムを使用してダイシングされており、結果のポリゴン・グリッドに５６個の頂点が含まれる。一実施形態で、レンダリング・システムは、イメージ内のオブジェクト５１０について、同一のポリゴン・グリッド（５６頂点）を使用することができる。それを行うことによって、レンダリング・エンジンが、このオブジェクトをレンダリングする時に再ダイシングを行う必要がなくなる。
【００５２】
もう１つの実施形態で、レンダリング・システムが、前にダイシングされたオブジェクトを選択的に再ダイシングすることができる。たとえば、図４Ｂで、オブジェクトは、あるフレームにオブジェクト５２０として現れ、別のフレームにオブジェクト５３０として現れる。オブジェクト５２０の初期ダイシングは、９８個の頂点を指定するポリゴン・グリッドによって示されている。このダイシングは、ショット内の他のイメージでこのオブジェクトをレンダリングする時に使用することができる。しかし、いくつかの場合に、レンダリング・エンジンが、オブジェクトを再ダイシングしなければならないと判定することがある。たとえば、オブジェクトが、ショット内のかなりの数のイメージについてオブジェクト５３０として現れる場合に、レンダリング・エンジンは、オブジェクト５２０に使用されたダイシングがほとんどのイメージに不要と判定することができる。したがって、レンダリング・エンジンは、オブジェクト５３０（２６頂点）に示されているようにこのオブジェクトを再ダイシングし、ショット内の異なるイメージ内のオブジェクトにこのダイシングを使用することができる。そのような実施形態では、オブジェクトのレンダリング時間が減る。
【００５３】
図３Ａに戻ると、レンダリング・エンジンは、次に、オブジェクトに対する変位マッピング・オペレーションを実行する。変位マッピングという概念は、本願の記名された発明者であるＲｏｂｅｒｔ  Ｌ．Ｃｏｏｋによって開拓された。変位マッピングを用いると、オブジェクト表面に、くぼみ、溝、かさぶた、粗さ、またはパターンなどの小さいジオメトリック的表面詳細を与えることができる。
【００５４】
この実施形態では、レンダリング・エンジンが、下でさらに説明する変位「シェーダ」を実装して、このマッピングを実行する。動作時に、レンダリング・エンジンは、上のダイシング処理から頂点Ｐを取り出し、オフセット・ベクトルの組を取り出す、ステップ３６０。次に、レンダリング・エンジンは、それぞれのオフセット・ベクトルに従って、頂点Ｐの位置をオフセットさせる、ステップ３７０。この実施形態では、オフセット・ベクトルの組を、ランダム・ノイズ型パターン、式、所定のパターン、またはそのものとすることができる。さらに、オフセット・ベクトルを、オブジェクトの表面（ｘ、ｙ方向）に沿う、それぞれの頂点Ｐに垂直（＋／−ｚ方向）、または類似物とすることができる。
【００５５】
下で説明するシェーディング処理中に、法線ベクトルＮが、頂点Ｐの変位後の位置に基づいて、頂点Ｐごとに計算される。この実施形態では、変位後頂点位置を、プログラム・メモリに保管するかディスクに保管する。
【００５６】
本発明の一実施形態では、非常に少数の、時には１つだけのダイシング方式と変位後頂点の１組が、ショットごとのすべてのイメージをレンダリングする時にオブジェクトについて使用される。本発明の発明者は、ショットの複数のイメージについてオブジェクトをレンダリングする時に、ダイシング方式と変位後頂点の異なる組がイメージごとに使用される場合に、オブジェクトの表面に望ましくない効果が表れる場合があることを発見した。たとえば、ダイシング・レートが、ショット内の異なるイメージについて異なる場合に、表面が、波打ってまたは移動して見える場合がある。したがって、ショット内のオブジェクトの表面での意図されない変動を減らすために、１つのダイシング・レートだけが、オブジェクトのレンダリングに使用される。
【００５７】
他の実施形態で、変位後オフセット頂点の複数の組を使用して、１ショット内の異なるイメージのオブジェクトを表すことができる。図４Ｂに示された例では、オブジェクトが、１ショット内の異なるイメージ内で劇的にサイズを変更される時に、レンダリング・エンジンが、そのオブジェクトについて異なるダイシング方式と、変位後オフセット頂点の異なる組を使用することができる。たとえば、レンダリング・エンジンは、ショット内の複数のイメージのオブジェクトについて、オブジェクト５２０など、そのオブジェクトがイメージ平面に近い時に、変位後オフセット頂点の第１の組を使用することができる。さらに、レンダリング・エンジンは、ショット内の複数のイメージのオブジェクトについて、オブジェクト５３０など、そのオブジェクトがイメージ平面から遠い時に、変位後オフセット頂点の第２の組を使用することができる。
【００５８】
本発明の他の実施形態では、バンプ・マッピング技法を実装することもできる。たとえば、バンプ・マッピング技法を使用することによって、各頂点Ｐに関連する法線Ｎを変更して、変更された法線の組を形成することができる。次に、変更された法線の組が、レンダリング・エンジンによって、ショット内のイメージ内のオブジェクトの外見を計算するのに使用される。しかし、変位マッピングと対照的に、頂点Ｐは、実際には移動されず、変位されない。この例では、上のオペレーション（ステップ３４０〜３７０）が、時間不変またはショット固有のレンダリング・オペレーションである。言い換えると、これらのレンダリング・オペレーションは、ショット内の複数のフレームについて同一であるか実質的に類似する。したがって、レンダリング時間を減らすために、実質的に類似するレンダリング・オペレーションは、ショット内のすべてのフレームについて繰り返されない、すなわち、ジオメトリック・データが、ストレージから１回取り出され、頂点変位が１回実行されるなどである。テクスチャリング・オペレーション、手続ジオメトリック・データ生成、その他など、多くの他のタイプの時間不変レンダリング・オペレーションを、他の実施形態で含めることができる。
【００５９】
図３Ａ〜Ｃに示された実施形態に戻ると、次のステップの一部は、一般に、ショット内のイメージごとに実行される。言い換えると、下で説明するステップの一部は、通常、ショット内の各個々のイメージのコンテキストでオブジェクトについて実行される、すなわち、ショット固有ではなくイメージ固有またはフレーム固有である。
【００６０】
実装の観点から、一実施形態で、各オブジェクトのレンダリングを、レンダリング・エンジン内の同時処理スレッドに関連付けることができる。いくつかの実施形態で、レンダリング・エンジンは、通常、マルチスレッド式オペレーティング・システムで走行し、したがって、これらの処理スレッドは、異なる時に実行される可能性がある。たとえば、いくつかの処理スレッドが、実質的に同時に実行される可能性があり、いくつかの処理スレッドが、他の処理スレッドの前に完了する可能性があり、いくつかの処理スレッドが、オーバーラップする可能性があるなどである。実施形態で、これらの処理スレッドを、実質的に同時にまたはシーケンシャルに走行するようにスケジューリングすることができる。他の実施形態では、各ショットのレンダリングが、１つの処理スレッドに関連する。
【００６１】
レンダリング処理は、図３Ａ〜３Ｃで継続される。この実施形態で、オブジェクトは、通常、各イメージの座標系で位置決めされる。具体的に言うと、オブジェクトを、イメージに現れるサイズにスケーリングし、必要な場合に、正しい方位に向けることができる（集合的に、データの位置決め）。一実施形態で、これを行うために、レンダリング・エンジンは、各イメージのオブジェクトのそれぞれの位置決めデータによって、各イメージの変位後オフセット頂点の組を変更する。他の実施形態で、変形や類似物を含む追加オペレーションを、オブジェクトに対して実行することができる。
【００６２】
次に、オブジェクトのヒットテスト処理を実行する、ステップ３８０。この実施形態では、ヒット・テストに、オブジェクトの各頂点の位置をｚバッファ内のデータと比較することが含まれる。したがって、ｚバッファ内のデータよりイメージ平面に近い頂点ごとに、その頂点が、可視と考えられ、したがって、潜在的にレンダリング可能と考えられる。同様に、オブジェクトの頂点が、ｚバッファ内のデータより大きいｚ深さを有する（イメージ平面からより遠い）場合に、その頂点は隠されている。したがって、本発明者は、隠れ頂点をレンダリングする必要がなく、したがってレンダリング時間が減ることを認めた。
【００６３】
この実施形態では、その後、ｚバッファを、オブジェクトからの深さ情報を用いて更新する。このｚバッファ・データは、その後、レンダリングされる次の連続するオブジェクトのヒットテスト・オペレーションに使用することができる。
【００６４】
この実施形態では、追加テストが、イメージ平面内のスクリーン・ウィンドウの外側寸法との各頂点の比較である。言い換えると、ヒット・テストに、オブジェクトの各頂点が、レンダリングされるイメージ内のｘ−ｙ値を有するかどうかの判定を含めることができる。スクリーン・ウィンドウ内の頂点は、潜在的にレンダリング可能であり、スクリーン・ウィンドウ外の頂点は、レンダリングする必要がない。このステップが完了した後に、オブジェクトが潜在的に可視であるイメージごとに、スクリーン・ウィンドウ内であると同時に可視であるオブジェクトの頂点の位置が、プログラム・メモリまたはディスク・メモリに保管される。
【００６５】
この実施形態では、示されているように、このステップが、ショット内のイメージごとに実行される、すなわち、ヒットテストが、各イメージに固有である。これは、オブジェクトが、異なるイメージで異なる方位にある可能性があり、カメラ・パラメータ（たとえば、位置、方向、視野）が、イメージごとに異なる可能性があるなどがあるからである。レンダリング・エンジンは、通常、次のイメージに対して、あるイメージのオブジェクトのヒットテスト結果に頼らないので、このステップは、通常、オブジェクトが潜在的に可視であるイメージごとに実行される。本発明の実施形態で、これらの処理は、互いに独立にｓｐａｗｎすることができ、これらの処理は、順次、並列、オーバーラップする、または類似物とすることができる。一実施形態で、ヒットテスト・オペレーションが、イメージ固有レンダリング・オペレーションである。他の可視性オペレーション、レイ・トレーシング・オペレーション、その他の類似物など、多くの他のタイプのイメージ固有レンダリング・オペレーションを実行することもできる。
【００６６】
上で説明した「ブラケッティング」実施形態などの他の実施形態で、ショット内の異なるイメージが、ブラケットされたレンダリング・パラメータを有することができるが、残りのレンダリング・オペレーションは、実質的に同一のままになる。たとえば、ヒットテストの場合に、シーン内のオブジェクトの方位が移動せず、かつ／またはカメラが「ロックダウン」される場合に、ヒットテスト・オペレーションは、イメージ固有ではなく、時間不変である。したがって、このヒットテスト・オペレーションは、そのショットについて１回だけ実行すればよい。
【００６７】
本発明のもう１つの実施形態では、あるレンダリング・オペレーションが、ショット内の一部のオブジェクトについてイメージ固有であり、ショット内の他のオブジェクトについて時間不変である場合がある。言い換えると、一部のレンダリング・オペレーションが、イメージ内の１オブジェクトについてイメージ固有であるが、イメージ内の別のオブジェクトについて時間不変である場合がある。たとえば、背景オブジェクトがロックダウンされているショットで、そのショットのイメージ内のこれらのオブジェクトに関するヒットテスト・オペレーションは、時間不変である可能性があり、前景オブジェクトが移動する場合に、イメージ内のこれらのオブジェクトに関するヒットテスト・オペレーションは、時間変動またはイメージ固有である。もう１つの例として、背景オブジェクトに対して走行するシェーディング・オペレーションは、ショット内で時間不変である場合があるが、前景オブジェクトに対して走行する同一のシェーディング・オペレーションが、時間変動であり、イメージ固有である場合がある。他の実施形態では、ショット内で、あるオブジェクトに関するいくつかのレンダリング・オペレーションが、ショット内のフレームの第１の組について時間不変であり、ショット内のフレームの第２の組について時間変動である場合がある。本願に鑑みて、当業者は、本明細書に詳細に開示されていない多数の他の実施形態にこれらの概念を適用することができる。
【００６８】
この実施形態では、次のステップが、オブジェクト・シェーディング処理を表す。Ｐｉｘａｒ社のレンダリング・テクノロジは、光と表面の相互作用を記述するのに「シェーディング言語」を使用する。具体的に言うと、ＲｅｎｄｅｒＭａｎ（商標）で、Ｐｉｘａｒ社は、光源の出力と、光がイメージ内のオブジェクトの表面によってどのように減衰するかを記述するシェーディング言語を導入した。
【００６９】
この実施形態では、通常のシェーダに、経時的に変化してもしなくてもよいシェーディング関数とシェーディング・パラメータが含まれる。ショット内のイメージの間でオブジェクトについて変化しない関数とパラメータについて、そのようなシェーディング関数を、「不変」シェーディング関数（ショット固有）と称する。さらに、ショット内のイメージの間でオブジェクトについて変化するシェーディング関数を、「可変（ｖａｒｉａｎｔ）」シェーディング関数（イメージ固有）と称する。
【００７０】
プラスティックから作られたオブジェクトの単純な表面シェーダの例を、下に示す。
surface
paintedplastic( float Ka = 1, Kd = .5, Ks = .5, roughness = .1;
color specularcolor = 1;
string texturename = "texture";)
{
extern vector N, I;
extern color Cs;
color Ct = Cs;
if (texturename != "")
Ct *= color texture(texturename);
normal Nf = faceforward(Normalize(N), I);
vector V = -normalize(I);
Ci = Ct *(Ka* ambient() + Kd * diffuse(Nf)) +
specularcolor * Ks * specular(Nf, V, roughness);
Oi = Os;
Ci *= Oi;
}
【００７１】
このシェーダについて、
Ｋａは、ユーザ定義の環境光パラメータを表し、
Ｋｄは、ユーザ定義の拡散光パラメータを表し、
Ｋｓは、ユーザ定義のスペキュラ・パラメータを表し、
ｒｏｕｇｈｎｅｓｓは、ユーザ定義の表面粗さパラメータを表し、
Ｎは、表面位置からの正規化されたベクトルを表し、
Ｉは、ビューイング位置から表面位置へのベクトルを表し、
Ｎｆは、ビューイング位置に向かうＮのベクトル成分を表し、
Ｖは、表面位置からビューイング位置への正規化されたベクトルを表し、
ｓｐｅｃｕｌａｒｃｏｌｏｒは、ユーザ定義のスペキュラ色パラメータを表し、
ｔｅｘｔｕｒｅは、テクスチャ・マップのユーザ定義のファイル名を表し、
Ｃｓは、オブジェクトのデフォルト表面色パラメータを表し、
Ｃｔは、テクスチャ・マップ「ｔｅｘｔｕｒｅ」を乗算されたデフォルト表面色パラメータを表し、
関数ａｍｂｉｅｎｔ（）は、非指向性光の光寄与を返し、
関数ｄｉｆｆｕｓｅ（Ｎｆ，Ｖ）は、幅広く均一に散乱した反射の近似からの光寄与を返し、
関数ｓｐｅｃｕｌａｒ（Ｎｆ，Ｖ，ｒｏｕｇｈｎｅｓｓ）は、光源からの表面のスペキュラ反射に起因する光寄与を返し、
Ｃｉは、オブジェクトのローカル照明モデルを表す。
【００７２】
上の例を使用すると、Ｋａ、Ｋｄ、Ｋｓ、ｒｏｕｇｈｎｅｓｓ、ｔｅｘｔｕｒｅ、ｓｐｅｃｕｌａｒｃｏｌｏｒ、その他の類似物などの多くのパラメータが、通常、ショット全体を通じて一定に保たれる（ショット固有）。しかし、これらのパラメータは、時間の関数として定義することができる、すなわち、時間可変シェーディング関数とすることができる（イメージ固有）。たとえば、そのようなパラメータは、オブジェクトとライトが１ショット内でお互いに関して動く場合に変更することができる。もう１つの例として、ショット中に色が変化するカメレオンタイプのオブジェクトをレンダリングするために、パラメータＣｓを、時間と共に変更することができる。
【００７３】
多くの場合に、オブジェクトに関する他のシェーディング・パラメータの一部が、時間の関数（イメージ固有）である。たとえば、ベクトルＩは、カメラがイメージ・フレームの間で移動する際に変化し、関数ａｍｂｉｅｎｔ（）、ｄｉｆｆｕｓｅ（）、ｓｐｅｃｕｌａｒ（）は、イメージ・フレームの間でライトが追加され、減らされ、または位置を変更される時に変化する。本発明者は、時間可変シェーディング関数と時間不変シェーディング関数が、通常、前もって知られていることを認めた。したがって、本発明者は、レンダリング・エンジンに、時間不変シェーディング関数と時間可変シェーディング関数を明らかにすることができる。
【００７４】
この実施形態では、レンダリング・エンジンが、このシェーディング情報をアニメータから前もって受け取る。この情報は、通常、シェーディング計算へのどの入力がオブジェクトについて時間に依存しないか（ショット不変）と、どの計算が時間に依存するか（イメージ固有）を識別する、ステップ３９０。
【００７５】
この実施形態の他の実施形態では、レンダリング・エンジンが、オブジェクトに関してシェーダによって使用される入力を分析することによって、ショット内のフレームについてオブジェクトのどのシェーディング計算が同一であるかを自動的に動的に識別するか判定することができる。これを行う形に、どのシェーディング・オペレーションがショット内の異なるフレームについて異なる入力パラメータを有するかをレンダリング・エンジンが判定することを含めることができる。
【００７６】
レンダリング・エンジンは、次に、オブジェクトの時間不変シェーディング計算を実行する、ステップ４００。例として、上のシェーディング・コードを参照すると、デフォルト表面色Ｃｓとテクスチャ・マップが時間に依存しない場合に、Ｃｔを、ショットのオブジェクトについて計算することができる。通常、これらの計算は、オブジェクトに関する１つまたは複数の中間ショット・シェーディング値をもたらす。これらの中間シェーディング値は、プログラム・メモリまたはディスク・メモリに保管することができる。
【００７７】
次に、ショット内の各イメージのオブジェクトについて、時間可変シェーディング関数を計算する、ステップ４１０。たとえば、１つまたは複数のライトが、一連のイメージで移動するか、オン／オフに切り替えられる場合、またはオブジェクトかカメラがイメージの間で移動する場合に、関数ｓｐｅｃｕｌａｒ（Ｎｆ，Ｖ，ｒｏｕｇｈｎｅｓｓ）が、イメージごとに計算される。これらの中間イメージ・シェーディング値も、プログラム・メモリまたはディスク・メモリに保管することができる。
【００７８】
この実施形態では、イメージごとに、レンダリング・エンジンが、次に、ショット内のオブジェクトの最終シェーディング計算を実行する、ステップ４２０。一実施形態で、オブジェクトの中間ショット・シェーディング値と中間イメージ・シェーディング値が数学的に組み合わされ、オブジェクトのグリッド位置のほとんどに関する最終シェーディング値がもたらされる。この実施形態の他の実施形態では、ステップ４１０、４２０を一緒に実行することができる。たとえば、中間ショット・シェーディング値をステップ４１０への入力として使用して、単一のステップでオブジェクトの最終シェーディング値を決定することができる。
【００７９】
本発明の実施形態では、ステップ４１０、４２０がシーケンシャルである必要はない。たとえば、他の実施形態で、ステップ４２０をステップ４１０の後にすることができる。もう１つの実施形態で、時間不変シェーディング計算を、時間可変シェーディング計算とインターリーブすることができる。たとえば、１つの時間不変レンダリング・オペレーションを実行し、２つの時間可変レンダリング・オペレーションを実行し、もう１つの時間不変レンダリング・オペレーションを実行し、もう１つの時間可変レンダリング・オペレーションを実行するなどである。この処理は、すべてのレンダリング・オペレーションが実行されるまで継続することができる。もう１つの実施形態では、時間可変レンダリング・オペレーションが、最初の時間不変レンダリング・オペレーションの前に実行される。
【００８０】
本発明の実施形態では、レンダリング・オペレーション（時間不変および／または時間可変）を、前のレンダリング・オペレーションの結果と独立またはこれに依存のいずれかとすることができる。すなわち、一実施形態で、第１レンダリング・オペレーションの結果を、連続するレンダリング・オペレーションによって使用することができる。さまざまな実施形態で、第１レンダリング・オペレーションは、第２レンダリング・オペレーションの直前に実行することも、そうしないこともできる。
【００８１】
上のシェーディング処理の結果は、通常、可視ポリゴン・グリッド位置からマッピングされたカラー値の２次元グリッドである。この実施形態では、その後、カラー値の２次元グリッドを補間して、ヒット・テスト位置での表面の値を決定し、その後、これらの値を補間して、スクリーン・ウィンドウ内の画素を決定する、ステップ４３０。代替案では、いくつかのオブジェクトについて、フレームごとのシェーディング・オペレーションの一部を、ポリゴン・グリッド位置ではなくヒット・テスト位置で実行する必要がある場合がある。これは、たとえばスポットライトを通過するオブジェクトなど、モーション・ブラー・オペレーションなどのレンダリング・オペレーションに関係する。
【００８２】
本発明の実施形態では、たとえば４×４または１１×１１などのサンプリング行列など、グリッドからヒット・テスト位置とスクリーン・ウィンドウに保管する普通の方法のどれでも使用することができる。バイリニア補間とその類似など、画素値を決定する多数の他の方法も使用することができる。追加の実施形態は、本願と同一の譲受人に譲渡された、すべてにおいて本明細書に組み込まれている米国特許第４８９７８０６号に開示された発明を使用することができる。
【００８３】
この実施形態では、オブジェクトを表すスクリーン・ウィンドウ内の画素値が、オブジェクトが現れるすべてのイメージについて保管される、ステップ４４０。一実施形態で、オブジェクトが、レンダリングされるオブジェクトである場合に、２０００×１０００画素スクリーン・ウィンドウ全体を、プログラム・メモリ、ディスク・メモリ、ネットワーク・ストレージ・メモリ、またはその類似物に保管することができる。オブジェクトが、第２のまたは後続のオブジェクトである場合に、この実施形態では、そのようなオブジェクトを表す画素だけが更新される。もう１つの実施形態で、新たにレンダリングされたオブジェクトを用いてイメージを更新するために、この処理を、次の実装とすることができる：新イメージ＝旧イメージ＋ショット内の各イメージの新オブジェクト。
【００８４】
次に、上で説明した処理を、ショット内のすべてのオブジェクトがレンダリングされるまで、ショット内の後続オブジェクトについて繰り返すことができる、ステップ４５０。すべてのオブジェクトをレンダリングし終えた時に、ショット内の結果のイメージを、表示のために出力し、アナログ形式（たとえばフィルム、ビデオ・テープ）に変換し、ディジタル媒体出力デバイス用にフォーマットし、または類似のことを行うことができる、ステップ４６０。
【００８５】
本発明の一実施形態では、通常のショットが、１秒から３０秒のイメージを表す。この例では、毎秒約２４個のイメージ・フレームがあり、したがって、１ショットは、２４個から７２０個のイメージ・フレームになる。他の実施形態では、ショットを、１２フレームから１０００フレームとすることができ、２フレームから２４００フレームまたはそれ以上とすることなどができる。
【００８６】
動作時に、レンダリング時間の実質的な節約を、この実施形態の実施形態を使用することによって達成できると思われる。たとえば、通常のアニメートされた映画をレンダリングするために、レンダリング時間の９０％までが、シェーディングに帰し、１０％が、ハイディング（隠面処理）、変位マッピング、その他の類似の他のレンダリング・ステップに帰する可能性がある。９０％のうちで、５０％の時間が、イメージ固有シェーディングに帰し、５０％の時間が、ショット不変シェーディングに帰する可能性がある。本発明の実施形態を使用すると、この例で、ショット不変シェーディング時間を実質的に除去でき、したがって、総合レンダリング時間を、ほとんど半分（約５５％）に減らすことができる。他の実施形態で、達成される通常の効率は、２倍から１０倍と推定され、もう１つの実施形態で、フレームのショットのレンダリングに関して１０倍から１０００倍と推定される。後者の範囲は、上で説明した「ブラケットされた」ショットをレンダリングする時に達成されると思われる。他の実施形態では、これより高いまたはこれより低い効率を達成することができる。
【００８７】
前述の明細書で、本発明を、その特定の例示的実施形態に関して説明した。多数の変更または修正を、たやすく心に描くことができる。上の開示に鑑みて、当業者は、任意の個数の追加のレンダリング・ステップを、上で説明したレンダリング処理に導入できることを認めるであろう。上の開示に鑑みて、オブジェクトについて、そのような追加レンダリング・ステップが、イメージ固有関数（時間可変）とショット固有関数（時間不変）を有する可能性があると認められるであろう。したがって、ショット固有レンダリングは、ショット全体について１回だけオブジェクトに対して実行できると認められる。さらに、イメージ固有レンダリング関数は、イメージごとにオブジェクトに対して実行することができると認められる。その後、ショット固有レンダリング関数をイメージ固有レンダリング関数と組み合わせて、ショット内のイメージを形成することができる。現在ＲｅｎｄｅｒＭａｎ（登録商標）と互換の多数のシェーダを、本発明の実施形態で使用できることが心に描かれている。
【００８８】
上の流れ図は、コンピュータ・コードとして実現でき、プロセッサ実行可能コードにコンパイルしてもしなくてもよい。このコードは、ローカル・ディスク・ドライブ、ネットワーク・ストレージ・ドライブ、または類似物などの有形の媒体にプログラムとして保管することができる。代替実施形態では、コードを、別のプログラムによって動的に生成することができる。たとえば、第１プログラムを使用して、上で説明した形で動作する実行可能プログラムをオンザフライで生成することができる。
【００８９】
本発明の実施形態で、本発明者は、このスキーマの利益を、モーション・ブラー、被写界深度、レイ・トレーシング、ＭＩＰマッピング、テクスチャ・マッピング、ハイライティング、ジオメトリック・データ取出、手続ジオメトリック・データ生成、その他の類似の他のレンダリング技法に適用できることを確認した。
【００９０】
本発明の実施形態は、任意の個数のレンダリング・プラットフォームやさまざまな目的に適用することができる。たとえば、実施形態を、開発目的でエンジニアリング・ワークステーションで、アーティストやアニメータ用のビジュアライゼーション・システムで、最終制作用のレンダリング・ファーム・マシンで、その他の類似物で使用することができる。したがって、上で開示した概念は、さまざまな応用例で極端に貴重である。
【００９１】
一実施形態で、Ｎ個のオブジェクトに関するショット固有オペレーションの実行を、並列に処理することができる。本発明のもう１つの実施形態で、これらの処理のそれぞれを、別々の関連しない実行プロセスとして実施することができる。マルチスレッド式オペレーティング・システムを使用することによって、複数のプロセスを、実質的に同時に実行することができ、単純に時間的にオーバーラップさせることなどもできる。並列処理環境では、プロセスを、実際に並列に実行することができる。もう１つの実施形態では、一部のプロセスを、実際に他のプロセスの前に完了することができる。一実施形態で、Ｎ個のオブジェクトがある場合に、レンダリング・システムは、Ｍ個のプロセスをｓｐａｗｎし、Ｍ≦Ｎである。
【００９２】
上の開示で、一部のショット固有処理が、ショットについて１回実行されるとして示された。しかし、Ｎ個のイメージがある場合に、レンダリング・システムが、ショット不変処理をＭ回実行し、Ｎ＞Ｍ≧１である実施形態を実施することができることを理解されたい。
【００９３】
上の実施形態で、ステップ３８０のイメージ固有レンダリング計算の前に実行されるものとしてステップ３４０〜３７０の時間不変レンダリング計算を示したが、この順序を逆転することもできることを理解されたい。本発明の他の実施形態では、時間不変レンダリング計算とイメージ固有レンダリング計算を、インターリーブ式または合間とすることができ、すなわち、複数のレンダリング計算を用いてオブジェクトをレンダリングする時に、イメージ固有レンダリング計算を、時間不変レンダリング計算の合間に実行することができる。さらに、インターリーブされたレンダリング・オペレーションは、オブジェクトの頂点ごとベースでおよび／または一時にすべての頂点に対して実行することができる。例として、レンダリング処理は、オブジェクトの第１頂点に対するレンダリング・オペレーションを、レンダリング・オペレーションＡ、Ｂ、Ｃ、Ｄ、Ｅの順番で実行することができ、その後、このレンダリング処理を、後続頂点について繰り返すことができる。１つの場合に、レンダリング計算Ａ、Ｂ、Ｄ、Ｅが、時間不変計算であり、Ｃが、イメージ固有計算である場合があり、別の場合に、Ａ、Ｂ、Ｃ、Ｅが、イメージ固有レンダリング計算であり、Ｄが時間不変レンダリング計算である場合がある。もう１つの例で、レンダリング・オペレーションＡを、オブジェクトのすべての頂点に関して実行し、その後、レンダリング・オペレーションＢを、そのオブジェクトのすべての頂点に関して実行することなどができる。もう１つの例で、上の例の組合せが企図されている。この開示に鑑みて、時間不変レンダリング・オペレーションとイメージ固有レンダリング・オペレーションをインターリーブする多数の形が、心に描かれている。
【００９４】
添付文書を読んだ後に、当業者は、さらなる実施形態を思い浮かべることができる。他の実施形態では、上で開示した発明の組合せまたは副組合せを有利に作ることができる。このアーキテクチャのブロック図と流れ図は、理解を容易にするためにグループ化されたものである。しかし、ブロックの組合せ、新しいブロックの追加、ブロックの再配置、その他の類似物が、本発明の代替実施形態で企図されていることを理解されたい。たとえば、イメージ固有シェーディング・オペレーションを、ショット不変シェーディング・オペレーションの前に実行することができる。
【００９５】
したがって、本明細書と図面は、制限的な意味ではなく例示的な意味でみられなければならない。しかし、請求項に記載の本発明の広義の趣旨と範囲から逸脱せずに、これに対してさまざまな修正と変更を行うことができることは明白である。
【図面の簡単な説明】
【００９６】
【図１】本発明の一実施形態によるレンダリング・システムを示すブロック図である。
【図２】本願を使用した用語を示す図である。
【図３Ａ】本発明の実施形態によるフロー処理を示すブロック図である。
【図３Ｂ】本発明の実施形態によるフロー処理を示すブロック図である。
【図３Ｃ】本発明の実施形態によるフロー処理を示すブロック図である。
【図４】本発明の実施形態の例を示す図である。
【符号の説明】
【００９７】
１００  コンピュータ・レンダリング・システム、１１０  モニタ、１２０  コンピュータ、１３０  キーボード、１４０  ユーザ入力デバイス、１５０  ネットワーク・インターフェース、１６０  プロセッサ、１７０  ランダム・アクセス・メモリ（ＲＡＭ）、１８０  ディスク・ドライブ、１９０  システム・バス、２００  仮想カメラ、２１０  イメージ平面、２２０  スクリーン・ウィンドウ、２３０  画素位置、４１０  オブジェクト、５００  オブジェクト、５１０  オブジェクト、５２０  オブジェクト、５３０  オブジェクト
【図１】
2006525558.tif 000003
【図２】
2006525558.tif 000004
【図３Ａ】
2006525558.tif 000005
【図３Ｂ】
2006525558.tif 000006
【図３Ｃ】
2006525558.tif 000007
【図４】
2006525558.tif 000008
【国際調査報告】
2006525558.tif 000009