On this page | |
Since | 17.0 |
Tip
このノードは、 USDファイル を書き出します。LOPネットワークから画像をレンダリングしたいのであれば、Karma ROPまたはUSD Render ROPを使用してください。
ファイルの出力先 ¶
-
USDノードでは、ルートレイヤーのデータを含んだ“トップレベル”のUSDファイルのファイルパス( Output File パラメータ)を指定します。
このファイルの他にも、このノードは、保存パスメタデータでUSDファイルの出力先が設定されたレイヤーを書き出します。
-
Configure Layer LOPを使用することで、ネットワーク内のレイヤーの保存パスを割り当て/変更することができます。USDを出力する時、そのレイヤーがディスクに書き出されるようになります。
-
SOP Import LOPとSOP Create LOPでも、USDを書き出す時に書き出されるジオメトリの保存パスを指定することができます。
-
保存パスは、HIP(
$HIP/props/lamp.usd
)などのグローバル変数を使用することが多く、絶対パスで指定してください。保存処理時に、デフォルトではUSDノードは、絶対パスをレイヤーファイル間での相対パスに変換する出力プロセッサを使用します。これによって、すべてのレイヤーファイルをある場所から別の場所に移しやすくなります。 -
USDノードの Flush Data After Each Frame パラメータは、各フレームを計算した後にデータをディスクに書き出すかどうかを制御します。 このオプションを使用することで、出力ファイル名または保存パスに時間変化のコンポーネント(例えば、
$F
)が含まれているかどうに応じて、それぞれ単一タイムサンプルを含んだUSDファイルのシーケンス(例えば、lamp_0001.usd
、lamp_0002.usd
など)または全フレームのタイムサンプルデータを含んだ単一ファイルを生成することができます。
アニメーションを保存する方法 ¶
USDレンダーノードの Flush Data After Each Frame パラメータは、各フレームのデータを生成した後にデータを書き出すのかどうかを制御します。 この機能を使用することで、各フレームのデータを含んだファイルを個々に作成したり、制限なくすべてのフレームのタイムサンプルデータを含んだ大きなファイルを作成することができます。
USDレンダーノードの Flush Data After Each Frame を無効にしてフレーム範囲を書き出す時:
-
このROPは、フレーム毎に、ディスクへの保存の準備をした一連のレイヤーを生成しますが、まだIn-Memoryレイヤーのままです。
-
USD Stitchを使って、前フレームでクックされたIn-Memoryレイヤーと現在クックされたIn-Memoryレイヤーを結合します。
LOPネットワークが膨大なデータを生成する場合、(USD Stichはフレーム間で同じデータを複製しませんが)これだと即座に大量のメモリを消費してしまいます。
アニメーションUSDを書き出す際にHoudiniでメモリが足りないようであれば、このオプションを有効にすることで、Houdiniが常に単一フレーム分のデータのみをメモリに格納するように制限することができます。 その結果として、ディスクへの書き込み時間が長くなり、最終ファイルサイズはこのオプションを無効にした場合よりも大きくなってしまいます。 しかし、書き出し可能なデータ量は、コンピュータが利用可能なメモリ量に制限されません。
他にも、それぞれ単一タイムサンプルデータを含んだUSDファイルのシーケンスを書き出してから、USD Stitch Clips ROPを使用してUSD Value Clipを生成する方法があります。 この方法は、その巨大なデータセットが存在するシーングラフツリー内に独立したブランチが存在する場合にのみ機能し、このブランチのデータを別のUSDファイルに書き出すことができます。
Tips ¶
-
このノードは、 Save to Disk をクリックした時、(レンダーネットワーク内の)ノードのRenderフラグをクリックした時、(レンダーネットワーク内の)入力ディペンデンシーでノードをトリガーした時にファイルを書き出します。
-
このノードをレンダーノードネットワークに追加したり、LOPノードネットワークの最後に接続することができます。
-
出力パスに
.usda
拡張子を付けると、このノードは、テキスト形式でUSDを書き出します。 これはデバッグで役に立ちます。テキスト形式のファイルの書き出しは通常のバイナリ形式と比べて遅くなることに注意してください。 -
このノードがファイルを生成していないようでしたら、 Files to Save パラメータのパターンが合っているかどうかを再確認してください。
-
$SAVEDPATHS
ローカル変数には、このROPから書き出されるすべてのファイルをスペースで区切ったリストが設定されます。この変数を Post-Frame Script パラメータまたは Post-Render Script パラメータで使用することで、それらの保存されたファイルすべてに対して作用するスクリプトを作成することができます。
パラメータ ¶
Save to Disk
クリックすると、LOPネットワークで生成されたレイヤーがUSDファイルに書き出されます。
Save to Disk in Background
もう1つHoudiniをバックグラウンドで起動し、そのHoudiniでLOPネットワークをクックして、そこで生成されたレイヤーをUSDファイルに書き出します。 これによって、現行Houdiniセッションで作業を継続することができます。
Controls
クリックすると、異なるフレーム範囲とディペンデンシー設定で“1回限り”のレンダーを起動できるダイアログが開きます。
Valid Frame Range
詳細は、上記のアニメーションの保存を参照してください。
Render Current Frame
(プレイバー内の)現行フレーム番号をレンダリングします。
Render Frame Range
以下の Start/End/Inc パラメータで設定したフレーム範囲内の各フレームをレンダリングします。 Flush Data After Each Frame パラメータは、各フレームの後に出力データをディスクに書き出すのか、アニメーションデータをメモリ内に生成した後にすべてのデータを一度に書き出すのかを制御します。
Render Frame Range Only (Strict)
“Render Frame Range”オプションは、レンダーディペンデンシーから要求がある場合には指定したフレーム範囲外のフレームを生成することができます。 このオプションを選択すると、このノードは、指定したフレーム範囲外のフレームをまったくレンダリングしなくなります。
Render Frame Range From Stage
ソースLOPノードのUSDステージから開始と終了のタイムコード値を調べます。 それらの値をフレーム範囲の開始フレームと終了フレームに使用してディスクに保存します。 ステージにこのタイムコードのメタデータが設定されていなかった場合、保存オペレーションを実行するとエラーになります。
Start/End/Inc
Valid Frame Range が“Render Frame Range”または“Render Frame Range Only (Strict)”の時、開始/終了フレーム(そのフレームを含む)と増分フレームを指定します。
Preroll/Postroll/Inc
Valid Frame Range が“Render Frame Range From Stage”の時、ステージに設定されている開始/終了フレームの前後で保存するフレーム数とタイムサンプル間間隔を指定します。
Render with Take
このテイクに保存されているパラメータ値を使ってレンダリングします。
LOP Path
このノードでレンダリングする出力のLOPノードのノードパス。 このノードがLOPネットワーク内に配置していて、入力を接続していた場合、このノードは、このパラメータを無効にして無視し、代わりにその入力のデータをUSDファイルに書き出します。
Output File
ルートレイヤーの書き出し先となる“トップレベル” USDファイル。 ファイルパスメタデータが設定された他のレイヤーは、それ自身のファイルに書き出されます。 デフォルトの出力プロセッサ(以下参照)は、ノード内の外部ファイル参照を、このファイルのディレクトリを基準に推奨されるパスに変換します。
Save Style
このノードは、USDファイルを書き出す前に、レイヤースタックに何かしらのトランスフォームを適用することができます。 このトランスフォームは最終的に合成されたステージに何も影響せず、生成されるレイヤーファイルの数に影響するだけです。
Flatten Implicit Layers (Collapse Implicit Sublayers, Preserve References)
デフォルト。匿名In-Memoryレイヤーを一番近いファイルパス付き下位レイヤー上に合成します(そのため、このノードは、ファイルパスメタデータを持ったすべてのレイヤーを別々のUSDファイルに書き出します)。 これは、参照、バリアント、他のコンポジションアークを維持します。
Flatten All Layers (Combine All Sublayers, Preserve References)
これは、すべてのレイヤー(匿名レイヤーとファイルパス付きレイヤーの両方)を単一レイヤーに合成します。 これは、参照、バリアント、他のコンポジションアークを維持するので、外部ファイルが参照されている場合には、このノードは2つ以上のファイルを書き出します。
Separate Layers (Preserve All Sublayers and References)
どのようにレイヤーを構成していようがすべてのレイヤーを合成しません。 匿名In-Memoryレイヤーでさえもそれ自身のファイルに保存されるようになります(匿名レイヤーの保存を試みたことが原因でこのノードがエラーを出さないよう Error Saving Layers With Implicit Paths を無効にしてください)。
これは、デバッグで役立ちます。 特に、ノードのデバッグフラグと組み合わせて各LOPノードの挙動を調べる時です。
このノードは、ファイルパスメタデータが設定されていないレイヤーを書き出す必要がある時、そのレイヤーを生成したノードのノードパスなどの情報に基づいて自動的に相対ファイルパスを生成します。
Flatten Stage (Collapse All Sublayers and References)
これは、すべてのレイヤーを単一ステージに平坦化し、すべてのコンポジションアークさらにはバリアント選択までも“ベイク”します。 これによって、レイヤー由来のオピニオンなどの情報や未使用のバリアントが破棄されます。 これは、単一USDファイルを書き出します。
これは、“ヒストリーを削除”し、レイヤーや参照などから何もファイルが合成されていないようにしたい場合に役立ちます。
Tip
“ヒストリーを維持”したいものの、単一ファイルの利便性と携帯性が必要なのであれば、USD Zip ROPを使って.usdz
ファイルを生成してください。
Strip Layers Above Layer Breaks
このオプションを有効にすることで、Layer Breakノードより上流で編集されたレイヤーがこのROPでディスクに書き出されないようにすることができます。 これによって、Layer BreakノードはLOPネットワークのどの部分を保存するのか指示することができます。 このオプションを無効にすることで、この挙動がオーバーライドされて、LOPネットワークで編集された全ステージを強制的にディスクに書き出すことができます。 これは、デバッグ用途で使用したり、レンダリングするために完全なシーンをディスクに書き出す際に使用します。
Strip Post-Layers
このオプションを有効にすることで、hou.LopNetwork.editablePostLayerメソッドを使用して追加されたレイヤーがディスクに書き出されないようにすることができます。 このオプションを無効にすることで、これらのポストレイヤーは Output File レイヤーに平坦化されます。
Flush Data After Each Frame
これを有効にすると、このノードは、各フレームのデータをディスクに書き出した後にLOPネットワークをクックして次のフレームのデータを生成します。 これを無効(デフォルト)にすると、このノードは、すべてのフレームのデータをメモリ内でクックしてから、アニメーションファイルすべてを一度に書き出します。 このオプションを有効にすると、常に単一フレーム分のデータのみがRAMに格納されるので、制限なく大きなUSDファイルを生成することができます。 しかし、各フレームの保存が少し遅くなってしまい、USDファイルは既存ファイルに新しいデータを追加する方法であるので、生成されるファイルが大きくなる可能性があります。 上記のアニメーションの保存を参照してください。
このオプションを有効にすると、このROPはフレーム毎に別々にUSDファイルを生成することもできます。 これをするには、各フレームが固有の名前でファイルを書き出せるように、 Output File パス(と他のレイヤー保存パス)内に現行フレーム番号を示すローカル変数を埋め込みます。例:
$HIP/usd/scene_$F4.usd
詳細は、ファイル名のエクスプレッションを参照してください。
Track Primitive Existence to Set Visibility
LOPネットワークは、あるフレームから次のフレームに進んだ時に大きく異なるシーングラフを生成する場合があります。 フレーム範囲内のこれらのシーングラフを単一のアニメーションシーングラフに結合する時、その結合したシーングラフ内のPrimsセットは、各フレームの階層内ではPrimsの結合体になります。 ただ、もしメッシュをフレーム50で出現させるとすると、通常では、このメッシュはフレーム50以前まで不可視になっていることが望ましいことになります。 このオプションを有効にすると、このノードはフレーム毎にすべてのPrimsのリストを追跡して、時間の経過と共にシーングラフにPrimsが追加または削除されるようにそれらのPrimsに対して自動的にアニメーションする可視性アトリビュートを設定します。 これによって、時間の経過と共にPrimsが追加されたり削除されたりする見た目が得られます。
UsdGeomImageable
Primsのサブクラスが可視性アトリビュートを評価する唯一のUSD Primなので、そのサブクラスのみがこの方法で追跡されます。
Use Network Drive Safe Save (Windows Only)
Windows上でこのUSD ROPを実行する場合、レイヤーをネットワークマウントドライブに保存する際にそれらのレイヤーが現在USDステージに読み込まれているとUSDライブラリが問題を起こす事がよくあります。 これが原因で、使用中のUSDレイヤーを(現在のHoudiniセッションであっても)上書きできなくなる可能性があります。 このオプションは、このUSD ROPが各レイヤーをディスクに保存する直前にそのレイヤーをミュートすることで、この問題を回避します(ただし、これはWindowsで実行する場合にのみ有効です。LinuxやMacOSでは、このパラメータは何の効果もありません)。 レイヤーが保存されると、そのレイヤーのミュートが解除されます。 この手法は、このレイヤーを使用しているすべてのステージが1回ではなく2回再構成されることになるので、パフォーマンスが悪くなります。 しかし、一部の設定では、これによって保存処理の堅牢性が高くなります。
Extra Files ¶
Files to Save
このノードによる保存を 許可 するファイルに合致したパターンのリスト。 ここを空っぽ(デフォルト)にすると、このノードはすべてのファイルを保存します。 これを使用することで、例えば、変更されることがないとわかっているレイヤーファイルの書き換えを回避することができます。
Error Saving Layers With Implicit Paths
これが有効(デフォルト)な時、匿名In-Memoryレイヤー(つまり、ファイルパスメタデータが設定されていないレイヤー)をディスクに書き出そうとすると、このノードはエラーになります。
通常では、デバッグ用途で Save Style に“Separate Layers”を使ってすべてのレイヤーを別々に書き出す場合にのみ、これを無効にしてください。
Save Updates to Modified Files From Disk
Load Layer LOPを使ってレイヤーをステージに取り込んだ場合、この“編集可能”バージョンのディスク上のレイヤーには、LOPsでゼロから生成されたものではなく元々ディスクから取り込まれたものであることを示したメタデータが設定されます。 これを有効にすると、この方法で作成されたレイヤーは、ファイルパスメタデータ付きの他のレイヤーとまったく同じようにディスクに保存されます。
これを無効にすると、このようなレイヤーをディスクに保存することができなくなります。 これは、このような“ディスクから編集された”レイヤーでオリジナルファイルを上書きしたくない場合、または、編集レイヤーをディスクに書き込みできるようにする時に少なくともLOPネットワークの出力が正しいことが確認できるまでは上書きを禁止したい場合に役立ちます。
Flatten File Layers
Save Style が“Flatten Implicit Layers”の時、Sublayer LOPを使ってディスクから読み込まれたファイルは匿名レイヤーとみなされないので、下位レイヤーに合成されません。 ディスクからのレイヤーを匿名レイヤーと同じ扱いで平坦化するには、これを有効にします。 これは、外部レイヤーに依存するUSDレイヤーが最小限に収まるように、持ち運びしやすいUSDレイヤーを生成するのに役立ちます。 他にも、サブレイヤー化されたディスク上のファイルが変更される可能性があるものの、あなたがアーカイブ目的でUSDファイルを生成していて、そのUSDファイルが外部ファイルの今後の変更を反映させたくない場合には、そのサブレイヤー化されたディスク上のファイルを現行状態で“ハード化”するのにも使用します。
Flatten SOP Layers
Save Style が“Flatten Implicit Layers”の時、SOP Importを使ってSOPsからデータを取り込んで生成されたレイヤーは匿名レイヤーとみなされないので、下位レイヤーに合成されません。 SOPsから取り込まれたレイヤーを匿名レイヤーと同じ扱いで平坦化するには、これを有効にします。 これは、外部レイヤーに依存するUSDレイヤーが最小限に収まるように、持ち運びしやすいUSDレイヤーを生成するのに役立ちます。
Output Processing ¶
Output Processors
このノードに出力プロセッサを追加します。
出力プロセッサは、外部ファイルに使用するファイル位置とファイルパス文字列を変更することができるPythonプラグインです。
USDレンダーノードは、デフォルトの出力プロセッサ(Use Relative Paths
。以下参照)から開始します。
(出力プロセッサプラグインの書き方に関する情報は、出力プロセッサを参照してください。)
以下のビルトインプロセッサが利用可能です:
Use Relative Paths
これは、デフォルトで自動的に追加されます。
このプロセッサは、レイヤーファイル内の絶対ファイルパスを相対パスに変更します。
これによって、$HIP/usd/foo.usd
などのパスを使ってファイルを読み込んだり、ソースファイルを基準としたパスでファイルを書き出すことができます。
これは推奨される方法なので、このプロセッサは削除しないほうが良いです。
Make Output Layer Extension
通常では、出力ファイルの拡張子を変更すると、それが“トップレベル”の出力ファイルにのみ影響します。
他のすべての外部ファイルは、そのファイルに埋め込まれている保存パスと拡張子を使って書き出されます。
このプロセッサは、すべてのパスの拡張子を出力ファイルの拡張子に合わせて変更します。
つまり、このプロセッサがアクティブな時に出力ファイルの拡張子を.usda
(テキスト形式)に変更すると、すべての外部USDファイルの拡張子も.usda
に切り替わります。
Save Paths Relative to Output Path
相対パスになっているSave PathパラメータがOutput Fileパラメータ値を基準としたパスとして扱われるようにします。 これによって、LOPネットワークによって生成されるすべてのファイルが共通ルートディレクトリに保存されるようにするのが簡単になります。 Output Fileの保存場所を変更すると、暗黙的に他のすべてのファイルの保存場所も変更することになります。
このプロセッサには Root Directory パラメータが備わっています。 このパラメータには、Save Pathが相対パスとして考慮されるOutput Fileとは別の場所を指定します。
Use Search Paths
このプロセッサにはSearch Pathパラメータが備わっています。 各アセットパスは、このパスにリストされているディレクトリと比較されます。 そのアセットがSearth Path内に存在すれば、フルパスまたは相対パスのアセットではなく、そのSearch Path内にあるアセットが参照されます。
Copy All Assets to Referencing Layer Directory
このプロセッサは、すべての非USDアセット(例えば、UDIM、テクスチャマップ、ボリュームファイル)を、それらを参照しているUSDファイルと同じディレクトリ内にそれらのコピーを作成します。
そのUSDファイルは、それらのアセットのローカルコピーを参照するように更新されます。
それらの更新された参照は絶対パスを使用するので、これとUse Relative Paths
出力プロセッサを併せて使用することを推奨します。
USDZフォーマットはテクスチャマップや同様のアセットがUSDファイルと同じディレクトリ下に格納されている必要があるので、このアセットのローカライズによって、それらのアセットのUSDZアーカイブの作成が非常に簡単になります。
このプロセッサには、 Output Subdirectory パラメータがあり、USDファイルが書き出されるディレクトリ内の特定のサブディレクトリ下にそれらのアセットをコピーすることができます。
このパラメータには、ディレクトリの絶対パスではなくて、textures
といった相対パスを指定してください。
USDアセットは、もしローカライズするとそれらのUSDファイル内の相対パス参照を破壊してしまうので、ローカライズされません。
USDデータも単一ディレクトリにローカライズする必要がある場合、USD ROPのSave Style
をFlatten Stage
に設定することでこれを実現させることを推奨します。その設定によって、すべてのUSDデータが単一レイヤーに集約されます。
アセットファイルが存在しなかった場合、または、アセットファイルが既にそれを参照しているレイヤーと同じディレクトリまたはサブディレクトリ内に配置されていた場合、そのアセットはコピーされません。
USDファイルに書き込まれるアセットパスがローカライズされたファイル場所までのできるだけ最も単純なパスになるようにするには、この出力プロセッサを“Use Relative Paths”出力プロセッサよりも上流に移動させる必要があります。
Layer Metadata ¶
Default Primitive
ここには、トップレベルファイルのデフォルトPrimとして設定する現行ステージ上のルートPrimの 名前 を設定します。
Error Saving Layer With No Default Primitive
これを有効にすると、書き出されるすべてのレイヤーにデフォルトPrimが指定されていなかった場合にレンダーノードがエラーになってクックを停止します。
これは、レイヤーにデフォルトPrimが必ず存在するようにさせる方法で、手動でトップレベルPrimを指定しなくてもファイルを参照することができるのかどうかがわかります。
Save ROP’s Time Information to Output
トップレベルの出力ファイルに、開始フレーム、終了フレーム、さらに現在の1秒あたりのフレーム数の設定を書き出します。
Clear Houdini-Specific Custom Data
LOPネットワークでは、レイヤー、Prims、プロパティにHoudini固有のカスタムデータを追加する場合が多いです。 Houdiniでは、このデータをディスク上に保存する必要がないので(通常では、ファイルの書き出し方に関係します)、デフォルトでは、Houdiniは保存前にこのデータを削除します。 通常では、このパラメータを無効にする理由はありません(SideFXが問題を診断する時に役立つかもしれません)。
Ensure Basic Metrics are Set on All Layers
このオプションは、ディスクに書き出されるすべてのUSDファイル内にupAxis
とmetersPerUnit
のメタデータを設定します。
明示的にLOPネットワークによってレイヤー上で値が編集されていなかった場合、Lighting PreferencesからデフォルトのUp軸と単位あたりのメートル値が使用されます。
Context Options ¶
Set ROP Cook Context Options
レンダリング時にこのノードが@ropcook
、@ropstart
、@ropend
、@ropinc
のコンテキストオプションを設定するかどうかを制御します。
有効にすると、自動的に@ropcook
には1
、@ropstart
、@ropend
、@ropinc
にはそれぞれこのノードのStart、End、Increment Frameの値が設定されます。
これらの標準のコンテキストオプションを使用することで、Cache LOP、タイムスタンプ値の範囲を生成するLOP、ビューポートプレビューまたは最終レンダー出力を生成するためだけに使用されるLOPに対して期待した動作をセットアップするのが簡単になります。
Number of Options
このノードからファイルを書き出す時にのみ適用するコンテキストオプションを指定することができます。 定義/オーバーライドするコンテキストオプションを数を設定するか、または、プラスとマイナスのボタンを使ってコンテキストオプションを追加/削除します。
例えば、異なるコンテキストオプションが指定された2つの別々のUSDレンダーノードを用意すれば、エクスプレッションで@contextoption
参照を使用することで、同じLOPネットワークから異なるUSDを書き出すことができます。
これは、Wedge化(バリエーション生成)するのに役立ちます。
または、インタラクティブ性には欠けるもののディスクに書き出す方法でLOPネットワークがステージを構成するようにさせたい場合に役立ちます。
Option Name
各オプションの名前。
エクスプレッションに@name
を使用することで、このオプションを参照することができます。
Option Type
各オプションに格納するデータのタイプ。 浮動小数点または文字列のどちらかを指定することができます。
Option Value
(このノードがUSDを書き出す時の)各オプションの値。
Scripts ¶
様々な実行ステージで実行されるスクリプトコマンドを指定することができます。 スクリプトパラメータに対して選択されたエクスプレッション言語によって、このコマンドがHScriptなのかPythonなのか判断されます。
実行する前に、このノードが自動的にグローバル現行ノードとして設定されます。
ファイルからステートメントを実行したいのであれば、
.cmd
拡張子(言語が HScript に設定されている場合)または.py
拡張子(言語が Python に設定されている場合)が付いたファイルのパスを指定してください。
スクリプトには追加で引数を指定することもでき、シェルと同様の方法で引数が解析されます。
Pre-Render Script
任意のレンダリング前に、このスクリプトを実行します。
Pre-Frame Script
各フレーム前に、このスクリプトを実行します。
Post-Frame Script
各フレーム後に、このスクリプトを実行します。
Post-Render Script
すべてのレンダリング後に、このスクリプトを実行します。
Initialize Simulation OPs
レンダリング前にDOPシミュレーションを初期化します。
Alfred Style Progress
ファイルを書き出す時の進捗の割合をプリントします。 これは、PixarのAlfredレンダーキューで必要になる形式です。
Report Network Use
このノードでトリガーされたクックの間に分散シミュレーション系ノードによって送信または受信されたバイト数をプリントします。
このノードは、例えばファイルをNFSマウントに保存するといったネットワークの使用状況を追跡するものではありません。 これは、分散系Houdiniノードのネットワーク通信のみを追跡します。