Houdini 20.0 ノード シェーダノード

Mantra: Delayed Load shader node

レンダリング時にオブジェクトをファイルの内容に置換します。

On this page

ディスクからジオメトリをレンダリング

IFDが作成されると、ジオメトリがサーフェスオペレータからMantraへ送られます。 それゆえ、HoudiniはIFD生成中に、ある時点でメモリ内にジオメトリのコピーを持つ必要があります。 さらに、Houdiniは全てのデータをIFDストリームに書き込む必要があり、Mantraは全てのデータをIFDストリームから読み込む必要があります。 大抵の場合、ジオメトリはそんなにメモリを占有しませんし、ジオメトリの読み込み/書き込みの負荷はさほど高くありませんので、心配いりません。

しかしながら、中には禁止事項があります。 例えば、極端に大きいジオメトリファイルをレンダリングすることです。 Houdiniで強制的にジオメトリを全てのフレームで読み込みおよび保存をすると、メモリ的にも時間的にも高くつきます。 また、ネットワークレンダリング(MantraにおけるHオプション)を行なうときにも、サーバーのMantraのメモリ使用量が大きくなるので、トラブルが起きる可能性があります。

レンダリング時間とメモリ消費を軽減する方法としては、ジオメトリファイルをディスクに保存し、ジオメトリをディスクから読み込むようにMantraに指示することです。 それでもMantraはジオメトリを読み取らなければなりませんが、埋め込まれたジオメトリを処理する代わりに、ジオメトリをディスクから直接読み込むことができます。

  1. SHOPネットワーク内で、Mantra: Delayed Loadジオメトリシェーダを作成してください。

  2. シェーダのMainタブの File 名を設定し、ディスクジオメトリファイルを指定してください。

  3. Mantra: Delayed Loadジオメトリシェーダの IFD Bounds タブで、 Bounding BoxNo bounding box required に設定します。

  4. オブジェクトの Render タブの Geometry サブタブで、 Procedural Shader フィールドにシェーダを指定してください。

Note

遅延ロードインスタンスに対してディスプレイスメントシェーダを使うのはなるべく避けてください。 ディスプレイスメントは、強制的にMantraをインスタンス毎に別々のジオメトリを作成させるので、参照のメリットが少なくなります。 どうしてもディスプレイスメントを使わなければならないのなら、マイクロポリゴンレンダリングを使うのが良いです。 その理由は、レンダリングが完了した時に変位させたジオメトリをレンダラーが破棄できるからです (Mantraを理解するを参照してください)。

効率化の改善

Bounding BoxNo bounding box required に設定すると、Mantraは、ディスクのジオメトリファイルから境界ボックスを読み取ろうとします。 もしジオメトリファイル内に境界ボックス情報が見つからなかった場合には、ファイル全体が読み込まれます。 これでは、ジオメトリが完全に隠れていたり、スクリーン外にある場合には、レンダリング速度およびメモリ使用量の両方において非常に効率が悪いです。 デフォルトでは、Houdiniのジオメトリファイルは、この境界ボックス情報と一緒に書き出されます。

Mantra: Delayed Loadジオメトリシェーダの IFD Bounds タブの Bounding Box フィールドには2つの異なるオプションがあります。

Explicit Bounds

Min Bounds および Max Bounds フィールド内に境界ボックス境界を明示的に設定することができます。

Specified By SOP’s Bounding Box

ジオメトリの境界ボックスを使います。このオプションは、一連のディスクファイルの境界ボックスをアニメーションさせる時に便利です。

Note

File SOPを使ってディスクファイルから完全なジオメトリを読み込むのではなく、プロキシ(代用)ジオメトリを使ってください。 これにより、Houdiniのメモリ使用量を小さく抑えることができます。

モーションブラー

このプロシージャルには、モーションブラーをレンダリングする2つのモードがあります。 1つ目のモードは、現行のモーションブラーの設定に関係なく、モーションブラー情報を明示指定します。 2つ目のモードは、ジオメトリファイルの適切なセットを読み込み、現行のモーションブラー設定に準拠します。

明示的モーションブラー

モーションブラーモードがExplicitの時、このプロシージャルはモーションブラーの1セグメント(2つのジオメトリサンプル)のみに対応し、カメラシャッタータイムは無視されます。 Blur File の変形ジオメトリを使用するのか、 Use Velocity Motion Blur を有効にするのかを指定できます。

