説明

ヘア/ファーパイプラインにおいて使用するためのヘアモーション合成システム及び最適化技術

【課題】動物等のサーフェスのジオメトリモデル上のリアルなファーコートのデジタル表現及び生成のための柔軟な技術を提供する。
【解決手段】ヘアを生成するためのヘアパイプラインは、サーフェスを定義するサーフェス定義モジュールと、サーフェス上でヘアをレンダリングするか否かを決定する最適化モジュールとを備え、最適化モジュールは、ヘアのサイズメトリックを判定し、ヘアについて判定されたサイズメトリックに第1の密度曲線を適用し、密度乗数値を生成し、密度乗数値に基づいて、ヘアをレンダリングするか否かを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は、現在、米国特許番号6,952,218が付与されている米国特許出願番号09/370,104の継続出願である、2002年01月16日2002に出願され、現在、米国特許番号7,050,062が付与されている米国特許出願番号10/052,068の継続出願である、2006年2月1日に出願された米国特許出願番号11/345,355の一部継続出願である、2007年5月11日に出願された米国特許出願番号11/801,924の一部継続出願である。また、本出願は、2006年7月24日に出願された米国仮出願60/833,113及び2007年1月23日に出願された米国仮出願60/886,286の優先権を主張する。
【0002】
本発明はファー(fur)のデジタル制作に関する。詳しくは、本発明は、動物モデル上のファーコート(fur coat)のリアルな近距離及び遠距離からの外観のデジタル制作に関する。
【背景技術】
【0003】
コンピュータグラフィックスにおける現実味がある哺乳動物のモデル化、アニメーション化、レンダリングにおける多くの課題のうちの1つは、リアルなファーを生成することであった。実際のファーコートは、皮膚を覆う数十万本もの個別の、円筒状のヘア(毛)から構成され、寒さ及び捕食者に対する防衛等、生命を守る機能を有している。動物の間で、及び個々の動物の体に亘って、これらのヘアの外観及び構造は、長さ、厚さ、形状、色、向き及び下毛/上毛の構成に関して、大きく異なる。更に、ファーは、静止しておらず、基底にある皮膚及び筋肉の動きの結果として、及び風や水等の外的要因によって、動き、分かれる(breaks up)。
【0004】
ファー制作のために用いられる従来の幾つかのコンピュータグラフィック技術は、滑らかなファーの説得力がある外観を実現しているが、これらの技術は、体のあるエリア、例えば首の回り等において、実際のファーが分かれることが多いということを考慮に入れていない。更に、従来の手法では、濡れたファーのヘアは、互いに纏まり(クランプ:clump )、乾燥したファーに比べてかなり異なる外観を呈すことが考慮されていない。また、水がかかって、次第に濡れていくヘアをシミュレートする処理は、未だ開発されていない。
【発明の概要】
【課題を解決するための手段】
【0005】
本発明のシステム及び方法は、動物等のサーフェスのジオメトリモデル上のリアルなファーコートのデジタル表現及び生成のための柔軟な技術を提供する。一実施の形態においては、サーフェス上のファーの配置、調整及びコーミング(櫛通し)のための革新的な技術が提供される。一実施の形態においては、サーフェスパッチ境界(surface patch boundaries)に亘るファーの連続性が維持される。更に、一実施の形態では、濡れたファーをシミュレートする革新的な方法が提供される。この方法では、サーフェス上の領域に静的クランピング(static clumping)及びアニメーション化クランピング(animated clumping)を適用できる。一実施の形態においては、サーフェス上のファートラック(fur-track)に沿ったヘアの対称的ブレイキング(symmetric breaking)及び一方的ブレイキング(one-sided breaking)のための方法が提供される。上述した処理は、下毛及び上毛等のファーの層を生成するために、繰り返し適用することができる。
【0006】
本発明の目的、特徴及び利点は、以下の詳細な説明によって明らかになる。
【図面の簡単な説明】
【0007】
【図1a】本発明の教示に基づいて動作する一実施の形態の簡略化されたブロック図である。
【図1b】本発明の教示に基づいて動作する一実施の形態の簡略化されたブロック図である。
【図2】本発明の教示に基づくファーの生成のための処理の一実施の形態のフローチャートである。
【図3a】3次元動物モデルの皮膚を定義する一組のパラメトリックサーフェスを示す図である。
【図3b】静的コーミング処理及びアニメーション化コーミング処理の一実施の形態を示す簡略化されたフローチャートである。
【図3c】コーミング処理の一実施の形態を示す具体例の図である。
【図3d】コーミング処理の一実施の形態を示す具体例の図である。
【図4】サーフェス境界において、視覚的な不連続性を排除するために制御ヘアを調整する処理の一実施の形態を示すフローチャートである。
【図5】ヘアを配置するための処理の一実施の形態を示すフローチャートである。
【図6】サーフェス上に定義されたサブパッチの一具体例を示す図である。
【図7a】1つの制御ヘアの制御頂点の具体例を示す図である。
【図7b】制御ヘア重みの算出の具体例を示す図である。
【図7c】本発明の一実施の形態の教示に基づいて、最終的なヘアの向きを算出するために用いられる補間処理の具体例を示す図である。
【図7d】最終的なヘアの向きの算出の一実施の形態の簡略化されたフローチャートである。
【図8】静的クランピングを実行する処理の一実施の形態を示すフローチャートである。
【図9】異なるクランプパーセント及びクランプレート値の具体例を示す図である。
【図10a】コーミングされたファーコートのレンダリングされたフレームを示す図である。
【図10b】乾いた状態から濡れた状態に移行するようにアニメーション化されたファーシーケンスの一実施の形態のスナップショットを示す図である。
【図10c】乾いた状態から濡れた状態に移行するようにアニメーション化されたファーシーケンスの一実施の形態のスナップショットを示す図である。
【図10d】乾いた状態から濡れた状態に移行するようにアニメーション化されたファーシーケンスの一実施の形態のスナップショットを示す図である。
【図11】アニメーション化エリアクランピングのための処理の一実施の形態を示すフローチャートである。
【図12a】ヘアブレイキングのための処理の一実施の形態を示すフローチャートである。
【図12b】ヘアの対称的ブレイキング及び一方的ブレイキングの具体例を示す図である。
【図12c】ブレイキングエフェクトの具体例を示す図である。
【図12d】ブレイキングエフェクトの具体例を示す図である。
【図12e】ブレイキングエフェクトの具体例を示す図である。
【図12f】ブレイキングエフェクトの具体例を示す図である。
【図13a】下毛と上毛の視覚的エフェクトを示す図である。
【図13b】下毛と上毛の視覚的エフェクトを示す図である。
【図13c】下毛と上毛の視覚的エフェクトを示す図である。
【図14】シェーディング処理の一実施の形態を示すフローチャートである。
【図15】図1bのパイプラインに類似するが、更なる異なる機能を含むヘア/ファーパイプラインの実施の形態を示すブロック図である。
【図16a】制御ヘアに沿って可能なバリエーションを有する制御ヘアのクランピングを示す図である。
【図16b】制御ヘアに沿って可能なバリエーションを有する制御ヘアのクランピングを示す図である。
【図17】本発明の一実施の形態に基づき、ボリューム埋め込み機能を実現する処理1700を示すフローチャートである。
【図18a】ブレイド形状を定義するサーフェス及び関連するボリュームの生成を示す図である。
【図18b】ランダムに配置された制御ヘアによるこれらのボリュームの埋め込みを示す図である。
【図18c】制御ヘアからの最終的なヘアストランドの補間を示す図である。
【図19a】同じ制御ヘアを有し、異なるタイプの補間法によって変形されたサーフェスの側面図である。
【図19b】同じ制御ヘアを有し、異なるタイプの補間法によって変形されたサーフェスの側面図である。
【図19c】同じ制御ヘアを有し、異なるタイプの補間法によって変形されたサーフェスの側面図である。
【図20a】ウェーブ、ウィーブ及び風の影響を説明する図である。
【図20b】ウェーブ、ウィーブ及び風の影響を説明する図である。
【図20c】ウェーブ、ウィーブ及び風の影響を説明する図である。
【図21】本発明の一実施の形態に基づき、ジオメトリインスタンス化を実現する処理を示すフローチャートである。
【図22a】ジオメトリインスタンス化の具体例を示す図である。
【図22b】ジオメトリインスタンス化の具体例を示す図である。
【図23】本発明の一実施の形態に基づき、アニメーションノード及び最終的な制御ノードに接続され、ヘアモーション合成システムを構成する静的ノードの簡単なグラフを示す図である。
【図24】ブレンドノードを使用する処理を示す図である。
【図25a】回転的ブレンディングを示す図である。
【図25b】位置的ブレンディングを示す図である。
【図26】ブレンドボールを示す図である。
【図27】動的ソルバノードを含む動的ノードグラフを示す図である。
【図28a】ボリュームノードの使用を示す図である。
【図28b】ボリュームノードの使用を示す図である。
【図29】スーパーヘアノード処理を示すフローチャートである。
【図30a】ローカル空間におけるスーパーヘアオペレーションを示す図である。
【図30b】ワールド空間におけるスーパーヘアオペレーションを示す図である。
【図31】内側球面及び外側球面の両方を有するブレンドボールを示す図である。
【図32】様々なシミュレーションキャッシュ間でブレンディングを行うカスケード接続ノードグラフを示す図である。
【図33】ビュー依存画面空間最適化を実現する技術を示す図である。
【図34】正規化装置座標(NDC)系に変換される毛嚢ルート位置及びヘアを示す図である。
【図35】NDC空間において、第1のフレームから第2のフレームにかけて、プロキシヘアのルートが移動する距離を示す図である。
【図36】ヘア数、時間及びメモリに関する最適化されていない値と、画面空間サイズメトリックを用いて最適化された値とを並べて比較するテーブルを示す図である。
【図37】画面空間スピード法を用いる他の比較を示すテーブルを示す図である。
【図38】最適化されていない及び最適化されたヘア数、時間及びメモリ値を示すテーブルを示す図である。
【図39】ヘアサブパッチ最適化を実現する処理を示すフローチャートである。
【図40】ヘアサブパッチ最適化の用途の簡単な例を示す図である。
【図41】ヘアを草及び/又は木によってジオメトリインスタンス化し、サブパッチ最適化技術を利用してモデル化された草で覆われた景色を示す図である。
【図42】キャッシュ状態ファイルの具体例を示す図である。
【図43】ヘアキャッシングを実現するための処理を示すフローチャートである。
【図44】完全にファーで覆われたキャラクタをレンダリングするために、ヘアキャッシングを用いることによって達成できる時間の削減を示すテーブルを示す図である。
【図45】本発明の実施の形態に基づき、並べ替え可能で、多重インスタンス化可能なエフェクトを実現するエフェクトパイプラインを更に含むエフェクトモジュールを含む上述したヘア/ファーパイプラインの実施の形態を示すブロック図である。
【図46】本発明の一実施の形態に基づき、エフェクトモジュールによって実現できる、並べ替え可能で及び多重インスタンス化可能なエフェクトを実現する処理を示すフローチャートである。
【図47】本発明の一実施の形態に基づき、ヘア/ファーパイプラインのエフェクトモジュールのエフェクトパイプラインによって最終的なヘアに適用される、並べ替え可能で、多重インスタンス化可能なエフェクトの具体例のブロック図である。
【図48】インスタンス化モジュール及びインスタンス化ヘアデータベースを更に含む、本発明の一実施の形態に基づくヘア/ファーパイプラインのブロック図である。
【図49】本発明の一実施の形態に基づき、標準のRAMメモリ(すなわち、メモリ内インスタンス化)及びインスタンス化ヘアデータベースの一方又は両方について、インスタンス化モジュールによって実現できる繰返しパターンを示すブロック図である。
【図50】本発明の一実施の形態に基づき、インスタンス化ヘアデータベースに保存できる情報のタイプの具体例を示す図である。
【発明を実施するための形態】
【0008】
方法及び装置は、サーフェス上のファー、例えば、コンピュータによって生成された動物のファーのデジタル生成のための革新的な技術を提供する。図1aは、本発明の教示に基づいて動作する一実施の形態の簡略化されたブロック図である。コンピュータシステム10は、中央演算処理装置(central processing unit:CPU)15、メモリ25、入出力(I/O)20を備え、これらは、ディスクドライブ又は他のデバイス等のストレージ装置に接続してもよい。また、システムは、キーボード40又は他のユーザ入力装置及びディスプレイ35を備えていてもよく、ディスプレイ35は、本発明の教示に基づいて、ユーザインタフェース及びファーの最終的なレンダリングを表示するために用いてもよい。
【0009】
一実施の形態においては、メモリ25は、CPU15によって実行されると、ここに説明する処理を行う命令を格納する。これに代えて、命令は、ストレージ30又はユーザ入力40等の他の入力を介して受け取ってもよい。ここに説明する処理は、例えば、システム10等のシステムによって実行されるソフトウェアとして実現してもよく、ハードウェアとして実現してもよく、ハードウェア及びソフトウェアの両方の組合せとして実現してもよい。
【0010】
他の実施の形態を図1bに示す。サーフェス定義モジュール50は、サーフェスを定義する入力を受け取り、後述するように、レンダリングされるオブジェクトのサーフェス及び制御ヘア(control hair)を定義する。モジュール55は、制御ヘアを調整し、コーミング等の機能及びサーフェス境界に亘るシームレスなヘアを提供する。補間モジュール60は、制御ヘアを用いてサーフェスに亘る補間を行う。ヘアクランピング及びブレイキングモジュール65は、ヘアのクランピング及びブレイキングを提供することによって、オブジェクトのリアルなビジュアライゼーションを向上させる。レンダリングモジュール70は、ヘアをレンダリングし、ヘアにシェーディング、ブラックライティング及びシャドウイングエフェクトを提供し、モジュール75は、ヘアサーフェスを有するオブジェクトの最終的な出力を表示する。
【0011】
図2は、本発明の教示に基づくファーコートの生成に含まれるステップのフローチャートである。ステップ200では、ヘアを含むサーフェスのジオメトリを定義する。一実施の形態においては、3次元ジオメトリを用いて、皮膚、例えば、動物の皮膚をモデル化し、この上に、ファーコートを後に生成する。図3aに示すように、通常、ジオメトリは、多くの場合、サーフェスパッチとも呼ばれるパラメトリックサーフェスの連結集合として定義される。パッチは、当業者に既知の幾つかの手法によって生成することができる。一実施の形態においては、NURBSサーフェスパッチを使用する。
【0012】
図2のステップ210では、これらのサーフェスパッチ上に制御ヘアを配置し、各制御ヘアは、ユーザが指定した数の制御頂点によって定義されるパラメトリック曲線、例えば、NURBS曲線としてモデル化される。後述するように、ユーザは、ヘアの包括的な密度値を指定し、実際のヘアの数及びサーフェスパッチ上のそれらの位置を決定する。また、各ヘアは、例えば、長さ、幅、ウェーブ、不透明度、及びサーフェス上の位置の面法線の方向におけるデフォルトのポイント等の多くの属性がある。
【0013】
この実施の形態では、制御ヘアに対して幾つかのオペレーションが実行され、制御ヘア及び他の情報に基づいて最終的なヘアが生成される。但し、ここに説明する結合等のステップは、制御ヘアではなく、最終的なヘアに対して行ってもよい。
【0014】
制御ヘアを生成するために幾つかの異なる手法を採用することができる。1つの単純なアルゴリズムでは、各NURBSパッチについて、u方向にx本のヘア、v方向にy本のヘアを等間隔に配置する(x及びyは、ユーザによって指定される)。これに代えて、弧長に沿ってx本のヘア及びy本のヘアを等しく配置してもよい。これにより、パッチに亘るより一様な分布が得られる。但し、この手法では、異なるサイズのパッチに亘って、制御ヘアのバランスがとれた分布が実現されない。これは、x本のヘア及びy本のヘアが、パッチの大小にかかわらず、選択された全てのパッチに配置されるためである。したがって、他の実施の形態では、制御ヘアの生成の際に、NURBSパッチの面積を考慮に入れて各パッチ毎にx及びyを決定する。一実施の形態においては、ユーザは、1単位面積あたりz本のヘアを指定する。更に、一実施の形態では、より精密な制御のために、制御ヘアを個別に又はサーフェス上の曲線に沿って配置してもよい。例えば、最終的にファーの適切なアラインメントが生成されることを確実にするために、動物の耳の鋭い縁に沿って付加的な制御ヘアを生成することができる。
【0015】
図2のステップ210において、制御ヘアを生成した後、サーフェス境界で制御ヘアを調整する。制御ヘアは、各サーフェスパッチ内に配置されるので、サーフェスパッチの境界に位置する制御ヘアは、隣接するサーフェスパッチ上の制御ヘアに揃わず、サーフェス境界に沿って、顕著なヘアの不連続が生じることがある。このような潜在的問題を解決するために、サーフェス境界上の制御ヘアを調整する。制御ヘアを調整する処理の一実施の形態を図4のフローチャートに示す。
【0016】
ステップ400では、隣接するサーフェス間に継ぎ目(シーム:seam)を構築する。各シームは、サーフェスパッチの対応する境界(例えば、辺全体、T字接合、又はコーナ)に沿って隣接するサーフェスを特定する。ステップ405では、各サーフェスパッチについて、ステップ410では、境界を検査する。ステップ412では、各制御ヘアを調べる。ステップ415において、境界ヘアが見つかると、ステップ420において、対応する継ぎ目によって特定される隣接するパッチをチェックし、隣接するパッチ上に対応するヘアがあるかを確認する。一実施の形態においては、境界ヘアから短い所定の距離内にヘアがある場合、そのヘアは、対応しているとみなされる。この距離は、パラメトリック値(u,v)で指定してもよく、絶対空間において指定してもよい。一実施の形態においては、所定の距離は、ヘアが視覚的に同じ位置にあるように見える程度の比較的短い距離であってもよい。
【0017】
対応する制御ヘアがある場合、ステップ425において、制御ヘアの一方又は両方の位置及び向きをそれぞれ共通の位置及び向きに変更することによって境界ヘア及び対応するヘアを揃える。一実施の形態においては、隣接するサーフェスパッチの対応するヘアは、境界に沿って、境界ヘアの位置にスナップされる。一実施の形態においては、隣接するサーフェスパッチが対応するヘアを有さない場合、ステップ445において、隣接するパッチ上に対応するヘアを挿入し、揃える。処理は、全ての境界ヘアが揃えられるまで、ステップ430、435、440において、各サーフェスパッチの各境界に沿って各境界ヘアについて続けられる。
【0018】
図2において、一実施の形態では、ステップ215の後に、制御ヘアは、動物又は他のオブジェクトモデルを定義するサーフェス上に配置されており、制御ヘアは、サーフェス上の制御ヘアの位置の面法線に沿って方向付けられている。
【0019】
ステップ220では、ヘアをコーミング(櫛通し)し、望ましい、手入れされた、乾いたファーの外観を実現する。多くの異なるコーミング処理を用いることができる。但し、この実施の形態では、静的コーミング処理(static combing process)及びアニメーション化コーミング処理(animated combing process)を制御ヘアに適用する。静的コーミングとアニメーション化コーミングの組合せによって、演算コストを軽減しながら、有効な視覚的エフェクトを得ることができる。他の実施の形態では、静的コーミング又はアニメーション化コーミングの一方のみを用いて、有益な視覚的結果を生成することもできる。同じ制御ヘアの異なるショットにコーミング処理を用いて、例えば、ファーの手入れされた外観と、僅かに乱れた外観との対比を提供することができる。
【0020】
図3bを参照して一実施の形態について説明する。一実施の形態においては、オブジェクト、例えば、動物のアニメーションの間、ヘアが「活発に」動いていない場合、静的コーミングが適用される。なお、各ヘアは、ヘアのルートにおける面法線、du及びdvによって定義される局所座標系において表現されるので、静的コーミングされたヘアは、基底にあるサーフェスが変形され又はアニメーション化されると「受動的に」動く。コーミングは、コーミング方向曲線(combing direction curve)、ヘアのベンドの度合い及び曲率並びに各コーミング方向曲線のフォールオフ(fall-off)を特定することによって達成される。
【0021】
ステップ325では、1つ以上のコーミング方向曲線を作成する。これらの曲線は、制御ヘアをコーミングする際に適用可能な方向を示す、具体例を図3c及び図3dに示す。図3cは、複数のコーミングされていない制御ヘアを示している。図3dは、例示的なコーミング方向曲線365及びその方向を示している。図3dには、コーミングされたヘアも示している。
【0022】
図3dは、1つのコーミング方向曲線を示している。但し、通常は、それぞれがサーフェスの異なるエリアに対応する複数の異なる曲線を用いる。したがって、ステップ330では、各曲線に1つ以上の制御ヘアを割り当て、割り当てられたヘアは、対応するコーミング方向曲線に基づいてコーミングされる。
【0023】
更に、ステップ335では、各曲線について、ベンド、曲率及びフォールアウトパラメータを定義する。ベンドパラメータは、制御ヘアがサーフェスにどれくらい近いかを定義する。曲率パラメータは、ヘアの形状を示す。例えば、曲率の値が0とは、ヘアが真っ直ぐであることを示し、最大値(例えば、1)は、ヘアが、ルートから先端まで、半径が小さい円弧状に曲がっていることを示す。
【0024】
フォールアウト値は、ここを超えると、コーミング方向曲線の影響が低下し、制御ヘアが曲線から離れる領域を示す。幾つかの実施の形態では、フォールアウト領域は、比較的広い面積を覆うように指定され、これにより、全ての制御ヘアが等しく影響を受け、フォールアウトは生じない。他の実施の形態では、制御ヘアとコーミング方向曲線との間の距離が遠い程、コーミングエフェクトを減少させることが望ましい。
【0025】
ステップ340では、割り当てられたコーミング方向曲線及びベンド、曲率及びフォールアウトパラメータに基づいて、各制御ヘアを処理する。図3dは、この処理の結果を示しており、ここでは、ヘアは、コーミング方向曲線365の向きにコーミングされている。更に、ヘアは、定義されたベンド及び曲率パラメータに基づいてカーブしている。この具体例では、フォールアウトパラメータは、表面全体を定義し、したがって、全てのヘアが等しく影響を受け、フォールアウトは存在しない。
【0026】
また、ステップ345において、上述のように、アニメーション化コーミングを適用することもできる。当分野で知られているキーフレーミングを用いて、あるフレームにおいて指定されたコーミング変化の間で補間を行い、変化の間の遷移を滑らかにすることができる。すなわち、例えば、ベンド、曲率及びフォールアウトパラメータがあるフレームにおいて変化するように指定してもよい。キーフレーミング処理の実行は、指定されたフレーム変化の間のフレームの間で遷移する。この技術は、風等のヘアの外観に影響する様々な条件をシミュレートするために用いることができる。このようにパラメータをキーフレーミング処理し、再生中に各フレームでコーミング演算を実行することによって、ヘアをアニメーション化することができる。
【0027】
また、コーミング処理は、コーミング処理のために基底にあるサーフェスと交差するヘアが、サーフェス上に押し戻される単純なヘア/サーフェス衝突モデル処理を含んでいてもよい。ヘアは、例えば、ベンドパラメータを大きな値に設定することによって、回転して基底にあるサーフェスと交差することもある。
【0028】
処理は、ヘア/サーフェス交差を判定する反復アルゴリズムを含む。例えば、処理は、制御ヘアを定義する曲線(例えば、NURBS曲線)の連続する制御頂点とサーフェスとの線分交差判定を実行する。制御頂点cがサーフェスの下に落ちる場合、cがサーフェスを超えるために十分な量だけ、ヘアを元の非交差頂点から面法線に向けて回転させて戻す。回転の量は、ヘアが、アプリケーションによって指定された僅かな量だけ、サーフェスの上に回転して戻るために十分な大きさとする。このように、コーミングの影響を受けるベクトルの頂点は、ベクトルがサーフェスの上にあるように、面法線に向かって回転して戻される。
【0029】
他の実施の形態では、制御ヘアの各制御頂点をパーティクルに変更し、重力及び外部の力等の動的効果を適用することによってコーミングをアニメーション化してもよい。この機能を実行するために、例えば、シリコングラフィックス社(Silicon Graphics, Inc.)の子会社である、カナダ、トロントのエイリアス・ウェーブフロント社(Alias|Wavefront)から市販されているソフトウェアであるMayaを用いてもよい。
【0030】
一旦、制御ヘアを特定及び処理(例えば、調整、コーミング)した後、図2のステップ223において、制御ヘアから各パッチのための最終的なヘアを生成する。上述のように、一実施の形態では、制御ヘアは、最初に、サーフェス境界に沿って調整される。他の実施の形態では、制御ヘアだけにコーミングを適用してもよく、サーフェス境界調整処理の適用に関連してコーミングを適用してもよい。
【0031】
パッチ上のヘアの配置のための1つの例示的な処理を図5のフローチャートに示す。この実施の形態では、最終的なヘアは、2つのステップの組によって、制御ヘアから生成される。第1に、最終的なヘアの静的ヘア特徴、例えば、配置(u,v位置)を算出する。このステップは、一回実行できる。ステップの第2の組は、アニメーション内の各フレームについて実行でき、フレームに依存するヘア特徴を提供する。
【0032】
ステップ505では、ヘアが生成されるオブジェクトのサーフェス上でサブパッチを特定する。図6は、基底にある皮膚を定義するサーフェス上に最終的なヘアを配置する一実施の形態を示している。この実施の形態では、各最終的なヘアのルート位置は、サーフェスの(u,v)パラメトリック値を用いて指定する。これらは、全体的な(全てのサーフェスに包括的な)密度入力値dmax(正方形単位面積あたりのヘアの数)、及びサーフェス上の一定間隔のポイントの可変解像度グリッド(例えば、128×128のポイント)において構成されたサーフェスパッチ毎の正規化された一組のローカル密度値(値の範囲を0〜1とする:デフォルト値は、1としてもよい)から算出される。
【0033】
一実施の形態においては、処理は、このグリッドの解像度の如何にかかわらず、及びサーフェスパッチサイズの如何にかかわらず、異なるスケールのサーフェスに亘って、シームレスな密度を提供するようにヘアの数を決定することを試みる。ここでは、説明を目的として、指定された入力密度値(dmax)を10ヘア/正方形単位面積とし、図6に示すように、ローカル密度値をサーフェス上の一定間隔のポイントに並べたと仮定する(例えば、それぞれ0.4、0.5、0.6、0.6のヘア)。これらのポイントは、図5のステップ505に示すように、処理されるサーフェスのサブパッチを定義する。ステップ510では、これらの一定間隔のポイントを結び、隣接するポイント間の(u,v)空間内の面積を、2つのポリゴン、より具体的には、三角形(a1及びa2)によって定義される面積によって近似し、ステップ520において、その頂点における値から、各三角形ヘア単位毎のヘア/正方形単位面積の数の平均を求める。一実施の形態においては、これは、HairUnit(ヘア単位)=dmax*Vavgとして求められ、ここで、dmaxは、指定された入力密度値を表し、Vavgは、頂点における値から判定される各三角形の平均ローカル密度値を表す。これにより、ここに定義された具体例の場合、左上の三角形及び右下の三角形のそれぞれについて、ヘア/正方形単位面積は、10*(0.4+0.5+0.6)/3=5及び10*(0.4+0.6+0.6)/3=5.333となる。
【0034】
ステップ525では、サブパッチ(a1及びa2)の実際の近似された面積及び1単位面積あたりのヘアの数から、現在のサブパッチに配置するヘアの総数を判定する。一実施の形態においては、1単位面積あたりのヘアの総数は、HairTotal(ヘア総数)=A*HairUnit(ヘア単位)として求められ、ここで、Aは、サブパッチの実際の近似された面積を表す。例えば、説明を目的とする仮定として、エリアa1に0.4の値を適用し、エリアa2に0.3の値を適用した場合、0.4*5+0.3*5.333=3.5999が(ui,vi)、(ui,vi+1)、(ui+1,vi+1)、(ui+1,vi)によって定義されるサブパッチに配置されるヘアの総数となる。
【0035】
ステップ530では、最終的なヘアを配置する。小数によって表される個数のヘアを配置することは望ましくないので、[0,1]の範囲で一様に生成された乱数が小数部分(0.5999)より大きいか小さいかに応じて、3本又は4本のヘアを配置する。3本又は4本の制御ヘアは、u[ui,ui+1]にランダムに配置され、及びv[vi,vi+1]にランダムに配置される。そして、処理は、ステップ510に戻り、次の4つの一定間隔のポイントによって定義されるサブパッチに進む。
【0036】
各最終的なヘアは、複数の制御頂点を含む。各制御ヘアのルート位置(第1の制御頂点)は、基底にあるサーフェスの(u,v)値によって特定される。各ヘアの残りの制御頂点は、ヘアルート位置を原点とし、面法線の方向、du及びdvを軸とする既知の局所座標系において定義される。一実施の形態においては、各ヘアは、面法線に沿って方向付けられ、制御頂点の座標は、制御頂点/ヘアの数をnとして、ヘアの長さをn−1個の等しい部分に細分化することによって生成される。図7aに示す一具体例では、n=4として、サーフェス730上にヘア725が定義されている。ルートは、頂点720であり、残りの頂点は、705、710、715である。
【0037】
一旦、ルート位置を算出した後、各最終的なヘアについて、これを取り囲む制御ヘア(一実施の形態では3個)を判定する。一実施の形態においては、各サーフェスパッチについて、制御ヘアの(u,v)位置から2次元ドロネー三角形分割(当分野では周知であるため、これ以上は説明しない。)を行う。この三角形分割は、外接円を最小化し、三角形の最小角を最大にすることによって、「釣り合いのとれた(well-proportioned)」三角形を生成するので、ここでは、この三角形分割を採用している。一旦、ドロネー三角形分割を行った後、各最終的なヘアがどの三角形に含まれるかを判定する。特定の三角形を形成する3つの制御ヘアのインデクスは、その三角形に含まれるヘアに割り当てられる。
【0038】
そして、最終的なヘア(h)に対して3つの制御ヘア(c1,c2,c3)のそれぞれが有する重み(wl,w2,w3)を算出する。これは、図7bに示すように、重心座標(当分野では周知であるため、これ以上は説明しない。)を用いて実行してもよく、図7bにおいて、「A」は、三角形726(c1,c2,c3)の面積を表している。これらの重みは、後述するように、制御ヘアから最終的なヘアを補間するために使用される。
【0039】
各最終的なヘアの上述の情報(すなわち、(u,v)位置、周囲の3個の制御ヘア、及び各制御ヘアの重み)は、アニメーションにおけるオブジェクトについて、一回だけ生成してもよい。この情報を、ここでは、静的情報(static information)と呼ぶ。一方、各最終的なヘアの向きの計算は、アニメーションの各フレームにおいて行ってもよい。この向きは、図7c及び図7dに関して説明するように、補間処理によって、制御ヘアの向き及びこれらの対応する重みから決定される。
【0040】
ステップ756では、各最終的なヘア(h)について、対応する3つの制御ヘア(c1,c2,c3)を使用されるサーフェスパッチ空間(一実施の形態においては、パッチ座標系)に変換する。ステップ758では、制御頂点(例えば、782、783)の間の制御ヘアベクトル(例えば、vll、vl2、vl3)を算出する。制御ヘアベクトルの算出には、様々な技術を用いることができ、一実施の形態では、ベクトルは、制御頂点の間で、等しく分布される。そして、制御ヘアベクトルを正規化する(例えば、nv11、nv12、nv13)。ステップ760では、3つの制御ヘアの対応する制御ヘアベクトルを補間し、最終的なヘアについて算出されている3つの決定している重みを乗算する。一実施の形態においては、1つの制御ヘアベクトルは、例えば、以下の式に基づいて算出される。
【0041】
iv1=nv11*w1+nv21*w2+nv31*w3
ここで、iv1は、補間され、重み付けされた最終的なヘアの制御ヘアベクトル表現を表し、nv11、nv21、nv31は、正規化された制御ベクトルを表し、w1、w2、w3は、正規化された制御ベクトルのための対応する重みを表す。ステップ762では、結果的なベクトルを最終的なヘアの長さにスケーリングする(siv1、siv2、siv3)。スケーリングされたベクトルを求めた後、ステップ764において、スケーリングされたベクトルから、最終的なヘアの制御頂点(786、788、790、792)を算出する。
【0042】
図2に示すステップ225、230、235、245は、オプションとしてもよく、手入れされた、乾いたファーコートの生成には、不要である場合もある。ステップ225及びステップ230は、濡れたファーの生成のために適用される。ヘアのクランピングは、ファーが濡れた場合、水の表面張力又は凝集のために生じることがある。このエフェクトは、隣接するヘア(ヘアの束)の先端が同じポイントに向かって引き寄せられる傾向を示し、一種の円錐形の「スーパーヘア」、又は円形のクランプが形成されるというものである。後述するように、ステップ225は、固定された予め定義されたエリアにヘアクランプを生成する静的エリアクランピング(static area clumping)のために実行される。ステップ230は、アニメーション化エリアクランピング(animated area clumping)のために実行され、すなわち、クランピングエリアがモデル上で動く場合、例えば、噴出する水又は雨粒がファーに当たって、ファーが次第に濡れていく様子をシミュレートするために実行される。何れの場合も、乾いたファーの外観から濡れたファーの外観までの様々な度合いを表現するために、アニメーション化できるパラメータを提供する。ステップ235は、乾いたファーのクランピング又はブレイキングを生成するために適用される。
【0043】
特定のアプリケーションにおいては、ステップ225、230、235の全て又は幾つかを実行してもよい。更に、アプリケーションに応じて、優先度がより高いステップで調整されたヘアが、他のステップでは、調整されないように、ステップ225、230、235に優先度を付してもよい。これに代えて、エフェクトは、特定のアプリケーションに応じて、累積的であってもよく、又は選択的に累積的であってもよい。
【0044】
ステップ225では、静的エリアクランピングを実行する。この処理の一実施の形態について、図8を参照して説明する。説明を目的として、ここでは、各クランプの中心のヘアをクランプ中心ヘア(clump-center hair)と呼び、このクランプ中心ヘアに引き付けられる、クランプを構成するメンバである他の全てのヘアをクランプヘア(clump hair)と呼ぶ。
【0045】
一実施の形態においては、4つのクランピング入力パラメータ、すなわち、クランプ密度、クランプサイズ、クランプパーセント及びクランプレートがある。クランプ密度は、ヘア密度パラメータと同様に、正方形の単位面積あたり、幾つのクランプを生成するかを指定する。ここに説明する処理では、クランプ密度をクランプ中心ヘアによって定義されるクランプの実際の数に変換し、クランプ中心ヘアの数は、各サーフェスパッチのサイズに依存する。この結果、幾つかの存在するヘアがクランプ中心ヘアに変更される。
【0046】
クランプサイズは、クランプの面積を定義する。一実施の形態においては、クランプサイズは、ワールド空間、すなわち、オブジェクトのサイズに関して、ユーザが通常参照する空間において定義される。クランプヘアは、1つのクランプのメンバにしかなれないため、一実施の形態においては、クランプ密度は、クランプサイズに優先され、したがって、多くのクランプがあり、これらの大部分が重複する場合、クランプサイズは維持できない。クランプ密度とサイズの両方が小さい場合、クランプ間の多くのヘアは、クランプされない。
【0047】
図8に示すように、ステップ800では、各最終的なヘアのクランプメンバシップ(すなわち、適用可能であれば、各ヘアがどのクランプに属するか)を判定するために、各クランプ中心ヘア位置において、パラメトリックサーフェス空間内で、特定されたクランプサイズのクランプをu半径成分とv半径成分とに変換する。ステップ805、810では、各ヘアを評価し、各ヘアが、対応するクランプ中心ヘアのu、v半径成分内に収まるかを判定する。ヘアがu、v半径成分内にない場合、ステップ815において、ヘアは、クランプヘアでないとし、処理は、ステップ830に進み、次のヘアを検討する。ヘアがu、v半径成分内にある場合、ステップ820において、クランプ中心ヘアのインデクスをそのヘアに参照させる。更に、ステップ825において、クランプレート及びクランプパーセントを割り当てる。
【0048】
様々な変形例が想到される。クランプサイズ雑音パラメータを導入して、クランプのサイズに不規則な変化を生じさせてもよい。サーフェスパッチ毎に、ユーザがクランプサイズのための特徴(テクスチャ)マップを生成及び指定して、ステップ805、810で用いられる半径を局所的に制御してもよい。この実施の形態では、サーフェスパッチ上の(u,v)における特定のクランプ(クランプ中心ヘア)について、包括的なクランプサイズ入力パラメータは、そのサーフェスのためのクランプサイズ特徴マップ内の対応する正規化された(s,t)値に乗算される。また、モデル全体ではなく、サーフェスパッチ上の指定されたエリアにクランピングを制限する静的クランプエリア特徴マップを準備してもよい。
【0049】
一実施の形態においては、クランプパーセント及びクランプレート値は、各クランプヘア(ステップ825)に割り当てられる。一実施の形態においては、両方の値は、[0,1]の間の範囲をとり、後述するように、ステップ835において、後にクランプヘアを再方向付けするために用いられる。
【0050】
クランプパーセントは、クランプヘアのクランピングの度合いを指定する。例えば、0の値は、ヘアが全くクランプされていないことを示し、すなわち、「乾いた」ヘアと同様であることを示す。1の値は、ヘアがクランプ中心ヘアに完全に引き付けられていることを示し、すなわち、ヘアの先端(遠位の制御頂点)が、クランプ中心ヘアの先端と同じ位置にあることを示す。
【0051】
クランプレートは、クランプヘアが対応するクランプ中心ヘアにどれ程強くクランプされているかを定義する。例えば、0の値は、クランプヘアが、ルートから先端にかけて、クランプ中心ヘアに直線的に徐々に引き付けられていることを示す。1に近いクランプレート値は、ヘアのルートにより近い制御頂点が、先端により近い制御頂点に比べて、対応するクランプ中心ヘア頂点に正比例的により強く引き付けられていることを示し、したがって、より強いクランプを示している。クランプパーセント及びクランプレートの異なる値の具体例を図9に示す。
【0052】
ステップ835では、各クランプヘアの制御頂点(ルートの頂点を除く)を、ステップ200、210、215、220、223で決定された、クランプヘアの乾いた、コーミングされた位置から、対応するクランプ中心ヘア頂点に向かって再方向付けする。
【0053】
一実施の形態においては、この処理は、各フレームにおいて実行される。一実施の形態においては、制御頂点(CV)の数のデフォルト値は、3(4−ルート頂点)であり、現在の制御頂点iのインデクスは、1〜3の範囲の値をとる。一実施の形態においては、再方向付けは、以下のようにして決定される。
【0054】
clumpHairCV[i]=clumpHairCV[i]+delta*(clumpCenterHairCV[i]−clumpHairCV[i])
delta=clumpPercent*(fract+clumpRate*(1−fract))
ここで、fract=i/numberOfCVsであり、clumpHairCV[i]は、クランプヘア頂点を表し、clumpCenterHairCV[i]は、対応するクランプ中心ヘア頂点を表し、iは、現在の制御頂点のインデクスを表し、numberOfCVsは、クランプヘアの制御頂点の数を表し、clumpPercentは、クランプパーセントを表し、clumpRateは、クランプレートを表す。
【0055】
クランプパーセント及びクランプレートパラメータの両方は、クランプサイズに関して上述した特徴マップと同様の特徴マップによって、局所的に制御できる。また、両方の値は、乾き、濡れ、乾くファー外観のための連続的な制御を提供するために、経時的にアニメーション化又は変更することができる。これを、アニメーション化されたクランプパーセント及びクランプレートのシーケンスからの4つのフレームを示す図10a、図10b、図10c及び図10dに示す。図10aの画像では、クランプパーセント及びクランプレートは、ともに0であり、これにより、乾いて、コーミングされたヘアを表すことができる。図10bの画像では、クランプパーセントは、0.7であり、クランプレートは、0であり、これにより、僅かに濡れた外観が得られる。図10cの画像では、クランプパーセントは、1.0であり、クランプレートは、0.3であり、これにより、濡れた外観が得られる。図10dの画像では、クランプパーセント及びクランプレートは、ともに1.0であり、これにより、ずぶ濡れの外観が得られる。
【0056】
アニメーション化エリアクランピングは、噴出する水又は雨粒がファーに当たって、ファーが次第に濡れていく様子をシミュレートする場合に望ましい。図2のステップ230では、アニメーション化クランピングを実行する。一実施の形態においては、アニメーション化クランピングエリアは、アニメーションシステムにおいて定義される。
【0057】
図11を参照して処理の一実施の形態について説明する。一実施の形態においては、クランピングエリアは、サーフェスパッチに当たるパーティクルによって定義される。他の実施の形態では、アニメーション化クランピングエリアを生成するために代替の技術を用いてもよい。ステップ1100では、全てのヘアに対して、包括的静的エリアクランピング処理(global static area clumping process)を実行する。このステップは、クランピング領域及び対応するクランプ中心ヘア及びクランプヘアを特定する。後述するように、この情報は、アニメーション化クランピング処理で使用される。一実施の形態においては、ここで用いられる包括的静的エリアクランピングは、静的エリアクランピングについて上述した処理と同様である。
【0058】
ステップ1102では、パーティクルを生成する1つ以上のエミッタを定義する。エミッタを使用してパーティクルを生成する技術は、当分野で周知であり、ここでは、これ以上詳細に説明しない。一実施の形態においては、エミッタは、生成され、サーフェスに亘って拡散するパーティクルのレートを定義する。
【0059】
ステップ1105では、各フレームにおいて、生成され、サーフェスに当たる各パーティクルについて処理し、ステップ1110において、パーティクルが当たるサーフェスパッチを特定する。一実施の形態においては、パーティクルが累積的になるように、前フレームで生成されたパーティクルが次フレームに引き継がれる。
【0060】
ステップ1115では、パーティクルがサーフェスに当たるフレームにおいて実行される作成式によって定まるクランプパーセント、クランプレート及びアニメーション化クランピングエリア半径を用いて、その(u,v)位置におけるパッチ上で、前フレームで生成されたパーティクルを含むサーフェスパッチに当たる各パーティクルについて、円形のアニメーション化クランピングエリアを生成し、これにより、その時点で(すなわち、そのフレームで)パーティクルがサーフェスに当たると、クランプパーセントを0に設定でき、半径は、例えば、ランダムノイズ値によって適応化された特定の値に定義できる。したがって、式は、所望の「濡れ」エフェクトを提供するように定義することができる。
【0061】
定義された円形のクランピングエリアの半径は、上述したクランプサイズと同様に、対応するu半径及びv半径に変換される。各フレームで実行されるランタイム式は、クランプパーセント及びクランプレートを定義し、したがって、ファーがどのくらいの速度でどれ程「濡れていく」かを決定する。例えば、1つのランタイム式は、MIN(FrameNumber*0.1,1)であってもよく、この場合、フレーム番号が大きくなると、ヘアがより濡れているように見える。
【0062】
そして、ステップ1120において、クランプの各クランプ中心ヘア(ステップ1100で特定される。)を評価し、アニメーション化クランピングエリア内に収まるかを判定する。各フレームにおいて、クランプがアニメーション化クランピングエリア内に収まるか否かを判定するために、クランプのクランプ中心ヘアと、アニメーション化クランピングエリアの中心との間の(u,v)距離がアニメーション化クランピングエリアの(u,v)半径パラメータ内にあるかをチェックする。重複するアニメーション化クランピングエリア内に位置するクランプについては、クランプパーセント及びクランプレートの値を加算し、これによって、より濡れたファーが生成される。
【0063】
ステップ1125において、アニメーション化クランピングエリア内にクランプ中心ヘアがある場合、対応するクランプにアニメーション化クランピングフラグを立て、クランプヘアが、後に、アニメーション化クランピングエフェクトを反映して再方向付けされるようにする。これに代えて、クランプの各クランプヘアが、対応するクランプ中心ヘアがアニメーション化クランピングエリア内にあると判定された場合に設定されるアニメーション化クランピングフラグを有していてもよい。更に、ランタイム式に基づいて、アニメーション化クランピングエリア内にあると特定されたクランプヘアに、アニメーション化クランプレート値及びアニメーション化クランプパーセント値を割り当てる。一実施の形態においては、アニメーション化クランピングエリア内の各クランプのクランプパーセント及びクランプレートの値は、各フレームにおけるアニメーション化クランピングエリアの対応する値に置換される。アニメーション化クランピングエリアは、クランプより遙かに大きくてもよく、アニメーション化クランピングエリアは、複数の独立したクランプを含むことができる。ステップ1140では、各クランプを評価し、ステップ1145では、各パーティクルについての処理を行う。
【0064】
なお、アニメーション化クランピングエリアは、サーフェスパッチ境界を跨ぐこともある。例えば、アニメーション化クランピングエリアの中心が1つのサーフェスパッチ上にあっても、このエリアが他の1つ以上のパッチ上に位置することがある。アニメーション化クランピングエリアは、通常、アニメーション化クランピングエリアの中心、すなわち、パーティクルが当たる位置を含むサーフェスによって定義され、したがって、このサーフェスに関連付けられるので、隣接するパッチに跨るクランピングエリアの一部は、見落とされることがある。これにより、最終的なファーのクランピングにおける不連続性が生じることがある。
【0065】
一実施の形態では、この潜在的問題を解決する。新たなパーティクルがサーフェスに当たり、(u,v)半径がそのサーフェスの境界を超える都度、隣接するパッチに影響するアニメーション化クランピングエリアについて、更なる(u,v)中心及び(u,v)半径を生成する。すなわち、例えば、クランピングエリアが2つの隣接するパッチの一部を覆う場合、各隣接するパッチについて対応する(u,v)中心及び半径を生成し、ステップ1120〜1140の評価のために更なるアニメーション化クランピングエリアを提供する。
【0066】
ステップ1150では、各フレームについて、アニメーション化クランピングエリア内にあるクランプのクランプヘアを再方向付けする。このようにして、クランプヘアは、アニメーション化クランピングエリア内にある場合、選択的に調整される。一実施の形態においては、各フレームにおいて、クランピングは、アニメーション化クランピングエリアに制限され、これにより、アニメーション化クランピングエリアの外のクランプの最終的なヘアは、「乾いた」ヘアとして、標準的に生成される。
【0067】
ステップ1155において、処理すべき更なるフレームがある場合、処理は、ステップ1105に戻って繰り返される。このように、アニメーション化クランピング処理は、複数のフレームに亘って実行され、アニメーション化されたエフェクトを提供する。
【0068】
図2のステップ235は、基底にある皮膚(サーフェス)上のあるライン(ファートラック又はブレイクライン)に沿って、手入れされたファーコートを分ける(breaking up)ことによって、ヘアブレイキング又は乾いたファーのクランピングのエフェクトを生成するために適用することができる。後述するように、この処理は、対称的ブレイキング及び一方的ブレイキングの2種類のヘアブレイキングを含むことができる。対称的ブレイキングでは、ファートラックの両側のヘアが、そのトラックに向かって「ブレイク」し、一方的ブレイキングでは、トラックの片側のヘアが、そのトラックから離れる方向にブレイクする。
【0069】
一実施の形態においては、ファートラックは、アニメーションシステム内のサーフェス上の曲線として指定される。各トラックは、対称的ブレイキング及び一方的ブレイキングについて、半径、ブレイクパーセント(break-percent)及びブレイクレート(break-rate)を有し、一方的ブレイキングについては、更に、ブレイクベクトル(break-vector)を有する。生成される最終的な情報は、ブレイキングファイルに出力され、ブレイキングファイルは、後に、影響を受けるヘアを再方向付けするためにアクセスされる。
【0070】
ヘアブレイキング法の一実施の形態を図12aに示す。ステップ1200では、ファートラックを定義する。ファートラックは、(u,v)ブレイク半径を定義することによって、クランプと同様に定義してもよい。ステップ1205では、ブレイクラインヘア(ファートラックのために定義された曲線によって定義されたファートラック曲線上又はこの曲線の非常に近くにあるヘア)を算出する。ステップ1215、1220では、ブレイクラインヘア及びブレイク半径を用いて、各ヘアを評価し、ヘアが、対称的ブレイキングの場合には、ブレイクラインヘアの両側、一方的ブレイキングの場合には、ブレイクベクトルによって指定される片側(ブレイクベクトル側)の(u,v)ブレイク半径に含まれるか否かを判定する。ここでは、半径によって特定される空間内の各ヘアをブレイクヘアと呼び、次に、ブレイクヘアに最も近いブレイクラインヘア(ファートラック上のヘア)を、対応するブレイクラインヘアとみなす。各ヘアには、ブレイクラインヘア、対応するブレイクラインヘアへのインデクスを有するブレイクヘア、又はブレイクによって特定されるエリア内にないノーマルヘアのラベルが付される。
【0071】
なお、一方的ブレイキングの例では、各ブレイクヘアは、ブレイクラインヘアに「向かう」方向ではなく、ブレイクベクトルの向きに、対応するブレイクラインヘアから「離れる」方向に再方向付けされる。図12bは、対称的ブレイキング及び一方的ブレイキングの具体例を示している。
【0072】
ステップ237では、ブレイクヘアを、対応するブレイクラインヘアに対して再方向付けする。対称的ブレイキングでは、この処理は、上述したクランプヘアについて実行される処理に類似している。但し、ブレイクヘアでは、クランプヘアのために用いられるクランプパーセント及びクランプレートに代わってブレイクパーセント及びブレイクレートの値を使用する。一方的ブレイキングでは、ブレイクヘアは、ブレイクパーセント及びブレイクレートパラメータに基づいて、ブレイクラインヘアに引き付けられるのではなく、ブレイクラインヘアから遠ざけられる。
【0073】
図12c、図12d、図12e及び図12fは、ブレイキングエフェクトを示している。図12cは、ブレイクラインヘア1252、1254を有するオブジェクト1250を示している。図12dは、オブジェクトに関する対称的ブレイキングの結果のエフェクトを示している。図12e、及び12fは、ブレイクラインヘア1256〜1270に沿った一方的ブレイキングを示している。
【0074】
図2のステップ245では、多重パスの処理を実行するかについて判定を行う。ファーで覆われた殆どの動物の外皮は、下毛(undercoat)と呼ばれる、より柔らかく、薄く、短いヘアの層と、上毛(overcoat)と呼ばれるより長く厚いヘアから構成されている。ステップ245は、2重(又は多重)パスの処理を実行する能力を示しており、これにより、ステップ210、215、220、223(オプションとして、ステップ225、230、235)を2回以上実行し、各パスにおいて、異なるヘアのセットを生成することができる。これらのセット又は層は、レンダリングの時点(ステップ250)で処理され、結合される。このエフェクトを図13a、図13b及び図13cに示す。図13aは、本発明の教示に基づいて生成された下毛を表現している。図13bは、上毛を表現しており、図13cは、下毛及び上毛からなる結合された画像を表している。
【0075】
ステップ250によって示すように、それらの制御頂点によって表されるクランピングされたヘアは、一連の2次元画像にレンダリングされ、真に迫った乾いた及び濡れたヘアの外観が生成される。一実施の形態においては、この処理は、特定の観点から、3次元ヘアジオメトリを2次元画像平面に写像する関数と考えることができる。
【0076】
大量のヘアを高速且つ効率的にレンダリングするために、各ヘアのジオメトリモデルを単純に維持してもよい。上述のように、ヘアは、定められた数(一実施の形態では、初期値は4である。)の制御頂点を有するパラメトリック曲線で表現される。
【0077】
一実施の形態においては、処理は、既知のレンダリング技術を用いて、対応する制御頂点によって記述されるヘアを生成する。他の実施の形態では、カスタマイズされたモジュールを加え、ヘアにリアルな「シェーディング」を行う。これは、ヘアに沿って又はヘア上で、各ポイントに色の強度を割り当てることによって実現でき、ヘアに沿ったポイントは、ヘアを構成するピクセルとして定義することができる。
【0078】
ヘアのレンダリングの際、各ヘアに幅が加えられ、ヘアは、常にカメラ又は視点に向けられている細いリボン(narrow ribbon)に変換される。シェーディング処理は、これらのリボンプリミティブに適切にシェーディングを行い、これらを細いヘアとして、よりリアルに表現する。
【0079】
図14のフローチャートを用いてシェーディング処理の一実施の形態を説明する。ステップ1400では、各ヘアを処理する。ステップ1405では、各ヘアについて、ヘアのベースにおける面法線をヘア上の現在のポイントにおける法線ベクトルに混合し、ヘア上の現在のポイントにおけるシェーディング法線を得る。一実施の形態においては、ヘアは、ディスプレイ上の一連のポイント又はピクセルとしてレンダリングされる。したがって、現在のポイントとは、ヘアを表すピクセルの1つである。
【0080】
シェーディング処理は、ヘアに沿った複数のポイントに適用できる。一実施の形態においては、これらのベクトルが混合に貢献する量は、ヘア上の現在のポイントにおける接ベクトルと、ヘアのベースにおける面法線ベクトルとの間に形成される角度に基づいて定まる。この角度がより小さい程、面法線がシェーディング法線により貢献する。
【0081】
ステップ1410では、ヘア上の現在のポイントにおけるヘアの強度を、そのポイントにおけるシェーディング法線を用いて判定する。一実施の形態においては、ランバートモデル(Lambertian model)を用いて、これらの強度を算出する。この手法を用いる利点は、ユーザが、基底にあるスキンサーフェスに光を照射し、ファーが加えられた場合に予測される結果を受け取ることができる点である。また、この手法は、個々のヘアの間のシェーディングの差及び各ヘアの長さに沿ったシェーディングの差を考慮に入れる。
【0082】
ファーコート上にリアルなシャドウを得るために、シャドウマップを使用する。シャドウマップの使用については、当分野で既知であり、ここでは、これ以上詳細には説明しない。但し、ヘアをシャドウマップに組み込むことによって、幾つかの、望ましくない副次的効果が生じる。1つの問題は、明るく照射されたファー上における、ファーのセルフシャドウイングに起因する暗いストリーキング(dark streaking)の問題である。光は、通常、スキン及びヘアから反射し、明るく照射されたファー上には、暗いシャドウが生じないため、明るく照射されたファー上の暗い筋(streak)は、不自然に見える。
【0083】
暗いストリーキングエフェクトを最小化するために、一実施の形態では、ステップ1415において、ある基準に基づいて、シャドウマップのためのヘアを短くする。例えば、ヘアの長さと密度によって、ヘアを短くするためのパーセンテージを決定してもよい。シャドウマップのためのヘアを選択的に短くすることによって、ファーに照射される光のために、明暗境界線上で分かれるシャドウを生成しながら、ヘアのセルフシャドウイングエフェクトが最小化される。
【0084】
バックライティングは、ファーで覆われたオブジェクトの背後に位置する各光源について、シャドウマップを用いて、ここでも、シャドウマップレンダリング処理において、密度及び長さに基づいてヘアを短くすることによって、同様の手法で行われる。一実施の形態においては、また、ヘアのための照明モデルによって、各光の拡散減衰角(diffuse fall-off angle)を制御することもできる。このようにして、ファーで覆われたオブジェクトの真後ろにある光が、オブジェクトの周りを包むことができる。シャドウマップと共にこれらの照明制御を用いて、妥当なバックライティングエフェクトが得られる。
【0085】
一実施の形態においては、クランピングされたヘアについて、シェーディングを変更する。一実施の形態においては、ヘアシェーディングの2つの側面を変更してもよい。第1に、ファー上の反射の量を増加させる。第2に、シェーディングモデルにおいて、クランピングを考慮に入れる。上述したように、ファーが濡れたときに実際に起こることをシミュレートするために、ファーは、幾何学的に、クランプとしてモデル化される。シェーディングモデルでは、各ヘア及び各光について、光源の位置に関して、ヘアが照射されるクランプの側を判定し、ヘアが照射される側に基づいて、ヘアを暗くし又は明るくする。これにより、光源に面しているクランプの側のヘアは、光源に面していないクランプ上のヘアに比べて、より明るくなる。
【0086】
更なる実施の形態
本発明の更なる実施の形態は、図1bに示す動物のファー及び人間のヘアのパイプラインに加えられる追加的特徴に関連する。具体的には、パイプラインへのこれらの追加的特徴は、デジタルキャラクタのための、様式化され、写真のようにリアルな様々なファー及びヘアの外観を生成することを目的とする。
【0087】
まず、図15について説明すると、図15は、上述した図1bのパイプラインに類似するが、追加的な及び異なる機能を含むヘア/ファーパイプライン1500を示すブロック図である。
【0088】
上の例と同様に、サーフェス定義モジュール1550は、入力を受け取る。サーフェス定義モジュール1550は、上述のように、レンダリングするオブジェクトのサーフェス及び制御ヘアを定義する。更に、上述のように、制御ヘア調整モジュール1555は、制御ヘアを調整し、コーミング等の機能及びサーフェス境界に亘るシームレスヘアを提供する。
【0089】
上述した図1bのパイプラインに加えて、ヘア/ファーパイプライン1500には、後に詳細に説明するように、異なるヘアアニメーションを編集及び結合するヘアモーション合成器モジュール(hair motion compositor module)1557が追加されている。補間モジュール1560は、上述のように、制御ヘアを用いて、サーフェスに亘ってヘアを補間するために使用される。
【0090】
更に、エフェクトモジュール1565は、後により詳細に説明するように、ヘア/ファーパイプライン1500の一部として、例えば、クランピング、ブレイキング、ウェーブエフェクト、ウィーブエフェクト等の様々なエフェクトをヘア及びファーに提供する。更に、最適化モジュール1567は、後に詳細に説明するように、ヘア/ファーパイプライン1500において、レンダリング時間を削減する技術を提供する。
【0091】
ヘア/ファーパイプライン1500内のシェーディング、バックライティング及びシャドウイングモジュール1570は、上述のように、ヘア/ファーにシェーディング、バックライティング及びシャドウイングエフェクトを提供するために使用でき、ディスプレイモジュール1575は、ヘア/ファーサーフェスを有するオブジェクトの最終的な出力をレンダリングして、表示するために使用できる。
【0092】
更に、図1aに関して上述したように、ヘア/ファーパイプライン1500は、中央演算処理装置(CPU)、メモリ、入出力(I/O)等を有し、例えば、ディスクドライブ又は他のデバイス等のストレージ装置に接続することができるコンピュータシステムによって実現してもよいことは明らかである。更に、コンピュータシステムは、キーボード又は他のユーザ入力装置及びディスプレイを備えていてもよく、ディスプレイは、本発明の実施の形態に基づいて、ユーザインタフェース及びヘア/ファーのレンダリングを表示するために用いてもよい。
【0093】
特に、本発明の実施の形態は、図15の上述したパイプライン1500によって実現される技術を開示し、例えば、特別なコーミングツール、異なる最終的ヘア補間アルゴリズム、各最終的なヘアをレンダリングすることに加えてカスタマイズ可能なヘア毎の演算を実行する汎用アプリケーションプログラムインタフェース(API)等のアイテムに関連する。更に、技術は、ここでは、ヘアモーション合成器(Hair Motion Compositor:HMC)と呼ぶ異なるヘアアニメーションの編集及び合成のための方法及びシステム、並びにレンダリング時間を削減するヘア最適化ストラテジに関係する。一実施の形態においては、HMCは、ヘア/ファーパイプライン1500のヘアモーション合成器モジュール1557によって実現され、最適化ストラテジは、ヘア/ファーパイプライン1500の最適化モジュール1567によって実現される。
【0094】
実写及びコンピュータアニメーションの両方の映画において、デジタル制作された動物、人間、仮想生物が組み込まれることが益々多くなっている。これらに現実味を帯びさせるために、これらのキャラクタの多くは、説得力があるヘア又はファーを必要とする。最高の品質が求められるプロダクション環境では、ヘアを生成するパイプラインは、単に動作するだけではなく、実用的で、強健で、柔軟で、効率的で、強力であることが求められる。
【0095】
ここには、特定のショー(映画)及びそのキャラクタのために監督が選択できる外観及び表現を満足させる特定のヘア及びファーの外観の作成を容易にするツール及び技術を開示する。説得力がある動物のファーを生成し、信憑性がある人間のヘアを作成し、実際の役者のヘアに近似させることを可能にするソリューションを説明する。
【0096】
ここでは、ルックデベロップメント(コーミング)(質感をどのように表現していくか、それに伴う技術的な問題を解決していく開発のことを意味する)、ヘアアニメーション及びショット、並びに多数のヘアのレンダリングといった、デジタルヘア作成処理において、3つの最も複雑で時間が掛かる問題を解決し改善する、図1bのヘア/ファーレンダリングパイプラインに加えられる改良を説明する。
【0097】
なお、ヘアを幾何学的にモデル化する場合、人間のヘアに関しては、動物のファーにおける問題とは僅かに異なる問題が生じる。具体的には、より長い人間のヘアは、遙かに精巧なコーミング及びアニメーションツールを必要とする。一方、動物のファーは、人間の10万〜15万本に比べて、数百万本もの個々のヘアストランドがあるので、レンダリングステージを最適化する必要がある。
【0098】
ここに説明するように、ヘア/ファーパイプライン1500によって使用される技術は、動物の短いファーから人間の長いヘアに至る、様々なヘアスタイルの制作に関連する。具体的には、ヘア/ファーパイプライン1500は、ヘアのモデル化、アニメーション化及びレンダリングヘアのためのツール、少ない任意の数の制御ヘアについて基本的なコーミング及びアニメーションの特徴を定義することを可能にすること、並びにこれらの制御ヘアから、レンダリングされた最終的なヘアストランドを補間するための技術等の特徴を含む。
【0099】
なお、従来のビューイング機能を提供するために、オートデスク社(AUTODESK)から入手可能なMAYA等の従来の3Dアニメーションソフトウェアを用いてもよい。更に、最終的なヘアのレンダリングを支援するために、ピクサー社(PIXAR)から入手可能なRenderManソフトウェアパッケージを用いてもよい。これらのソフトウェアパッケージは、コンピュータグラフィックス技術の分野において周知である。
【0100】
以下、ヘア/ファーパイプラインによって実現される更なるコーミング及び制御ヘア編集ツールについて説明する。例えば、一実施の形態では、順方向又は逆方向の運動モード(kinematic mode)において、長さを概ね維持しながら、制御ヘアの形状を定義するために、制御ヘアに付された基礎的なガイドチェイン(basic guide-chain)を用いてもよい。また、これは、ワールド空間又はローカル空間において、同じ変形を他の選択された制御ヘアに適用できる。更に、ユーザが正射影図において曲線をスケッチでき、この曲線を用いて選択された制御ヘアとの交線を算出し、これらのポイントで制御ヘアをカットする直感的カッティングツールを使用してもよい。
【0101】
特定の一実施の形態では、選択された制御ヘアを、制御された手法で互いにクランプできるコーミングツールを開示する。
【0102】
図16a及び図16bについて説明すると、図16a及び図16bは、制御ヘアに沿って可能なバリエーションを有する制御ヘアのクランピングを示している。図16aに示すように、制御ヘアの第1の組1602及び制御ヘアの第2の組1604は、生物1606の頭部から、垂直に伸び出しているように描かれている。図16bに示すように、クランププロファイルウィンドウ1610は、ヘア/ファーパイプライン1500の制御ヘア調整モジュール1555によって実現されるユーザが定義可能なクランププロファイル曲線1611を含み、クランププロファイル曲線1611は、制御ヘアの第1の組1602に適用してもよく、これにより、制御ヘアは、変形された制御ヘア1615によって示すように、ユーザが定義可能なクランププロファイル1611に近似するように変形される。
【0103】
ボリューム埋め込み技術(FILL-VOLUME TECHNIQUES)
一実施の形態においては、ヘア/ファーパイプライン1500のサーフェス定義モジュール1550を用いて、サーフェス及び関連するボリュームを定義する形状を生成することができる。制御ヘアモジュール1555を用いて、制御ヘアによってボリュームを埋め込むことができ、補間モジュール1560を用いて、制御ヘアから最終的なヘアストランドを補間することができる。以下、これらの技術について、より詳細に述べる。
【0104】
具体的には、ボリューム埋め込みツール(fill-volume tool)を用いて、ランダムに配置された制御ヘアによって、閉じられたサーフェスを速やかに埋めることができる。これは、例えば、多くの場合、モデラがキャラクタの概略的なヘアの外観を記述するために提供する「ヘアボリューム」、例えば、ポニーテールを定義するボリュームを埋めるヘアを生成する際に有用である。
【0105】
図17について説明すると、図17は、ボリューム埋め込み機能を実現する処理1700を示すフローチャートである。図17に示すように、ブロック1710では、サーフェス及び関連するボリュームを定義する形状を生成する。これは、例えば、ヘア/ファーパイプライン1500のサーフェス定義モジュール1550を用いて行ってもよい。次に、ボリュームをランダムに配置された制御ヘアで埋める(ブロック1720)。これは、例えば、ヘア/ファーパイプライン1500の制御ヘア調整モジュール1555を用いて行ってもよい。最後に、制御ヘアストランドから最終的なヘアストランドを補間する(ブロック1730)。これは、例えば、ヘア/ファーパイプライン1500の補間モジュール1560を用いて行ってもよい。
【0106】
更に、図18a〜図18cは、この処理の具体例を示しており、ここでは、モデラによって、編まれたヘア(ブレイド)がサーフェスとして単純に表現され、次に、ヘアが埋め込まれている。具体的には、図18a〜図18cは、ブレイド形状を定義するサーフェス及び関連するボリュームの生成(図18a)、ランダムに配置された制御ヘアによるこれらのボリュームの埋め込み(図18b)、及び制御ヘアからの最終的なヘアストランドの補間(図18c)を示している。
【0107】
まず、図18aに示すように、それぞれが形状及び関連するボリュームを定義する3個の編成されたシリンダ1802、1804、1806を生成する。次に、図18bに示すように、ボリューム埋め込み機能を用いて、それぞれ制御ヘア1810、1812、1816を生成する。そして、図18cに示すように、制御ヘアからヘア1820、1822、1826の最終的なブレイドを補間し、レンダリングする。
【0108】
以下に説明する補間アルゴリズムを利用して、既存の制御ヘアから更なる制御ヘアを自動的に補間してもよく、また、既存の制御ヘアから最終的なヘアストランドを自動的に補間してもよい。更に、新たに挿入された制御ヘアの形状を選択された既存の制御ヘアの間でブレンディングしてもよい。
【0109】
一実施の形態においては、ヘア/ファーパイプライン1500は、異なるアルゴリズムを用いて、異なる座標スキームに基づいて、(例えば、補間モジュール1560を用いて)制御ヘアから最終的なヘアストランドを補間し、並びに既存の制御ヘアから他の制御ヘアを補間してもよい。
【0110】
この補間法の具体例を図19a〜図19cに示す。図19a〜図19cには、同じ制御ヘア1902を有する変形されたサーフェス1900の側面図を示している。この補間法を用いることによって、異なるアプリケーションに亘って、制御ヘアの数を少なく維持することができる。
【0111】
例えば、図19aは、最終的なヘアストランド1904がサーフェス変形に自動的に従わない「ワールド空間」座標フレームにおける、制御ヘア1902からの最終的なヘアストランド1904の補間のための第1の補間方法を示している。これは、サーフェス(スキン)の変形に従うべきではない植物又は長いヘアスタイルについて有用である。
【0112】
図19bは、「ローカル空間」座標フレームにおける、制御ヘア1902からの最終的なヘアストランド1904の補間のための第2の補間方法を示している。「ローカル空間」スキームでは、最終的なヘアストランド1904は、サーフェス変形に自動的に従う。これは、より短いヘア又はファーにとってより自然である。
【0113】
最後に、図19cは、最終的なヘアストランド1904が影響のある制御ヘア1902の凸包の内側に留まる、制御ヘア1902からの最終的なヘアストランド1904の補間の第3の補間方法を示している。このスキームは、例えば、曲面の頭皮の頂部及び側部から垂れ下がるクランプされていない長い人間のヘアについて有用である場合がある。なお、ローカル空間モード及びワールド空間モードでは、補間された最終的なヘアストランド1904は、制御ヘア1902より長くなることがある、凸包モードでは、このようなことはない。
【0114】
更に、ヘア/ファーパイプライン1500を用いて(例えば、エフェクトモジュール1565を用いて)最終的なヘアストランドの階層的なクランピング能力を実現することができる。最終的なヘアは、ユーザによって直接指定された手動クランプに属していてもよく、又は手続き的に生成された自動クランプ及びマイナークランプに属していてもよい。自動クランプヘアは、手動クランプの内側及び外側の何れに生じてもよく、マイナークランプヘアは、手動クランプ又は自動クランプ内のみに存在する。これらの技術は、濡れたヘアの外観に適用してもよく、乾いたヘアの房の外観をカスタマイズするために適用してもよい。
【0115】
ヘア/ファーパイプライン1500の更なる特徴として、例えば、ウェーブ、ウィーブ(ヘアのルートを中心とする回転)、短くされた先端、風等の多数のパラメータ又はエフェクトを、例えばヘア/ファーパイプライン1500のエフェクトモジュール1565によって実現することができる。これらのエフェクトは、制御ヘア間の補間後に最終的なヘアに直接適用してもよい。
【0116】
これらのウェーブ、ウィーブ及び風エフェクトの具体例を図20a〜図20cに示す。図20a〜図20cのそれぞれにおいて、制御ヘア2002は、真っ直ぐ上を向くように示されている。例えば、図20aは、最終的なヘア2004に対するエフェクトなしの状態を示している。図20bは、最終的なヘア2004に適用されたあるウェーブ及びウィーブエフェクトを示している。最後に、図20cは、最終的なヘア2004に適用された風エフェクトを示している。
【0117】
また、エフェクトは、クランピングの前又は後に、例えば、手動クランプメンバヘア又はクランピングされていないヘア等の異なるヘア「タイプ」に選択的に適用してもよい。更に、制御ヘアの異なる組を有する場合がある複数の最終的なヘアレイヤに組み合わせて、独立したヘアパラメータ又はエフェクトを用いることができる。動物のファーの場合、この手法で下毛と上毛を生成することができ、複雑な人間のヘアは、ベース、ほつれ(stray)、縮れ(fuzz)等の幾つかの独立したレイヤに分けることができる。
【0118】
ジオメトリインスタンス化
他の本発明の実施の形態は、任意のジオメトリインスタンス化(geometry instancing)に関する。任意のジオメトリインスタンス化は、ヘア/ファーパイプライン1500の能力を利用して、上述のように、最終的なレンダリングされたヘアプリミティブのスタイル又は外観をインスタンス化(実体化)し、アニメーション化し、制御する特徴を提供する。この観点から、ヘアレンダリング機能に関連して、アプリケーション開発者がヘアシステムから毛嚢(hair follicle)単位の情報を得ることができ、ヘアのレンダリングを他のオペレーションに置換できるように、汎用アプリケーションプログラムインタフェース(application program interface:API)を提供してもよい。
【0119】
例えば、一実施の形態では、ヘアパイプライン1500を用いて、サーフェスにおける少なくとも1つのヘアのヘア位置に基づいて、ユーザ選択ジオメトリを生成する。サーフェス定義モジュール1550を用いて、サーフェスを定義してもよい。ディスプレイモジュール1575を用いて、少なくとも1つのヘアに代えて、サーフェス上のヘア位置におけるユーザ選択ジオメトリを処理し、ユーザ選択ジオメトリをレンダリングしてもよい。
【0120】
具体的には、最終的なレンダリングされたプリミティブの毛嚢を出力することに代えて、例えば、ディスプレイ及びレンダリングモジュール1575において、ヘア/ファーパイプライン1500へのフックを提供し、ユーザが、レンダリングされたジオメトリをオーバライドして、ヘアをレンダリングすることに代えて、他のジオメトリ形状をレンダリングできるようにしてもよい。これにより、例えば、人間の頭に植える代わりに、人間の頭に刺を生成することができる。或いは、ヘアで満たされたフィールドに代えて、フィールドを満たす花、草又は木を植えてもよい。
【0121】
但し、特定の景色の設計を試みる際、全く同じオブジェクト(例えば、花又は木)をインスタンス化すると、全ての花又は木が同じになってしまうという問題が生じる。したがって、レンダリング時において、異なる種類のプリミティブをモデル化及びインスタンス化し、各最終的なヘアを置換してもよい。
【0122】
ヘアの最終的な形状を完全に削除することに代えて、毛嚢を用いて変形の軸を表現し、この軸を中心にして、インスタンス化されたジオメトリを、ヘアの形状に基づいて変形してもよい。この手法により、ヘアのレンダリングに関して上述した様々な全てのエフェクト(例えば、クランピング、ブレイキング、ウェーブ、ウィーブ、風等)の全ての利点が、選択された他のジオメトリ(例えば、花、木等)のレンダリングに利用できる。
【0123】
図21について説明すると、図21は、本発明の一実施の形態に基づくジオメトリインスタンス化を実現する処理2100を示すフローチャートである。ブロック2105では、ヘア/ファーパイプライン1500がレンダリングステージに入っているか否かを判定する。これに該当しない場合、処理は、終了する(ブロック2110)。一方、レンダリングステージに入っている場合、ブロック2115において、ユーザがヘアレンダリング処理をオーバライドし、代わりにジオメトリインスタンス化機能を使用することを決定しているか否かが判定される。これに該当しない場合、処理は、ブロック2120で終了する。
【0124】
一方、ユーザが、ヘアレンダリング処理をオーバライドし、代わりにジオメトリインスタンス化機能を使用することを決定している場合、ブロック2125において、毛嚢情報を得る。次に、ブロック2130において、ユーザが選択したジオメトリに基づいて、サーフェス上の毛嚢に、代わりの(すなわち、ヘア/ファーの代わりの)ユーザ選択ジオメトリ2130を植える。そして、ブロック2135において、ヘアについて以前に決定したヘア形状を適用して、ユーザ選択ジオメトリを変形する。
【0125】
この具体例を図22a及び図22bに示す。図22aには、サーフェス2212上でレンダリングされている複数のヘア2210が示されている。各ヘア2210には、毛嚢情報(例えば、サーフェス2212上の相対的位置)があり、(例えば、ヘアの形状を定義する)軸方向の変形フレームワーク、並びに形状特徴に関連する制御情報、例えば、(上述のように)曲線、ベンド、回転、ねじれ等がこれに関連付けられる。
【0126】
但し、本発明の実施の形態では、図22bに示すように、ユーザは、ヘアの代わりに、他のジオメトリオブジェクト(例えば、花)をレンダリングすることを決めることができる。例えば、3個のモデル化された花の組から花をランダムに選択でき、対応する最終的なヘアの形状に基づいて変形できる。
【0127】
図22bでは、同じ毛嚢情報及び同じ形状情報を利用して、ヘアが複数の花2220、2222、2224に置換されている。なお、花は、単に例として示しているに過ぎず、仮想的にあらゆるジオメトリ形状をヘア形状の代わりに用いることができることは明らかである。このように、ヘア/ファーパイプライン1500を用いて、新たなジオメトリをインスタンス化及び変形でき、この結果、あらゆるタイプのジオメトリ形状をレンダリングするための強力で、類のない手法が提供される。
【0128】
ヘアモーション合成システム
プロダクションのコンテキストにおいてヘアアニメーション及び動的シミュレーションを扱う場合、異なるモーション結果を結合する必要性が生じることが多い。1つのシミュレーションにおいて、ヘアの一部は、理想的であるが、ヘアの他の残りの部分は、他のシミュレーションの方が見栄えがよい場合、全てのヘアに望ましい動きをさせる正しい設定を見出すよりも、それぞれのシミュレーションのどの部分を採用することが望ましいかを拾い上げ、選択する方が簡単である。
【0129】
以下に説明するように、一実施の形態において、ヘアモーション合成器は、ノード及びオペレーションのネットワークを構築することによって、ユーザが様々な制御ヘアアニメーションを結合し、変更することができるシステム及び方法を提供する。例えば、一実施の形態では、ヘア/ファーパイプライン1500のヘアモーション合成器モジュール1557を用いて、ヘアモーション合成器を実現することができる。
【0130】
例えば、一実施の形態では、ヘアパイプライン1500は、サーフェス定義モジュール1550を用いて、サーフェス及び制御ヘアを定義し、ヘアモーション合成器モジュール1557は、制御ヘア及びサーフェスに関連する異なる制御ヘア曲線形状を結合する。具体的には、ヘアモーション合成器モジュール1557は、静的制御ヘア曲線形状を定義する静的ノードを生成し、アニメーション制御ヘア曲線形状を定義するアニメーションノードを生成し、静的ノードの静的制御ヘア曲線形状をアニメーションノードのアニメーション制御ヘア曲線ヘア形状に結合して、制御ヘアのための結果的な制御ヘア曲線形状を生成する。
【0131】
ノードグラフの基礎
一実施の形態においては、ヘアモーション合成器(hair motion compositor:HMC)は、ノードの非循環有向グラフであり、ここで、ノードは、アニメーション及びアニメーションに適用されるオペレーションの何れかを表すことができる。ノード間の接続は、アニメーション化制御ヘア曲線形状のデータフローを表す。
【0132】
シンプルノード
キャラクタ又はオブジェクトのためのHMCセットアップの作成では、通常、基礎として用いられる制御ヘアの既存のコーミングがあると仮定する。HMCセットアップは、通常、(制御ヘア曲線の初期の、アニメーション化されていない形状を含む)静的ノードと、(最終的な結果を表し、ノードグラフの出力である)制御ノードとの2つのノードを必要とする。制御ヘア曲線形状を表す更なるノードをグラフに挿入してもよい。これらの更なるノードをアニメーションノードと呼ぶことができる。
【0133】
図23について説明すると、図23は、アニメーションノード2304及び最終的な制御ノード2306に接続された静的ノード2302の簡単なグラフを示す図である。図23に示すように、アニメーションノード2304への入力は、静的ノード2302からの静的コーミングされた形状である。ユーザは、アニメーション制御ノード2304が提供する制御ヘア曲線のアニメーションセットを介して、トゥイーク(tweak)及びキーフレームを適用して、静的な形状をオフセットし、制御ノード2306の最終的なコーミングされたヘア結果を生成することができる。
【0134】
ブレンドノード
ブレンドノードは、特徴を合成するために使用できる。ブレンドノードは、2つの入力を受け取り、これらを結合して、単一の出力を生成するオペレーションノードとして定義することができる。例えば、各入力からの制御ヘア曲線を(曲線の長さを維持するために)回転的にブレンドしてもよく、(直線的なブレンドのために)位置的にブレンドしてもよい。
【0135】
更に、各入力をどの程度使用するかを制御するために、ブレンドノードのためのブレンド係数パラメータを用いてもよい。例えば、0の値は、入力ノードAの全体を使用することを指定し、1の値は、入力ノードBの全体を使用することを指定し、これらの値の中間の値では、ブレンドノードは、入力ノードAの制御ヘア曲線形状と入力ノードBの制御ヘア曲線形状との間の滑らかな補間を提供する。
【0136】
図24について説明すると、図24は、ブレンドノード2403を使用する処理を示す図である。同時に参照される図25a及び図25bは、それぞれ、回転的ブレンディングと、位置的ブレンディングとの間の違いを示している。具体的には、図24は、静的ノード2402及びアニメーションノード2404から入力をブレンドし、制御ノード2406への最終的な出力形状を生成するブレンドノード2403を示している。この具体例では、ブレンドノードのブレンド係数は、0.5である。
【0137】
より詳しくは、図25aに示すように、ブレンドノード2403によって、0.5のブレンド係数の回転的ブレンディングが選択された場合、入力された静的制御ヘア2520及びアニメーション制御ヘア2530に基づいて、結果的な制御ヘア2510が得られる。回転的ブレンディングの利点は、結果的な制御ヘアの長さが維持されるという点である。
【0138】
図25bに示すように、ブレンドノード2403によって、0.5のブレンド係数の位置的ブレンディングが選択された場合、入力された静的制御ヘアヘア2560及びアニメーション制御ヘア2570に基づいて、結果的な制御ヘア2555が得られる。位置的ブレンディングの利点は、結果的な制御ヘア形状が、回転的ブレンディングに比べて、より予測可能であるという点である。
【0139】
デフォルトでは、ブレンドノード2403は、各入力制御ヘア曲線の全ての制御頂点(CV)に同じブレンド値を適用してもよい。CV毎の制御のために、ユーザは、各CVにおいて如何なるブレンド係数値を用いるかを指定する関数曲線を作成できる。これは、例えば、ベースCVの動きを第1の入力に由来させ、チップCVの動きを第2の入力に由来させるために用いることができる。CV毎の関数曲線を用いている場合であっても、通常、入力の全ての制御ヘア曲線に同じブレンド係数が適用される。
【0140】
ヘア毎のブレンド値を指定するために、ユーザは、3次元空間内の領域を特定するブレンドボール(blend ball)を使用してもよい。ブレンドボールは、それぞれが内側及び外側のブレンド係数値を有する2つの同心球から構成してもよい。内側の値が0であり、外側の値が1である場合、内側球面内の全ての制御ヘア曲線は、第1の入力からアニメーションを生成し、外側球面外の全ての制御ヘア曲線は、第2の入力から値を生成し、これらの間では、滑らかな補間が行われる。
【0141】
図26は、このタイプのブレンドボール2600の具体例を示している。本質的には、ブレンドボール2600は、ブレンドノードのエフェクトを局所化するために使用される。図26に示すように、ブレンドボール2600は、内側球面2602及び外側球面2604を含む。更に、図26は、アニメーション制御ヘア2607と入力された静的制御ヘア2608とのブレンディングに対する、内側球面2602及び外側球面2606を介するブレンドボール2600のエフェクト及び結果の出力制御ヘア2610を示している。
【0142】
動的ソルバ
なお、典型的なシミュレーション設定(剛性、減衰等)を特定する以外に、多くの初期の努力は、ソルバに入力として供給される良好なゴール形状を特定することに注がれる(例えば、制御ヘア曲線が「ヒット」することをユーザが望むキーポーズ)。しかしながら、結局、時間の多くは、1つ以上のシミュレーションの結果に対処するために費やされる。
【0143】
動的ソルビングプロセス(dynamic solving process)は、それ自体、時間が掛かることが多く、直接的なユーザ制御から外れているので、所望の結果を達成するために実行する必要があるシミュレーションの数を最小化することが重要である。
【0144】
例えば、一実施の形態では、ヘアシミュレーションのためにMAYAヘア動的ソルバ(MAYA hair dynamic solver)を用いてもよい。しかしながら、上述したHMCシステムは、動的ソルバを感知しない(dynamic solver-agnostic)。本質的には、ソルバは、ノードグラフ内の単一のノードとして扱われる。
【0145】
図27について説明すると、図27は、動的ソルバノード(ソルバノード2706及び動的ノード2708によって表されている。)を含む動的セットアップを示している。初期の静的コーミングノード2702は、ゴールとして用いられるアニメーションノード2714を介してソルバ2706に接続されているが、最終的な結果は、動的シミュレーションノード2708の出力とゴールとの間で(ブレンドノード2712によって)ブレンドされている。制御ノード2710は、結果の出力である。
【0146】
デフォルトでは、100%動的になるように、ブレンドは、0に設定される。しかしながら、速やかに、ヘアをより堅く見せるために(一般的なの美的要求)、新たなシミュレーションを実行することなく、静的なゴールに戻っていくように、ブレンドを徐々に増加させることができる。
【0147】
使用されている設定及びシーンの複雑性によっては、動的シミュレーションは、長時間掛かることもあるので、ユーザのコンピュータを他の作業のために解放するために、動的シミュレーションは、多くの場合、レンダファーム(RENDERFARM)上で実行させてもよい。これに対応するために、制御ノード2710に接続されているキャッシュアウトノード2720を用いて、ストレージ装置にノードが接続されているときはいつでも、ストレージ装置に書込を行ってもよい。そして、後述するように、キャッシュアウトファイルをキャッシュインノードに後に読み戻すことができる。なお、キャッシュアウトノードは、システムの如何なるノードにも適用できることは明らかである。更に、ストレージ装置は、ハードディスクドライブであってもよく、他の如何なる種類のストレージ装置であってもよい。
【0148】
ボリュームノード
非常に多くの場合、特に、コンピュータグラフィック特徴の制作のために、アニメーション部門において、所定のショット内でヘアがどのように動くかを表現するために、ヘアを表すプロキシサーフェスが、モデル化され、何らかのキーポーズにおいてキーフレーミングされる。
【0149】
例えば、キャラクタのポニーテールは、外に向かって膨らんだ管状のボリュームによって近似させることができる。この機能を実現するために、1つ以上のボリュームのアニメーションに従うように制御ヘア曲線を効果的に結合するボリュームノードを用いてもよい。ボリュームノードの他の用途として、動的シミュレーションの結果をオフセットし、所望の結果を生成してもよい。この場合、手動でアニメーション化されたボリューム(hand-animated volume)は、動的制御ヘアに自動的に従わないので、このようなボリュームを用いることは、実用的ではない。これに代えて、変形される制御ヘア曲線の凸包として、オンザフライでビルトインされる自らのボリュームを提供するボリュームノードを用いてもよい。そして、ユーザは、アニメーションをオフセットするようにボリュームを変更してもよい。これは、個々のヘアの制御頂点を変更するより遙かに簡単である。
【0150】
図28aは、制御ヘア曲線2802を囲む、自動的に生成された円筒状のボリュームノード2804を示す図である。図28bは、ユーザがボリュームノード2804によって制御ヘア曲線を編集した後にオフセットされた制御ヘア曲線2810を示す図である。図28a及び図28bからわかるように、ボリュームノード2804によって、変更された制御ヘア曲線2810によって示すように、容易に制御ヘア2802を変更できる。
【0151】
スーパーヘアノード
スーパーヘアノードは、単純化されたプロキシジオメトリを介して、ヘアアニメーションをシェーピング又はオフセッティングすることによって、ボリュームノードと同様のメカニズムを提供する。但し、この場合のプロキシジオメトリは、他の全てのヘアと同様に、サーフェスに取り付けられた曲線である。スーパーヘアノードは、コーミングステージにおいて静的ヘアをシェーピングするため、及びショットにおいてアニメーション化ヘアを変更するための両方において、複数の制御ヘアを制御するために使用してもよい。
【0152】
一実施の形態においては、スーパーヘアノードは、絶対モード及び相対モードの2つのオペレーションモードを有することができる。絶対モードでは、スーパーヘアノードは、単一のコントローラ曲線を用いて、制御ヘアの正確な形状及びアニメーションを決定する。ユーザは、値が0〜1の範囲の重みパラメータを用いて、エフェクトを部分的にのみ適用することを選択できる。また、スーパーヘアノードには、コントローラ曲線の形状をワールド空間において一致させるか、各制御ヘア曲線のローカル空間において変形を適用するかのオプションがある。
【0153】
図29について説明すると、図29は、スーパーヘアノード処理の処理2900を示すフローチャートである。ブロック2910では、ユーザがスーパーヘアノードを選択する。ブロック2915では、ユーザは、絶対モード又は相対モードのうちのどちらを使用するかを選択する。絶対モードが選択された場合、ブロック2920では、重みパラメータを選択でき、ブロック2925では、ワールド空間又はローカル空間を選択できる。ブロック2930では、コントローラ曲線を制御ヘアに適用する。
【0154】
一方、処理2900において、相対モードが選択された場合、ユーザは、同様に、重みパラメータを選択し(ブロック2940)、ワールド空間又はローカル空間を選択する(ブロック2945)。但し、相対モードでは、コントローラ曲線及びベース曲線の両方が制御ヘアに適用される(ブロック2950)。
【0155】
相対モードでは、コントローラ曲線とベース曲線の両方が使用され、これらの2つの間の差分だけが制御ヘア曲線に適用される。この手法は、通常、入力された何らかのアニメーションを既に有する制御ヘアを変更する場合に用いられる。なお、コントローラ及びベース曲線が正確に一致している場合、スーパーヘアノードは、効果を有さない。スーパーヘアノードを作成する場合は、コントローラ及びベース曲線は、デフォルトでは、真っ直ぐに作成される。アニメーション化ヘアをオフセッティングする場合、両方の曲線は、オプションとして、制御ヘアの平均化された形状を有することができる。ここからコントローラ曲線をトゥイークする(つまんで引っ張る:tweak)ことは、遙かに直感的である。
【0156】
図30a及び図30bは、それぞれ、ローカル空間及びワールド空間のスーパーヘアオペレーションを簡潔に示している。図30a及び30bに示すように、初期の制御曲線形状3000は、サーフェスからの法線に沿って真っ直ぐに伸び、結果的な制御ヘア3010は、コントローラ曲線3020に一致するように整形される。
【0157】
絶対モード及び相対モードの両方において、スーパーヘアのエフェクトは、全ての駆動ヘア(driven hairs)に一様に適用される。局所的な制御のために、コントローラ曲線の周りに、影響を受ける領域を定義することができる。
【0158】
図31に示すように、(上述と同様の)内側球面及び外側球面を含むブレンドボールを用いて、スーパーヘアのどこに、どの程度の効果を与えるかを定義してもよい。具体的には、図31は、内側球面3112及び外側球面3114を有するブレンドボール3110を示しており、ブレンドボール3110は、コントローラ曲線3120及び制御ヘア3130に影響を与えている。
【0159】
内側の重み及び外側の重みは、それぞれの対応する球面3112、3114に関連付けられ、スーパーヘア3120及び制御ヘア3130の効果は、これらの間で補間される。影響の領域の実用的な用途として、スーパーヘア3120を用いて、手の動きに従ってコントローラ曲線をサーフェス上で滑らせ、手が動くにつれて、ヘアを押しつぶすことによって、例えば、ファーの一部を手で撫でた場合等の衝突(collision)を模倣することができる。
【0160】
ヘア動き合成の使用例
以下では、ヘアモーション合成器(HMC)のパワー及び多用途性の幾つかの具体例を説明する。
【0161】
単一のシミュレーション結果の改善
ビジュアル効果の生成は、実写及びコンピュータグラフィックス特徴の両方にとって、技術的な負荷が重くなる傾向がある。初期のヘアショットレビューから最も頻繁に行われる作業の1つは、動的シミュレーションを美的に優れた外観により近付けることである。これは、シミュレーションをより堅くし、付加的な又は不安定な動きを取り除くこと、又はシミュレーションをキーフレーミングされたゴールアニメーションにより良好に一致させることを伴うことがある。
【0162】
シミュレーションが、物理的にリアルな結果を生成しても、必ずしも所望の外観が生成されるわけではないことも多い。動的パラメータの微調整を試み、新たなシミュレーションを何度も実行することによって物理的に正確なソルバに頼るよりも、図24、図25、図26、図27及び図31に関して先に説明したブレンドノードの機能を用いて、静的又はゴールアニメーションを「合成によって組み入れる(composite-in)」方が容易であることが多い。上述したように、ブレンド係数を設定又はアニメーション化して、視覚的に満足できることが見出された動的シミュレーションの多くを保存することができる。
【0163】
複数のシミュレーション結果間のブレンディング
上述のように、シミュレーション結果が、「そのまま使える(out of the box)」完璧な所望の外観を提供することは希である。異なる入力パラメータの組を用いた場合、あるシミュレーションでは、最初の動きがよく、他のシミュレーションでは、最後の外観がよく、第3のシミュレーションでは、あるキーモーメントにおける表現力が高いといったことが生じる。これらの3つの全ての組合せを提供するパラメータの統一された組を見出すことは、不可能であることも多い。
【0164】
ここで、上述したようなヘアモーション合成器(HMC)の特徴を用いれば、図32に示すように、様々なシミュレーションキャッシュ間でブレンディングを行うカスケード接続グラフを容易にセットアップできる。
【0165】
図32に示すように、3個のヘアキャッシュ3200、3202、3204は、それぞれ、アニメーションノード3210、3212、3214を介して処理される。ヘアキャッシュ3200、3202は、更に、ブレンドノード3220を介して結合され、更に、アニメーションノード3222を経由して、更に、ブレンドノード3230において、ヘアキャッシュ3204とブレンドされる。
【0166】
このブレンドされた出力は、アニメーションノード3240によって処理され、ブレンドノード3245において静的ノード3248とブレンドされ、制御ノード3250において最終的な処理出力がレンダリングされる。なお、最も満足できる各キャッシュの様々な部分を拾い上げるために、ブレンド値をキーフレーミングすることができることは明らかである。
【0167】
また、ブレンディングは、非動的キャッシュファイルのために使用することもできる。短いファーを有するキャラクタの場合、「標準」と、ヘアをサーフェスに向かって密接に押し下げる「衝突」との2個の静的コーミングを用いることが実用的である場合がある。そして、例えば、手又は棒がファーを撫でる等、ショット内のファーに対する全てのインタラクションをシミュレートすることに代えて、単に、衝突オブジェクトに従うブレンドボールを用いて、ヘアをこれらのエリアにおいて予め衝突されたコーミング(pre-collided comb)に混合できる。
【0168】
ブレンディングの能力に加えて、ヘアモーション合成器(HMC)システムは、特に、ショットにおける問題を修正するために使用することができる。例えば、この問題は、悪い結果を引き起こす2つの状況、すなわち、静的コーミングされたゴールヘアがキャラクタの皮膚に入り込むアニメーション問題、及び例えば、誤った衝突等のマイナーなシミュレーションエラーの1つにおいて頻繁に発生する。これらの場合、ヘアの包括的な動きは完全に許容され、問題を修正するために必要なことは、上述したボリュームオフセットノード又はスーパーヘアノードの使用によって達成できる。これは、満足できるまでシミュレーションを繰り返し実行するより遙かに速い。
【0169】
最適化技術
図15に関して上述したように、本発明の実施の形態は、ヘア/ファーパイプライン1500の最適化モジュール1567によって実現できる最適化技術に関連する。具体的には、ここでは、ヘア/ファーパイプライン1500の実用性及びレンダリング速度を改善する3つの特定の最適化技術を開示する。
【0170】
第1の最適化技術は、画面空間メトリック(screen-space metric)に依存する最終的な毛嚢の間引き(culling)に対する高精度制御に関連する。ここでは、これをビュー依存画面空間最適化技術(view-dependent screen-space optimization technique)と呼ぶ。ここに説明する第2の最適化技術は、ヘアサブパッチに基づいて、可視の毛嚢を選択的に生成及びレンダリングするヘア/ファーパイプライン1500の能力に関連する。ここでは、これをヘアサブパッチ最適化技術と呼ぶ。更に、ヘア/ファーパイプライン1500によって実現される第3の最適化技術は、レンダリング時間を短縮し、ターンアラウンド時間を向上させ、作業を軽くするヘアキャッシングに関連する。ここでは、これをヘアキャッシング技術と呼ぶ。
【0171】
ビュー依存画面空間最適化技術
周知のとおり、完全にファーで覆われた生物を最大のヘア密度でレンダリングすることは、長い時間が掛かることが多く、大きな演算パワー及び大きなメモリ量を消費する。手動でヘア密度を調整して、ショット毎にヘア密度を最適化することも可能であるが、これは、退屈で間違いやすい処理である。
【0172】
本発明の一実施の形態では、ヘア/ファーパイプライン1500の最適化モジュール1567によって実現されるビュー依存画面空間最適化技術は、例えば、ヘア密度等のヘアパラメータの設定及びレンダリング時のヘア幅パラメータの両方に対して、高精度制御を行うことを可能にする、画面空間において測定された連続したメトリックを使用することによって実現される。更に、ユーザ定義関数曲線によって最適化パラメータの振る舞いをカスタマイズできる。
【0173】
一実施の形態においては、サーフェス定義モジュール1550を用いてサーフェスを定義してもよく、最適化モジュール1567を用いて、サーフェス上でヘアをレンダリングするか否かを決定してもよい。具体的には、最適化モジュール1567を用いて、ヘアのサイズメトリックを判定し、ヘアについて判定されたサイズメトリックに第1の密度曲線を適用して、密度乗数値を生成し、密度乗数値に基づいて、ヘアをレンダリングするか否かを決定してもよい。
【0174】
連続的なメトリック及び最適化パラメータのカスタマイズ可能性によって、この手法は、高い柔軟性を有し、予め定められている値の離散的な選択に関連する制約によって制限されることがない。本発明の一実施の形態においては、最適化パラメータは、後述するように、ヘア密度及びヘア幅パラメータに関連する。但し、ヘアに関連する他のタイプのパラメータを最適化してもよいことは明らかである。
【0175】
この実施の形態では、画面空間最適化は、画面上の個々のヘアのサイズ(画面空間サイズメトリック)及び画面上でヘアが移動する速度(画面空間スピードメトリック)に基づいて、レンダリングされたヘアの数を減少させる量の判定を扱う。
【0176】
両方のメトリックは、ヘア単位で算出され、ヘアをレンダリングするべきか否かを指定するユーザ定義関数曲線に戻される。カスタム関数曲線を用いることによって、ショット毎にキャラクタのヘアをカスタマイズでき、この結果、アーチストは、キャラクタからどのくらいのヘアを間引くかを決定する際に高い柔軟性を得る。
【0177】
図33について説明すると、図33は、ビュー依存画面空間最適化を実現する技術を示す図である。図33に示すように、ビュー依存画面空間最適化3300は、2つのステージに分割される。第1のステージは、メトリック生成ステージ3310であり、第2のステージは、メトリック−パラメータマッピングステージ3320である。詳しくは、メトリック生成ステージ3310には、各毛嚢3308が供給される。
【0178】
詳しくは、各毛嚢3308は、メトリック生成ステージ3310に供給され、図34に示すように、各ヘア3410の各毛嚢ルート位置3402は、メトリック生成ステージ3310において、正規化装置座標(normalized device coordinate:NDC)フレームに変換され、元のヘアを置換するプロキシヘア3405が生成される。
【0179】
より詳しくは、メトリック生成ステージ3310においては、各ヘアのNDCルート位置3402を用いて、レンダリング時にヘア毎のパラメータをどのように制御するかを決定するための追加的情報を提供する異なるメトリックを測定する。
【0180】
この実施の形態では、メトリック生成ステージ3310において、サイズメトリック3312及びスピードメトリック3314の2つの異なるメトリックを使用する。但し、他の様々な異なるメトリックを用いてもよいことは明らかである。画面空間サイズメトリック3312は、NDC空間におけるプロキシヘア3405の長さを算出するために使用される。プロキシヘア3405は、毛嚢ルート位置3402から真っ直ぐに伸びる単位長ヘアである。プロキシヘア3405は、最終的なヘアに比べて、演算的に扱いやすいため、元の最終的なヘア3410の代わりに使用される。これは、特に、ヘアが最終的に間引きされる場合、最終的なヘアに関連するヘア補間及びエフェクトオペレーションの演算負荷が大きいためである。他の理由として、カメラから等しい距離にあるが、長さが異なる全てのヘアを、同様に扱うべきであるという理由がある。こうすることによって、ヘアの長さのバリエーションが大きい外観が保存され、一方、このような場合に、プロキシヘアを無視すると、最適化が適用された後に、ヘアがないスポット又は異なる外観が生じる。
【0181】
画面空間スピードメトリック3314は、NDC空間において、毛嚢のルートが現フレームから次のフレームに移動する距離を計算する。図35について簡潔に説明すると、図35は、NDC空間において、時間tにおける第1のフレーム3510から時間t+1における第2のフレーム3520にかけて、プロキシヘア3506のルート3502が移動する距離を示す図である。このメトリックを採用したのは、ブレが大きなモーションブラーオブジェクトでは、同じ外観を達成するために、完全なヘア密度を必要しないことが多いためである。
【0182】
図33に戻ると、メトリック生成ステージ3310において、サイズメトリック3312及びスピードメトリック3314が判定された後、これらの値は、メトリック−パラメータマッピングステージ3320に渡される。各パラメータについて、オペレータは、各メトリック値に対応する関数曲線を適用する。この具体例では、密度曲線3324、3326を、サイズメトリック3312及びスピードメトリック3314にそれぞれ適用し(例えば、密度対サイズ及びスピード)、及び幅曲線3330、3332を、サイズメトリック3312スピードメトリック3314にそれぞれ適用する(例えば、幅対サイズ及びスピード)。そして、それぞれの結果を乗算し、最終的なパラメータ乗数値を導出する。この具体例では、レンダリング機能3360に渡すことができる密度乗数値3340及び幅乗数値3350を判定する。
【0183】
なお、密度乗数の場合、ユーザ定義関数曲線3324、3326では、メトリック値のマッピングが[0,1]の範囲に制限される。そして、これに対応して同様に[0,1]の間で変化する、最終的な結果である密度乗数値3340を用いて、ブロック3360において、最終的なヘアをレンダリングするか否かを決定する。一具体例においては、これは、範囲[0,1]において、乱数を生成することによって実現され、この数が最終的な結果を下回る場合、ヘアが描画される。この他の場合、ヘアは間引かれる。
【0184】
幅乗数の場合、ユーザ定義関数曲線3330、3332は、負ではない何らかの実数に制限され、したがって、最終的な結果も、負ではない実数になる。この最終的な結果である幅乗数3350は、現在のヘアの幅パラメータに乗算され、この結果がレンダリングブロック3360に渡される。
【0185】
なお、ヘア数は、既に固定でないので、オブジェクト(例えば、ヘアを有するキャラクタ)が前景から背景に移動すると、ポッピングが生じることがある。このような挙動を抑制するために、実証的検査を行った結果、これらの最適化技術に関連して毛嚢をフェードアウトさせることによって、このエフェクトが最小化されることがわかった。これを考慮し、まず、各毛嚢を可視性判定を通る第1のパスに通過させ、不可視であると判定された場合、ヘアの不透明度値を直線的に減少させることによって、ヘアの不透明度を低減してもよい。
【0186】
なお、上で定義された技術を利用することにより、密度乗数値によって、生成され又はレンダリングされるヘアの数を削減でき、及び幅乗数値によって、残りのヘアの幅を増加させることができる。このように、これらの最適化技術は、スピードメトリック及びサイズメトリック、並びに4つの関数曲線を使用することによって、ヘアを間引くか、及びヘアの幅をどれくらいスケーリングするかを判定する。
【0187】
具体的には、完全にファーで覆われた生物についてこれらの技術を用いることによって、必要な処理及びメモリを大幅に削減することができる。これは、生物が画面上でクローズアップされていない場合、又は画面内で高速に移動している場合、これらの技術は、大きな視覚的変化を伴うことなく、レンダリングするヘアを、元々設計されている生物の全てのヘアより少なくし、レンダリング時間及びメモリ要求を著しく改善できるためである。
【0188】
図36について説明すると、図36は、様々なフレームにおいて、画面空間サイズメトリックを用いて、ヘア数、時間及びメモリに関する最適化されていない値と、ヘア数、時間及びメモリに関する最適化された値とを並べて比較するテーブル3600を示している。レンダリング時間(「時間」)は、分及び秒で示しており、メモリ使用量(「メモリ」)は、メガバイトで示している。テーブル3600に示すこのテストでは、ファーで覆われたキャラクタが、フレーム10におけるクローズアップ位置から、フレーム100におけるカメラから遠ざかる位置まで移動した。実際のヘア数は、フレーム10における元のヘア数の78%からフレーム100における1%に変化するので、この具体例で用いられた関数曲線は、急峻(aggressive)である。テーブル3600に示すように、レンダリング時間及びメモリ使用量の両方が、かなり向上している。
【0189】
なお、ビュー依存画面空間最適化技術は、キャラクタが如何なる距離でもよく見え、メモリ及びレンダリング時間をできるだけ大幅に削減できるように、最適化を微調整するために、関数曲線を容易に調整できるという意味で柔軟である。
【0190】
図37について説明すると、図37は、画面空間スピード法を用いる他の比較を示す(テーブル3600と同様の)テーブル3700である。この具体例では、キャラクタは、画面内を非常に高速に移動し、モーションブラーを有するようにレンダリングされる。ここでは、画面空間ベロシティが非常に高いフレームを選択した。ここでは、キャラクタのためのヘア数は、19%にまで減少した。この技術は、高速に移動するショットについても、テーブル3700に示すように、レンダリング時間及びメモリ使用量の両方の劇的な削減を実現する。
【0191】
更に、サイズメトリック及びスピードメトリックの両方をお互いに連携して使用した場合についてもテストを行った。詳しくは、図38について説明すると、図38は、最適化されていない及び最適化されたヘア数、時間及びメモリ値を示す(他のテーブル3600、3700と同様の)テーブル3800を示している。この具体例では、キャラクタは、フレーム101における遠い背景から、フレーム270におけるより近い近景に移動し、モーションブラーを有するようにレンダリングされている。テーブル3800の値に示すように、両方のメトリックは、互いに良好に作用し、レンダリング時間及びメモリ使用量を削減し、視覚的品質は、犠牲にされていない。
【0192】
ヘアサブパッチ最適化
ヘア/ファーパイプライン1500の最適化モジュール1567が実現する他の最適化技術は、ヘアサブパッチ最適化に関連する。包括的に言えば、この最適化は、全てのヘアがいつもカメラから見えるわけではないという事実に基づいており、大量のヘアをレンダリングする場合に有用である。全てのヘアを生成し、ディスプレイモジュール1575がレンダリングの間に可視性の間引きを実行することに代えて、ヘアパイプライン1500は、最適化モジュール1567を用いて、可視ではないプリミティブを最初から生成しないことによってレンダリング時間を削減できる。具体的には、これらの技術の側面は、ディスプレイモジュール1575に連携する最適化モジュール1567によって実現できる。
【0193】
一実施の形態においては、サーフェス定義モジュール1550を用いて、サーフェスを定義してもよく、最適化モジュール1567を用いて、一組のヘアのためのバウンディングボックス(bounding box)を作成し、バウンディングボックスが可視であるか否かを判定し、バウンディングボックスが可視である場合、可視のバウンディングボックスに関連するヘアをサーフェス上でレンダリングしてもよい。
【0194】
包括的に言えば、バウンディングボックスは、レンダリングされるヘアの初期のセットに対して作成し、そして、レンダリングの前に可視性についてテストしてもよい。バウンディングボックスが可視である場合、ヘアプリミティブを4つのサブグループに空間的に分割し、各サブグループについて新たなバウンディングボックスを作成し、各サブグループの可視性を再び検査する。バウンディングボックスが可視ではないと判定された場合、そのヘアグループに対しては、更なる細分化は行わず、レンダリングも行わない。全ての可視のヘアグループの細分化を所定の回数繰り返した後、各グループのヘアプリミティブをディスプレイモジュール1575に供給し、その時点でレンダリングを行う。
【0195】
図39について説明すると、図39は、ヘアサブパッチ最適化を実現する処理3900を示すフローチャートである。図39に示すように、ブロック3910において、ヘアの初期のセットについて、バウンディングボックスを作成する。次に、ブロック3915において、ヘアの初期のセットのためのバウンディングボックスが可視であるか否かを判定する。可視ではない場合、処理3900は終了する(ブロック3920)。サブグループは、例えば、空間的に略々等しい関係に分割してもよい。一方、ヘアの初期のセットのためのバウンディングボックス又はバウンディングボックスの一部が可視である場合、バウンディングボックスをサブグループに空間的に分割する(ブロック3925)。サブグループは、例えば、空間的に略々等しい関係に分割してもよい。更に、各サブグループについてバウンディングボックスを作成する(ブロック3930)。
【0196】
また、図40は、ヘアサブパッチ最適化の簡単な例を示す図である。図40では、第1のフレーム4002は、フレームの右側にある、ヘアの初期のセットのためのバウンディングボックス4010と共に示されている。ここに示すように、ヘアの初期のセットのためのバウンディングボックス4010は、可視であり、フレーム4004に示すように、バウンディングボックス4010は、サブグループ又はサブグループバウンディングボックス4012に空間的に分割される。
【0197】
図39の処理3900のブロック3935では、これらのサブグループバウンディングボックスが可視であるか否かを判定する。可視ではない場合、ブロック3940において、処理は終了する。一方、これらのサブグループバウンディングボックスが可視である場合、細分化の回数が所定の数を満たしているかを判定する(ブロック3945)。所定の数を満たしていない場合、サブグループを更に分割し、所定の回数、繰り返し細分化する。所定数が満たされると、ブロック3950において、サブグループバウンディングボックスのヘアプリミティブをレンダリングする。
【0198】
具体的には、図40において、第3のフレーム4006と共に示すように、左側の2つのサブグループバウンディングボックス4014は、可視であると判定され(ハッチングによって特定している。)、右側の2つのボックスは、可視ではないと判定されている。したがって、左側の2つのサブグループバウンディングボックス4014に関連するヘアは、レンダリングのために供給され、右側の2つのサブグループバウンディングボックス4014に関連するヘアは、除外される。なお、この処理は、所定の回数、繰り返し実行することができる。
【0199】
更に、ヘア/ファーパイプライン1500の柔軟性のために、ジオメトリインスタンス化の実施の形態に関して先に説明したように、環境モデラは、ヘアサブパッチ最適化の側面を利用して、草で覆われた大きな景色等の他のコンピュータグラフィックス用途にこれを拡張することができる。ショットからショットへのヘアサブパッチ最適化の実施の形態を利用することによって、全体の景色の小さい部分だけをレンダリングすれば済むことがあり、この結果、処理及びメモリ使用量を大幅に削減することができる。なお、先に説明したジオメトリインスタンス化の実施の形態を利用することによって、ヘアに代えて、関連するヘアパラメータ(ベンド、回転、風等)及びヘアに関連する軸変形パラメータの有無にかかわらず、ユーザが選択し又はランダムに生成された如何なるジオメトリオブジェクトもレンダリングできる。
【0200】
例えば、景色を定義するために、景色の全体を定義するパッチを取り囲む単一のバウンディングボックスによって処理を開始できる。そして、上述のように、このパッチを、より小さいバウンディングボックスによって、4個の重ならない象限に細分化してもよい。間引かれるバウンディングボックスについては、更なる処理は行わず、処理が続けられるバウンディングボックスについては、ユーザが定義した停止基準に到達するまで、更なる細分化を行う。
【0201】
また、例えば、サブパッチディメンションのパラメトリック長及びパラメトリックテクスチャ空間に関連する細分化の深さ及びパラメータの限界等の更なる停止基準を用いてもよい。
【0202】
図39及び図40に関連して先に説明したヘアサブパッチ最適化技術を利用して、景色に適用することによって、草で覆われた単一の大きな景色を、2500万のヘアによってモデル化し、ここで、ヘアを、草及び/又は木によって、幾何学的にインスタンス化した。但し、図41のフレームに示すように、ヘアサブパッチ最適化技術を利用して、実際に生成及びレンダリングしたのは、数百の草の葉だけである。この最適化がなければ、全ての草をレンダリングするために、遙かに多くの処理及びメモリ使用量が必要であった筈である。
【0203】
ヘアキャッシング最適化
ライティングフェーズ(lighting phase)では、ライティングの担当者は、通常、アニメーション部門及びレイアウト部門の両方が承認したショットに対して作業を行う。ここで、残されている作業は、通常、光の数及び位置を決定し、所望の外観を達成するために必要なタイプの照明条件を生成することである。
【0204】
特に、ライティングフェーズでは、全てのヘアパラメータを含むシーンの全ての要素がファイナライズされている。このために、ヘアジオメトリ及びヘアパラメータをキャッシュアウトし、再使用して、処理及びメモリ使用量を大幅に削減することが可能である。一実施の形態においては、シェーディング及びバックライティングモジュール1570と連携する最適化モジュール1567を用いて、ここに説明するヘアキャッシングの実施の形態に基づく技術を実現することができる。
【0205】
これを達成するために、キャッシュヘア状態ファイルを作成及び/又は検証してもよく、後にレンダリングされるヘアパラメータの状態を保存することができる。例えば、これらのヘアパラメータは、キャッシュヘア状態ファイル内にヘアパラメータの任意の順序のリストとして保存してもよい。
【0206】
一実施の形態においては、ライティングモジュール1570を用いて、ショットのためのライティングフェーズにおいてライティング効果を生成してもよく、最適化モジュール1567を用いて、ヘアパラメータを含むキャッシュヘア状態ファイルが存在しているかを判定し、キャッシュヘア状態ファイルがショット内で用いられるものと一致するヘアパラメータを含んでいるかを判定し、これに該当する場合、ライティングフェーズにおいて、キャッシュヘア状態ファイルからのヘアパラメータ値を使用するようにしてもよい。
【0207】
図42は、ヘア状態パラメータ4202、4204、4206等のリストを含むキャッシュヘア状態ファイル4200の具体例を示している。キャッシュヘア状態ファイル4200が存在していない場合、又はキャッシュヘア状態ファイル4200が現在のレンダリングの状態とは異なるパラメータ値を含んでいる場合、キャッシュヘア状態ファイル4200に(すなわち、ヘア状態パラメータ4202、4204、4206等として)値の新たな組を保存してもよい。そして、この新たな又は更新されたキャッシュヘア状態ファイル4200を使用できる。一方、キャッシュヘア状態ファイル4200が、現在のレンダリングの状態に既に一致する場合、元のキャッシュヘア状態ファイル4200を使用できる。
【0208】
図43について説明すると、図43は、ヘアキャッシングを実現するための処理4300を示すフローチャートである。ブロック4302では、キャッシュヘア状態ファイル4200が存在しているかを判定する。存在しない場合、新たなキャッシュヘア状態ファイル4200を作成する(ブロック4304)。そしてブロック4306において、新たなキャッシュヘア状態ファイル4200を保存する。
【0209】
一方、キャッシュ状態ファイルが存在している場合は、ブロック4310において、ヘアキャッシュ状態ファイル4200がレンダリングに使用されるパラメータと同じパラメータを含んでいるか否かを判定する。これに該当する場合、処理は、後に説明するブロック4320に移行する。この他の場合、ブロック4306において、キャッシュヘア状態ファイル4200に異なるヘア状態パラメータを保存する。
【0210】
新たなキャッシュヘア状態ファイル、同じパラメータを有するキャッシュヘア状態ファイル及び異なるパラメータを有するキャッシュヘア状態ファイルの何れの場合においても、処理は、ブロック4320に移行し、ここで、適切なファイルキーが存在しているか否かを判定する。各レンダリング及びキャッシュ検証処理は、キャッシュ検証、キャッシュ生成及びキャッシュレンダリングの前に、排他的ファイルロックによってロックされる。したがって、キャッシュヘア状態ファイルをライティングフェーズで用いるためには、適切なキーが存在している必要がある。これは、ライタ(lighter)は、ショットに対して作業するが、最終的なレンダリングされたフレームを生成するために複数の処理が用いられることが多いためである。
【0211】
適切なファイルキーが存在しない場合、処理は、ブロック4340で終了し、キャッシュヘア状態ファイル4200は、削除される。一方、キャッシュヘア状態ファイル4200が適切にアンロックされた場合、ブロック4350において、ライティングフェーズでキャッシュファイルを使用できる。
【0212】
一実施の形態においては、物理的なキャッシュヘア状態ファイルをRenderManファイルとして表現してもよい。これは、ヘアジオメトリを生成するために必要なデータポイント及びパラメータを単にエンコードするものであるので、一般性が失われることはない。更に、空間削減技術として、圧縮されたRenderManファイルを用いて、キャッシュファイルを表現してもよい。
【0213】
このようにして、上述した処理4300は、キャッシュヘア状態ファイル4200が有効であるか無効であるかを判定する。キャッシュヘア状態ファイルは、通常、存在していない場合、又はキャッシュファイル内に見出されるプリミティブが、レンダリングされるヘアプリミティブに一致しない場合に、無効であると判定される。特に、後者の条件を判定するためには、各キャッシュヘア状態ファイルは、先にそのキャッシュヘア状態ファイルを生成するために用いられたヘアレンダリング設定を含む必要がある場合がある。
【0214】
したがって、キャッシュヘア状態ファイルは、レンダリング設定が一致していれば、有効であるとみなされる。一方、キャッシュヘア状態ファイルが無効であると判定された場合、正しいヘアパラメータが供給され、上述のように、キャッシュヘア状態ファイルとして保存される。
【0215】
通常、最初のパスにおいては、キャッシュは、無効であり、したがって、生成する必要がある(キャッシュ生成及び使用)。他のプロセッサがキャッシュを生成した後は、キャッシュを即座に使用できるシリアル化のために削減が実現される。これだけでも、レンダリング時間は、約69%削減される。更なる削減は、異なる処理が同じキャッシュファイルを使用する場合に実現されることがある。なお、ライタは、通常、多くの回数、再レンダリングを繰り返すため、実際の削減時間は、多くの場合、乗算的に増加する。
【0216】
図44について説明すると、図44は、ライタが、完全にファーで覆われたキャラクタをレンダリングするために、上述の技術を用いることによって達成できる時間の削減を示すテーブルを示している。図44には、キャッシュなしのレンダリングの時間、キャッシュを生成及び使用した場合のレンダリングの時間、既に存在しているキャッシュによるレンダリングの時間を示している。これからわかるように、大幅な時間削減が実現されている。
【0217】
多重インスタンス化可能なエフェクト
図45について説明すると、図45は、エフェクトモジュール1565を含む上述したヘア/ファーパイプライン1500の実施の形態を示すブロック図であり、エフェクトモジュール1565は、更に、並べ替え可能(re-orderable)で、多重インスタンス化可能(multiple instantiable)なエフェクトを実現するエフェクトパイプライン4510を含む。
【0218】
一実施の形態においては、ヘア/ファーパイプライン1500のサーフェス定義モジュール1550を用いて、サーフェスを定義してもよい。補間モジュール1560を用いて、少なくとも1つの制御ヘアに基づいて、サーフェス上の少なくとも1つの最終的なヘアを補間してもよい。更に、エフェクトモジュール1565は、最終的なヘアに予め定義された順序で複数のエフェクトを適用し、変更された最終的なヘアを生成するために使用されるエフェクトパイプライン4510を含んでいてもよく、変更された最終的なヘアは、ディスプレイモジュール1575によって最終的にレンダリングしてもよい。
【0219】
先に詳細に説明したように、ヘア/ファーパイプライン1500は、まず、サーフェス定義モジュール1550において、入力に基づいて、サーフェスを定義する。更に、上述のように、制御ヘア調整モジュール1555は、クランピング、ブレイキング等の機能及び上述した他の機能の提供を補助するために、制御ヘアを定義及び調整してもよい。ヘア/ファーパイプライン1500において、異なるヘアアニメーションを編集及び結合するために、ヘアモーション合成器モジュール1557を設けてもよい。補間モジュール1560は、上述のように、制御ヘアに基づいて、サーフェスに亘って、最終的なヘアを補間するために使用してもよい。更に、上述のように、エフェクトモジュール1565は、例えば、クランピング、ブレイキング、ウェーブエフェクト、ウィーブエフェクト、風の影響等の様々なエフェクトを最終的なヘア及びファーに提供できる。
【0220】
更に、本発明の一実施の形態では、エフェクトモジュール1565は、エフェクトファクトリ(effects factory)4505及びエフェクトパイプライン4510を含んでいてもよい。後に更に詳細に説明するように、エフェクトファクトリ4505及びエフェクトパイプライン4510を使用することによって、上述した様々なエフェクト(例えば、クランピング、ブレイキング、ウェーブ、ウィーブ、風等)を任意の順序で適用することが可能になり、及び同じエフェクトを異なるパラメータで複数回適用することが可能になる。上述したエフェクトのそれぞれは、通常、あるパラメータ値のエフェクトをヘアに適用するための所定のエフェクトに関連するパラメータ(例えば、ヘアが制御ヘアにクランピングされる度合い、ヘアに適用されるウィーブの量等)を含む。この手法によって、忠実度が高い形式で、リアルなヘスタイルを適切にモデル化できる。
【0221】
エフェクトパイプライン4510を使用することによって、ユーザは、ユーザ入力を介して、補間モジュール1560から受け取った最終的なヘアにどのようなタイプのエフェクトを適用するか、及びこれらのエフェクトをどのような順序で適用するかを指定できる。例えば、これは、この情報をカプセル化する拡張可能マークアップ言語(Extensible Mark-Up Language:XML)ファイル又は他の適切なタイプのファイルを生成するユーザインタフェースを利用することによって達成できる。そして、このXMLファイルは、エフェクトファクトリ4505に渡される。
【0222】
そして、エフェクトファクトリ4505は、ユーザが指定した全てのエフェクト(例えば、クランピング、ブレイキング、ウェーブ、ウィーブ、風等)を生成(manufacture)し、各エフェクトのためにユーザが選択した様々なパラメータ値を適用し、ユーザが選択したエフェクトの順序を適用し、エフェクトパイプライン4510に、ユーザが定義した複数の異なるエフェクトをユーザが定義した順序で並べる。また、ユーザは、異なるパラメータ値を有する同じエフェクトを複数回適用することを選択してもよい。
【0223】
図46は、本発明の一実施の形態に基づき、並べ替え可能で及び多重インスタンス化可能なエフェクトを実現する処理4600を示すフローチャートであり、処理4600は、エフェクトモジュール1565によって実現してもよい。
【0224】
ブロック4605において、ユーザは、ユーザ入力を介して、最終的なヘアに適用するエフェクトのタイプを定義する。次に、ユーザは、ユーザ入力を介して、最終的なヘアにエフェクトを適用する順序を定義する(ブロック4610)。ユーザは、複数の異なるエフェクト、各エフェクトについて同じ又は異なるパラメータ値を有する複数の同様のエフェクト、及びこれらの組合せを、ユーザが希望する任意の順序で選択することができる。
【0225】
具体的には、上述したクランピング、ブレイキング、ウェーブ、ウィーブ及び風エフェクト、上述した他のエフェクト、並びに当業者に周知の他のタイプのエフェクトを使用することができる。更に、これを達成するために、上述のように、ユーザインタフェースを使用してユーザ入力を受け取ってもよく、ユーザインタフェースは、処理のためにこの情報をカプセル化するXMLファイル又は他の適切なタイプのファイルを生成してもよい。
【0226】
この情報に基づいて、エフェクトモジュール1565のエフェクトファクトリ4505は、ユーザが選択した順序で、ユーザが指定したタイプのエフェクトを生成し(ブロック4615)、所望のエフェクトをエフェクトパイプライン4510に並べる(ブロック4620)。そして、最終的なヘアに所望のエフェクトが適用され(ブロック4625)、この結果、最終的なヘアは、変更された最終的なヘアに変更され、最適化モジュール1567に渡され(ブロック4630)、ヘアファー/パイプライン1500のシェーディング及びシャドウイングモジュール1570等から、最終的にディスプレイモジュール1575に渡され、変更された最終的なヘアがレンダリングされる(ブロック4640)。なお、ヘア/ファーパイプラインにおいては、更なる又は異なるモジュールを使用してもよい。
【0227】
図47は、本発明の一実施の形態に基づき、ヘア/ファーパイプラインのエフェクトモジュールのエフェクトパイプライン4510によって最終的なヘアに適用される、並べ替え可能で、多重インスタンス化可能なエフェクトの具体例のブロック図を示している。
【0228】
図47に示すように、最終的なヘア4705は、補間モジュールから、エフェクトモジュール、詳しくは、エフェクトモジュールのエフェクトパイプライン4510に供給される。ユーザインタフェースからのエフェクトのためのパラメータ値を含むユーザが定義したエフェクト及び順序情報は、エフェクトファクトリ4505に渡される。この情報は、XMLファイルとして処理及び保存してもよい。エフェクトファクトリ4505は、複数の異なるタイプのエフェクトの全てを生成し、ユーザが指定した順序で順序付けし、エフェクトパイプライン4510にエフェクトを並べる。
【0229】
この具体例では、第1のエフェクト(例えば、ウェーブ)4722は、第2のエフェクト(例えば、クランプ)4724に結合され、間に入る様々なエフェクトを経て、最終的に最後のエフェクト(例えば、ウィーブ)4726に結合されている。変更された最終的なヘア4730を生成するために、これらのエフェクトの全てが最終的なヘア4705に適用される。なお、上述したウェーブ、クランプ及びウィーブエフェクトは、例示的に示しているに過ぎない。
【0230】
このようにして、エフェクトパイプライン4510には、ユーザが要求した所望のエフェクトの全てが並べられ、補間モジュールから供給される全ての最終的な補間されたヘア4705は、エフェクトパイプライン4510によって処理され、変更された最終的なヘア4730が生成される。エフェクトパイプライン4510を介して最終的なヘアが処理されると、変更された最終的なヘア4730は、最適化モジュールに渡され、シェーディング及びシャドウイングモジュールを経て、最終的に、ディスプレイモジュールに渡され、レンダリングされる。
【0231】
インスタンス化ヘアデータベース
図48について説明すると、図48は、インスタンス化モジュール4802及びインスタンス化ヘアデータベース(instanced hair database)4804を更に含む、本発明の一実施の形態に基づくヘア/ファーパイプライン1500を示すブロック図である。インスタンス化ヘアデータベース4804に関連してインスタンス化モジュール4802を使用することによって、多数のヘア又は他のオブジェクトをインスタンス化することができる。
【0232】
一実施の形態においては、ヘア/ファーパイプライン1500のサーフェス定義モジュール1550を用いて、サーフェスを定義してもよい。インスタンス化モジュール4802は、ヘアをインスタンス化するために用いられる。インスタンス化ヘアデータベース4804は、インスタンス化モジュール4802に接続され、ヘアデータを保存するために用いられる。後述するように、インスタンス化モジュール4802は、インスタンス化ヘアデータベース4804からヘアデータを読み出し、多数のヘアを効果的にインスタンス化できるようにする。ディスプレイモジュール1575は、(補間、エフェクト、最適化等の後に)サーフェス上にインスタンス化されたヘアを表示するために使用される。
【0233】
グラフィックスレンダリングに使用される典型的なコンピュータは、レンダリングのために最終的なヘアを表現する際に使用される限られた容量のランダムアクセスメモリ(random access memory:RAM)を有するのみであり、したがって、レンダリングのためにインスタンス化できるRAMからのヘアの数は、かなり限定的である。ここで、ヘア情報を保存するインスタンス化ヘアデータベース4804と連携させてインスタンス化モジュール4802を使用することによって、膨大な数のヘア及び草レンダリング等のように他のアプリケーションの生成要求が、容易に満たされることが見出された。ヘア情報を保存するインスタンス化ヘアデータベース4804と連携させてインスタンス化モジュール4802を使用することによって、数百万(及びこれ以上)のヘア数を含む大量のヘアの生成のためのスケーラビリティが達成される。インスタンス化ヘアデータベースは、例えば、ハードディスクドライブ、磁気ディスクドライブ、ネットワークドライブ、光ドライブ、又は比較的大容量のストレージを実現する他の何らかの種類のストレージ装置等、比較的大容量のストレージが可能なタイプの記憶装置に保存できる。
【0234】
ヘアは、サーフェス定義モジュール1550、制御ヘア定義及び調整モジュール1555等を含む上述したヘア/ファーパイプライン1500に基づいて生成される。パイプラインにおいては、インスタンス化モジュール4802は、インスタンス化ヘアデータベース4804に接続され、補間モジュール1560の前に配置される。インスタンス化モジュール4802を用いて、大量のヘアデータを保存するインスタンス化ヘアデータベース4804から、インスタンス化のために比較的大量のヘアデータを読み出すことができる。この手法により、インスタンス化モジュール4802は、膨大な量のヘアを効果的且つ効率的に生成することができる。
【0235】
補間モジュール1560の前にインスタンス化モジュール4802及びインスタンス化ヘアデータベース4804を配置することによって、補間及びエフェクトが適用される前に、静的なヘア情報、例えば、毛嚢位置、制御ヘア重み及びクランプメンバシップをインスタンス化ヘアデータベース4804に保存できる。こうすることによって、標準のメモリ内(RAMベース)インタンス化を含む異なる表現ストラテジを単独で用いることもでき、インスタンス化ヘアデータベース4804と連携して用いることもできる。これに代えて、インスタンス化ヘアデータベース4804を単独で使用してもよい。実際には、インスタンス化モジュール4802のインスタンス化ヘアデータベース4804は、インスタンス化モジュール4802を介する標準のメモリ内(RAMベース)インスタンス化へのプロキシとして用いてもよい。
【0236】
なお、インスタンス化ヘアデータベース4804を用いることによって、非常に大きいデータ集合を直接的に扱う組込みデータベース技術を、ヘアのインスタンス化及び生成に活用することができる。すなわち、インスタンス化ヘアデータベース4804と連携させてインスタンス化モジュール4802を使用することによって、最終的なヘアを表現するための高度にスケーラブルな技術が提供され、これにより、膨大な数のヘアを効果的且つ効率的にインスタンス化できる。インスタンス化ヘアデータベース4804は、実際に、大量の最終的なヘアをインスタンス化するための繰返しパターンに対して非常に有効である。
【0237】
図49は、標準のRAMメモリ(すなわち、メモリ内インスタンス化)4922及びインスタンス化ヘアデータベース4804の一方又は両方について、インスタンス化モジュール4802によって実現できる繰返しパターン4920を示すブロック図である。多数のヘアが必要とされない場合、繰返しパターン4920に基づくメモリ内インスタンス化4922は、メモリ(例えば、RAM)から最終的なヘアをインスタンス化するために使用できる。一方、より大きいヘアインスタンス化タスク(すなわち、大きいデータ集合を必要とする。)では、データは、インスタンス化ヘアデータベース4804に保存できる。インスタンス化ヘアデータベース内のユーザ入力、例えば、定義されたローカルエリア、密度マップ、ヘアの総合密度等に基づいて、サーフェス上に多数のヘア(又は草、雑草、木等の他の形状)をインスタンス化するために、インスタンス化ヘアデータベース4804に繰返しパターン4920を適用してもよい。なお、タスクに応じて、RAMメモリ4922を用いてもよく、インスタンス化ヘアデータベース4804を用いてもよく、これらの両方を用いてもよい。
【0238】
後述するように、ヘア位置、制御ヘア重み及びクランプメンバシップを含むヘア属性は、繰り返しパターンに基づいて、インスタンス化ヘアデータベース4804から容易に検索及び収集可能である。これにより、高度なカスタマイズが可能になる。例えば、ある領域内の全てのヘア又は全てのクランプ中心ヘア等について、インスタンス化ヘアデータベース4804にクエリを発することは容易である。
【0239】
図50について説明すると、図50は、本発明の一実施の形態に基づき、インスタンス化ヘアデータベース4804に保存できる情報のタイプの具体例を示している。一具体例では、インスタンス化ヘアデータベース4804には、ヘア1〜Nのデータを格納することができる。各ヘア1〜N(行によって表されている)について、データベースの列形式で、毛嚢位置5010、制御ヘア重みパラメータ1〜Nの変数の値(5020、5022)、及び所定のヘアのためのクランプメンバシップ5030等の情報を格納することができる。クランプメンバシップ5030に関しては、これは、クランプメンバヘアについては、クランプ中心ヘアの行インデクスであってもよく、非クランプメンバヘアについては、ヌル値であってもよく、クランプ中心ヘアについては、負の値であってもよい。
【0240】
最終的なヘアのための上述した種類のデータが保存された上述したインスタンス化ヘアデータベース4804を使用することによって、インスタンス化ヘアデータベース4804は、膨大な数のヘアを効果的且つ効率的にインスタンス化することができる。更に、インスタンス化ヘアデータベース4804は、入力基準に基づいて、多数の最終的なヘアを検索してインスタンス化するための繰返しパターンに非常に有効である。インスタンス化ヘアデータベースを使用することにより、標準のメモリ内のRAMベースのインスタンス化とは異なり、多数のヘアを効果的に取り扱い、インスタンス化できる。
【0241】
この後、補間モジュール1560、エフェクトモジュール1565等を介して、動的効果を適用でき、最終的に、ヘア(又は、上述のように、他の形状、例えば、草、雑草、木等)をヘア/ファーパイプライン1500のディスプレイモジュール1575に表示できる。
【0242】
ここでは、多数の具体的な詳細事項について言及している。しかしながら、本発明の実施の形態は、これらの具体的な詳細事項なしで実施できることは明らかである。他の例として、本明細書の要点を不明瞭にしないために、よく知られている回路、構造、ソフトウェア処理及び技術については、説明していない。
【0243】
本発明の様々な実施の形態の部品は、ハードウェア、ソフトウェア、ファームウェア、マイクロコード又はこれらの任意の組合せによって実現してもよい。ソフトウェア、ファームウェア又はマイクロコードで実現する場合、本発明の実施の形態の要素は、必要なタスクを実行するためのプログラムコード又はコードセグメントである。コードセグメントは、手続き、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、若しくは命令、データ構造又はプログラムステートメントの任意の組合せを表現してもよい。コードセグメントは、情報、データ、引数、パラメータ又はメモリコンテンツを渡し及び/又は受け取ることによって、他のコードセグメント又はハードウェア回路に接続してもよい。情報、引数、パラメータ、データ等は、メモリシェアリング、メッセージ転送、トークン転送、ネットワーク送信等を含む適切な如何なる手段によって、渡し、送り又は送信してもよい。
【0244】
プログラム又はコードセグメントは、プロセッサが読取可能な媒体に保存してもよく、又は、伝送媒体を介して、搬送波内に表現されたコンピュータデータ信号又は搬送波によって変調された信号を伝送してもよい。「プロセッサが読取可能又はアクセス可能な媒体」又は「マシンが読取可能又はアクセス可能な媒体」には、情報を保存し、送信し又は転送することができるあらゆる媒体が含まれる。マシンがアクセス可能な媒体の具体例は、電子回路、半導体記憶装置、読出専用メモリ(ROM)、フラッシュメモリ、消去可能ROM(EROM)、フロッピー(登録商標)ディスク、コンパクトディスク(CD−ROM)、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンク等を含む。コンピュータデータ信号には、例えば、電子ネットワークチャンネル、光ファイバ、空気、電磁波、RFリンク等の伝送媒体を介して伝播できるあらゆる信号が含まれる。コードセグメントは、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードしてもよい。マシンがアクセス可能な媒体は、工業製品内に組み込んでもよい。マシンがアクセス可能な媒体は、マシンによってアクセスされると、ここに説明するオペレーションをマシンに実行させるデータを含むことができる。ここで用いる用語「データ」は、マシンが読み取ることができるように符号化されたあらゆる種類の情報を含む。したがって、データは、プログラム、コード、データ、ファイル等を含む。
【0245】
特に、本発明の実施の形態の全部又は一部は、ソフトウェアによって実現してもよい。ソフトウェアは、互いに接続された複数のモジュールを有することができる。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタ等を受け取り、及び/又は結果、更新された変数、ポインタ等を生成又は渡すために、他のモジュールに接続される。また、ソフトウェアモジュールは、ソフトウェアドライバであってもよく、又はプラットフォーム上で実行されているオペレーティングシステムとインタラクトするインタフェースであってもよい。また、ソフトウェアモジュールは、ハードウェアデバイスを構成し、セットアップし、初期設定し、又はハードウェアデバイスに/からデータを送信及び受信するハードウェアドライバであってもよい。
【0246】
幾つかの実施の形態に関連して本発明について説明したが、本発明は、説明した実施の形態に制限されず、添付の特許請求の範囲の精神及び範囲から逸脱することなく、変更及び変形して実施できることは、当業者にとって明らかである。したがって、この説明は、限定的なものではなく、例示的なものであるとみなされる。

