RenderMan DSO

このトピックでは XGen RenderMan DSO の動作とその引数のすべてについて説明します。XGen が自らレンダリングする独自の方法を実装できるように、プロシージャについて説明します。

演算

XGen RenderMan プロシージャには、パッチおよびフェースという 2 つの形があります。rib ジェネレータの任務は、パッチ レベルのプロシージャ コールをリブに配置することです。XGen は、パッチ プロシージャが解除され開いている場合に、そのときにコールをフェース プロシージャの中に拡大します。プリミティブが生成され、それによって実際のレンダリングが始まるのは、フェース プロシージャが解除されているときのみです。次に挙げるフラグのすべてをとるのは、パッチ プロシージャです。バウンディング ボックスをパッチ プロシージャに指定する必要があります。レンダリングの対象なるフェースのすべておよびプリミティブのすべてをバインドする必要があります。小さすぎる場合は、クリッピングが発生します。大きすぎる場合は、プロシージャの解除が早すぎて、メモリを浪費します。バウンディング ボックスは、そのパッチのすべてのモーション サンプルをバインドする必要があります。

パッチ プロシージャが解除されると、そのパラメータを解析します。特定のパレットにヒットしたのが初めてであると判断した場合は、パレット ファイルにロードし、モーション サンプルに適切なジオメトリを読み込み、それをキャッシュします。指名されたパッチのすべてのフェースに対してフェース プロシージャが放出されます。パレットが既にキャッシュされている場合は、ファイルは読み込まず、代わりに処理をスキップし、指名されたパッチにフェース プロシージャの放出が開始されます。

パレットは、名前に基づいてキャッシュされます。これには nameSpace の名前も含みます。これにより、同じ .xgen ファイルを複数回使用して森や群集を形成することができます。ただし、間違ってジオメトリを共有してしまうことがないように、インスタンスごとに一意の名前を付ける必要があります。

ジオメトリ ファイルはパレット ファイルから別々にキャッシュされるため、大きな共有が可能になります。たとえば、同じパレット内であっても同じジオメトリが複数回使用されることがよくあります。森の中に同じ木がいくつか含まれる場合があります。共有を許可することでメモリを節約できます。XGen のパレットは共有されませんが、基本となるジオメトリは共有されます。

引数

プロシージャは多くの引数をフラグとして扱います。そのような引数とそれぞれの簡単な説明を以下に示します。また、「オプション」と記載されているものは省略可能な引数です。

-debug デバッグ メッセージのレベルを設定します(オプション)。
-stats 統計メッセージのレベルを設定します(オプション)。
-warning 警告メッセージのレベルを設定します(オプション)。
-quitOnError エラーが発生した場合に XGen に終了するよう指示します(オプション)。
-nameSpace パレットに対して nameSpace が存在する場合は、それに渡すためにこのフラグを使用します。パレット名に nameSpace を追加しないでください。
-palette レンダリングするパレットの名前です。この名前は、-file フラグを使用して渡される .xgen ファイル内の名前と一致する必要があります。
-description レンダリング対象となる名前付きパレット内に記載されたディスクリプションの名前です。
-patch レンダリング対象となるディスクリプションとパレットに属するパッチ(ジオメトリ)の名前です。
-frame ベース パレットのフレームとしてパレットが使用するフレームを設定します。これは、-motionSamplesLookup の値(があれば)によって調整されます。
-motionSamplesLookup ジオ メトリをロードためのモーション サンプルのオフセット値のリストです。これらの値は、各モーション サンプルにフレーム値を指定するために、-frame を介して渡される値に追加されます。ただしこの値は、モーション ブロックに入る値ではありません。これは -motionSamplesPlacement フラグを介して指定されます。このように 2 つを切り離すことで、モーション ブラー効果をコントロールできるようになります。
-motionSamplesPlacement モーション ブロック値のリストです。これらは、RenderMan モーション ブロック呼び出しで値として直接使用されます。通常、この値は -motionSamplesLookup によって指定される間隔に位置合わせされますが、モーション ブラー効果が必要な場合(ストロビングなど)は、必須ではありません。
-file パレットの .xgen ファイルです。この特定のパレット、ディスクリプション、パッチ用です。これは 1 度読み込まれ、特定の要素(nameSpace)のためにキャッシュに入ります。
-delta 特定のパレット ファイルに適用されるデルタ ファイルのリストです。項目間はスペースで区切られます。パレットへの適用順序は見つかった順です。
-geom そのパレットに対するジオメトリ caf ファイルです。これは、パレットの必要量以上のジオメトリを持つことができ、その他のデータを保持することもできます。使用されていないものは XGen が無視します。必ず必要なことは、XGen がバインドされているすべてのジオメトリに対するサンプル フレーム、静的なトポロジ、および Pref に関するデータです。最適なパフォーマンスを得るために、ジオメトリはオブジェクト スペース内に置く必要があります。
注: ファイル名およびその他の名前は、クォーテーションで囲みません。モーション サンプルの値は浮動小数点の数です。-quitOnError フラグは引数を取りません。