Bluer File を使うと、プロシージャルは元のファイルからブラーファイルまでブラーを行ないます。 ブラータイムをtと仮定すると、ブラーは以下のように計算されます。

P' = lerp(P, P_blur, t * shutter)

同様に、ベロシティブラーを使う場合、ブラーは以下のように計算されます。

P' = lerp(P, P + v / FPS, t * shutter)

シャッター情報の使用

モーションブラー設定を使う時、必要なのはジオメトリファイルシーケンスを指定することだけです。 これを実行するには、プロシージャルは、フレーム番号マーカー%Fが付いたファイル名を必要とします。 また、このマーカーは、$Fなどのゼロ埋め値をとることができます。 例えば、/tmp/mymodel.%F4.bgeoは、フレーム1で/tmp/mymodel.0001.bgeoを読み取ろうとします。 ファイルの紛失などが起こると、Mantraが警告を発するので、ジオメトリファイルの前後を含む、レンダリングされる全てのシーケンスを網羅した1連のジオメトリを指定することが重要です。

詳細は、 motion blurヘルプを参照してください。

パラメータ

Main

File

ジオメトリファイル。

Frame Offset

File パラメータの評価時に展開される%Fシーケンスに加算するフレームオフセットを指定します。

Motion Blur Style

レンダリング実行中のモーションブラーの挙動を指定します。

None

このプロシージャルでは、モーションブラーはレンダリングされません。

Set Explicitly

Use Velocity Motion BlurBlur File および Shutter で明示的なモーションブラーデータを指定します。

Use Shutter Information

プロシージャルは、現行のモーションブラーの設定に基づいて、正しいジオメトリファイルを読み込んで、モーションブラーのレンダリングを行ないます。

Use Velocity Motion Blur

モーションブラースタイルが明示的な場合、このオプションは、ジオメトリのvアトリビュートで定義されているように、 Velocityモーションブラーを使っているジオメトリをレンダリングするようにプロシージャルに指示します。 この場合、 Blur File オプションは無視されます。

Blur File

変形モーションブラージオメトリファイル。

Shutter

この値を使えば、モーションブラーのエフェクトを減退あるいは誇張させることができます。1.0の値は、シャッター持続時間全体に相当します。

Material Archive

マテリアルを.hipファイルで定義しなくてもアーカイブ内でマテリアルを適用することができます。 これらのマテリアルは、 Mantra Archive Render Driverを使って生成することができます。

Share Geometry

このチェックボックスが有効な場合、読み込まれたジオメトリは、このプロシージャルの他のインスタンス間で共有されます。 これは、何度もインスタンス化される重いジオメトリがある時に便利です。 ジオメトリを複数回読み込むのではなく、Mantraはジオメトリを1度だけ読み込み、そのジオメトリを全てのプロシージャル間で共有します。 しかし、これはMantraがレンダリング中に、そのジオメトリを常に保持しなければならないことを意味しています。

このチェックボックスが無効の場合、Mantraはプロシージャルの要求に応じてジオメトリを読み込み、レンダリング後にジオメトリを解放します。これは、レンダリングのメモリ使用量が大きくなります。

Note

明示的モーションブラーの設定を使っているとき、異なる ShutterBlur File 、または Use Velocity Motion Blur を持つファイルプロシージャルは、お互いにジオメトリを共有しません。 同様に、シャッター情報を使ってジオメトリを読み込むプロシージャルに関しては、異なるシャッター設定が適用されたオブジェクトのプロシージャル間では共有は行なわれません。

IFD Bounds

Bounding Box

境界ボックスコントロールでは、参照ジオメトリ用の境界ボックスを指定することができます。 この境界ボックスが“on screen”の場合のみ、Mantraは参照ジオメトリを読み込みます。 Bounding BoxNo bounding box required に設定することができ、その場合Mantraは常に気にすることなく参照ジオメトリを読み込みます。 また、 SOP Bounds パラメータのSOPの境界ボックスを参照することで、境界ボックスを指定することもできます。

SOP Bounds

参照したい境界ボックスのジオメトリ。

Min Bounds

Explicit Boundsに設定した時の最小境界ボックスの寸法。

Max Bounds

Explicit Boundsに設定した時の最大境界ボックスの寸法。

Note

このプロシージャルには、境界ボックスの指定が必要です。モーションブラーしたジオメトリを生成する時、その境界はブラーしたジオメトリも同時に囲まなくてはなりません。

シェーダノード