【特許請求の範囲】
【請求項1】
ヘアを生成するためのヘアパイプラインにおいて、
サーフェスを定義するサーフェス定義モジュールと、
前記サーフェス上でヘアをレンダリングするか否かを決定する最適化モジュールとを備え、前記最適化モジュールは、
ヘアのサイズメトリックを判定し、
前記ヘアについて判定されたサイズメトリックに第1の密度曲線を適用し、密度乗数値を生成し、
前記密度乗数値に基づいて、ヘアをレンダリングするか否かを決定するヘアパイプライン。
【請求項2】
前記密度乗数値は、前記ヘアをレンダリングするか否かを決定するために、更に乱数と比較される請求項1記載のヘアパイプライン。
【請求項3】
前記ヘアのサイズメトリックの判定は、正規化装置座標(NDC)空間におけるヘアの長さの算出を含む請求項1記載のヘアパイプライン。
【請求項4】
前記ヘアのサイズメトリックに第1の幅曲線を適用し、前記ヘアの幅を調整する請求項1記載のヘアパイプライン。
【請求項5】
前記最適化モジュールは、第1のフレームから第2のフレームにかけて、ヘアルート位置が移動する距離に基づいて、スピード空間メトリックを判定する請求項1記載のヘアパイプライン。
【請求項6】
前記ヘアのスピード空間メトリックに第2の密度曲線を適用し、密度乗数値を生成する請求項5記載のヘアパイプライン。
【請求項7】
前記ヘアのサイズメトリックに第1の幅曲線を適用し、前記ヘアのためのスピード空間メトリックに第2の幅曲線を適用し、ヘアの幅を調整するための幅乗数値を生成する請求項6記載のヘアパイプライン。
【請求項8】
ヘアをレンダリングするか否かを決定する方法において、
ヘアのサイズメトリックを判定するステップと、
前記ヘアについて判定されたサイズメトリックに第1の密度曲線を適用し、密度乗数値を生成するステップと、
前記密度乗数値に基づいて、ヘアをレンダリングするか否かを決定するステップとを有する方法。
【請求項9】
前記ヘアをレンダリングするか否かを決定するために、前記密度乗数値を乱数と比較するステップを更に有する請求項8記載の方法。
【請求項10】
前記ヘアのサイズメトリックの判定は、正規化装置座標(NDC)空間におけるヘアの長さの算出を含む請求項8記載の方法。
【請求項11】
前記ヘアのサイズメトリックに第1の幅曲線を適用し、前記ヘアの幅を調整するステップを更に有する請求項8記載の方法。
【請求項12】
第1のフレームから第2のフレームにかけて、ヘアルート位置が移動する距離に基づいて、スピード空間メトリックを判定するステップを更に有する請求項8記載の方法。
【請求項13】
前記ヘアのスピード空間メトリックに第2の密度曲線を適用し、密度乗数値を生成するステップを更に有する請求項12記載の方法。
【請求項14】
前記ヘアのサイズメトリックに第1の幅曲線を適用し、前記ヘアのためのスピード空間メトリックに第2の幅曲線を適用し、ヘアの幅を調整するための幅乗数値を生成するステップを更に有する請求項13記載の方法。