RenderMan の設定

rib ファイルの中で一連の設定を行う必要があります。これらは xgen ファイルに適していない設定です。それはファイルを、フレーム、カメラ、またはレンダーの段階(カラーかシャドウか)に特化したものにするためです。しばしば有効なのは、風のサイクルなどの要素を含んだ rib をベイク処理してから、シーン全体で rib をインスタンス化する処理です。このような RenderMan 設定では、これを行うことができるとともに、各要素のレンダリングも、あたかもその場所でレンダリングされたかのように実行されます(フェース カメラ、カリング、詳細度のすべてが同様に動作します)。

# directory for writing temp files
Option "user" "string irCacheDir" ["/disk1/tmp/renderPipeTemp12766"]

# the current render phase
Option "user" "uniform string phase" ["Shadow"]
Option "user" "uniform string generator" ["key_dir"]

# the 'current camera/generator' (once in rib)
Attribute "user" "string irCurrentCam" ["true, -0.633307, -0.591462, -0.499094"]
Attribute "user" "string irCurrentCamFOV" ["90, 90"]
Attribute "user" "string irCurrentCamXform" ["0.773158, 0.0338928, 0.633307, 0, -0.511791, 0.623091, 0.591462, 0, -0.374562, -0.781414, 0.499094, 0, 0, 0, 0, 1"]
Attribute "user" "string irCurrentCamRatio" ["1"]

# tell xgen the 'render camera' (once in rib)
Attribute "user" "string irRenderCam" ["false, 5.33365, 7.04902, 14.19"]
Attribute "user" "string irRenderCamFOV" ["54.4321, 54.4321"]
Attribute "user" "string irRenderCamXform" ["0.93606, -0.148352, 0.319037, 0, 0, 0.906762, 0.421643, 0, -0.351842, -0.394683, 0.848783, 0, 0, 0, -16.718, 1"]
Attribute "user" "string irRenderCamRatio" ["1.94445"]

irCacheDir は、DRA レンダリング方法を使用するときに、dra ファイルを書き出すために使用することができます。ここでは、シャドウ パスをレンダリングするときはそのディレクトリがカラー パスをレンダリングするときよりも 1 レベル深いという前提があります。このフェーズは、レンダリングの種類がカラー(Color)シャドウ(Shadow)かを示しています。これは、すべてのシャドウのレンダリングがカラーのレンダリングより先に行われることが前提です。フェーズがシャドウ(Shadow)の場合は、シャドウ ジェネレータの名前がジェネレータ オプションで指定されます。

次の 2 つの値の組み合わせは、使用されているカメラを表します。最初は irCurrentCam です。現在のカメラまたはシャドウ ジェネレータを表します。ここでの例では、シャドウのレンダリングです。したがって、現在のカメラがシャドウ ジェネレータ(すなわち照明)です。最初の値は、カメラが正投影かどうかを示す bool 値です。次の 3 つの値は位置(カメラがパースの場合)、または方向(正投影の場合)です。irCurrenCamFOV はカメラの視界です(図のように正投影の値は 90,90)。irCurrentCamXform は、反転カメラ トランスフォームです。最後に、irCurrentCamRatio は、2k でのカメラの比率です。詳細の確率レベルに使用されます。この最終的なアトリビュートが 2.0*focalLength/25.4044/horizontalFilmAperture として計算されます。

次の値の組み合わせは irRenderCam です。カラー パスにカメラを表します。可能な場合は、両方の値の組み合わせをすべてのレンダリングに使用してください。両方のセットを生成できず、値を現在のカメラにのみ指定できる場合は、これらの値を両方のアトリビュート セットに渡してください。

環境設定変数

レンダラのコントロールに利用できる環境変数がいくつかあります。そのいくつかは DSO に固有なもので、いくつかは一般的なものですが、これらはすべてプロセスに影響するため、ここでは参照として含められています。これらの変数を設定すると、それ以前に指定されたすべてのフラグをオーバーライドします。

FlipParam

これは、根元が 1 で先端が 0 になるように、スプラインのプリミティブのパラメータを反転します。