【図1a】
image rotate

【図1b】
image rotate

【図2】
image rotate

【図3a】
image rotate

【図3b】
image rotate

【図3c】
image rotate

【図3d】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図7c】
image rotate

【図7d】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10a】
image rotate

【図10b】
image rotate

【図10c】
image rotate

【図10d】
image rotate

【図11】
image rotate

【図12a】
image rotate

【図12b】
image rotate

【図12c】
image rotate

【図12d】
image rotate

【図12e】
image rotate

【図12f】
image rotate

【図13a】
image rotate

【図13b】
image rotate

【図13c】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16a】
image rotate

【図16b】
image rotate

【図17】
image rotate

【図18a】
image rotate

【図18b】
image rotate

【図18c】
image rotate

【図19a】
image rotate

【図19b】
image rotate

【図19c】
image rotate

【図20a】
image rotate

【図20b】
image rotate

【図20c】
image rotate

【図21】
image rotate

【図22a】
image rotate

【図22b】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25a】
image rotate

【図25b】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28a】
image rotate

【図28b】
image rotate

【図29】
image rotate

【図30a】
image rotate

【図30b】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate

【図50】
image rotate


【公開番号】特開2012−208945(P2012−208945A)
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願番号】特願2012−143262(P2012−143262)
【出願日】平成24年6月26日(2012.6.26)
【分割の表示】特願2009−521798(P2009−521798)の分割
【原出願日】平成19年7月24日(2007.7.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【出願人】(596102126)ソニー ピクチャーズ エンターテインメント インコーポレイテッド (46)
【Fターム(参考)】