Since | 18.0 |
このノードは、SOPネットワークのジオメトリを直接USDファイルにエクスポートします。
パラメータ ¶
Configure ¶
Import Group
これを有効にして、インポートするグループ名(または、グループ構文をスペースで区切ったリスト)を指定します。 これを有効にして、フィールドを空っぽのままにすると、すべてのジオメトリが取り込まれます。
Import Group Type
これを有効にして、 Import Group がポイントまたはプリミティブのどちらのグループなのかを指定します。
Import Path Prefix
取り込んだPrimにパスPrimがなかったことで(mesh_0
のような)自動生成された名前が付けられている場合、または、パスPrimがあってもそのパスが(/
から始まっていない)相対パスであった場合、
このノードは、その名前/パスの頭に自動的にこのパスを追加します。
これは、“パスなし” Primsを単一ブランチ下に整理しておくための方法です。
(ジオメトリ階層を作成する方法を参照。)
(デフォルトは/$OS
です。これは、このノードの名前を使ってルートPrim下に“パスなし” Primsを配置します。)
Transform
ジオメトリを書き出す前に、そのジオメトリをワールド空間に変換するかどうかを指定します。 これは、 Relative Path Prefix Primと生成されたUSDステージ内の他のルートPrimsに対してオブジェクトレベルのトランスフォームを適用します。
Primitive Definition ¶
このグループ内のパラメータは、ソースのSOPジオメトリからどのようにUSDプリミティブを生成するのかという観点で、変換プロセスをガイドします。
Packed USD Primitives
インポートしたSOPジオメトリ内のパックUSDプリミティブの扱い方。
Ignore
ソースのSOPジオメトリ内のパックUSDプリミティブを無視します。
Overlay Transforms
パックUSDプリミティブのトランスフォームをオーバーライド(Over
)Primとして取り込みます。
これによって、パックUSDプリミティブをアンパックすることなく簡単にトランスフォームさせることができます。
Overlay Transforms and Attributes
Overlay Transforms に加えて、パックUSDプリミティブ上のSOP Point/Primitiveアトリビュートは、constant
補間のPrimvarとして取り込まれます。
Other Primitives
通常の非パックプリミティブ(ポイント、カーブ、ポリゴン、球など)の扱い方。
Define
インポートしたジオメトリにまだUSDプリミティブが存在しなかった場合、そのUSDプリミティブを作成します。 これがジオメトリをインポートする標準の方法になっています。
Overlay
USDプリミティブをオーバーライドとして作成します。 これは、同じパスで下位レベルに存在するプリミティブを変更するだけの可視プリミティブとなります。 これは、SOPから特定のアトリビュートを既存のUSDジオメトリに取り込んで編集したいだけの場合に役立ちます。
Overlay Transforms
“Overlay”と同様ですが、トランスフォームデータのみを取り込みます。
Define Only Leaf Primitives
中間プリミティブ(例えば、 Import Path Prefix で作成されるXform
Prims)を定義ではなくオーバーライドとして作成します。
つまり、中間プリミティブが下位レイヤー内の大元のプリミティブと一致しなかった場合、そのLeaf Primsはシーンに追加されません。
これは、親プリミティブがシーンツリー内にまだ存在しなかった場合にのみジオメトリを取り込みたい時に役立ちます。
(ただ、すべてのデータは取り込まれ、シーングラフツリーまたはビューポート内で可視にできないだけなので注意してください。)
Packed Primitives
SOPネイティブのパックプリミティブの扱い方。
Create Xforms
パックプリミティブのトランスフォームとアトリビュートからXform
Primを作成し、その下にパックプリミティブのジオメトリを取り込みます。
Create Native Instances
パックプリミティブ内のジオメトリをインスタンス化可能なリファレンスとして取り込みます。
これは、 Import Path Prefix Prim下のPrototypes
Prim下にプロトタイプとして各ピースを取り込みます。
Create Point Instancer
パックプリミティブ内のジオメトリをポイントインスタンスジオメトリとして取り込みます。 これは、ポイントインスタンサーPrim下にプロトタイプとして各固有のピースを取り込みます。
SOP Primitiveアトリビュートをusdinstancerpath
パックプリミティブに割り当てることで、インスタンサーのUSDシーングラフパスを指定することができます。
Unpack
パックプリミティブのジオメトリのみを取り込みます。 Create Xforms モードとは違って、このノードは、追加で階層を作成しないので、インポート前にパックプリミティブをアンパックすることと同じです。 これは、複数のジオメトリをアトリビュートをマージせずに取り込むのに役立ちます。
Agents
エージェントプリミティブの扱い方。 どのモードでも、エージェントプリミティブのトランスフォームとアトリビュートからPrimが生成され、エージェントのジオメトリとアニメーションはそのPrim下に取り込まれます。
Create Instanced SkelRoots
エージェントのスケルトンとジオメトリをインスタンス化可能なリファレンスとして、スケルトンPrimとスキンPrimを含んだSkelRoot
Primに取り込みます。
これは、各固有のエージェント定義をプロトタイプとして、 Import Path Prefix Prim下のagentdefinitions
Prim下に取り込みます。
Create SkelRoots
エージェントのスケルトンとスキンジオメトリを格納するSkelRoot
Primを作成し、そのPrim下にそれらが取り込まれます。
これは、大規模な群衆だと Create Instanced SkelRoots よりも効率が悪くなりますが、例えば、1体のキャラクタを取り込むようなインスタンス化が不要な場合で役立ちます。
Create Instanced Skeletons
エージェントのスケルトンをインスタンス化可能なリファレンスとして、Skeleton
Primに取り込みます。
これは、各固有のエージェント定義をプロトタイプとして、 Import Path Prefix Primのagentdefinitions
Prim下に取り込みます。
Create Skeletons
エージェントのスケルトンをSkeleton
Primとして、エージェントのXform
Prim下に取り込みます。
これは、大規模な群衆だと Create Instanced Skeletons よりも効率が悪くなりますが、例えば、1体のキャラクタを取り込むようなインスタンス化が不要な場合で役立ちます。
Create SkelAnimations
エージェントのジョイントアニメーションのみを取り込んで、SkelAnimation
Primを作成します。
エージェントのスケルトンとRestジオメトリは通常ではフレーム間で変化することはないので、これを使用することで、フレームシーケンスを効率的に取り込むことができます。
NURBS Curves
NURBSカーブプリミティブの扱い方。
Convert to Basis Curves
カーブをBasisCurves
プリミティブとして取り込みます。
これは、3次カーブにしか対応していませんが、Hydraを介したレンダリングで役に立ちます。
Create NURBS Curves
カーブをNurbsCurves
プリミティブとして取り込みます。
これは、NURBSカーブを完全に双方で変換できますが、Hydraを介したレンダリングに制限があります。
NURBS Surfaces
NURBSサーフェスプリミティブの扱い方。
Convert to Meshes
NURBSサーフェスをMesh
Primとして取り込みます。これは、Hydraを介したレンダリングに役立ちます。
Create NURBS Patches
NURBSサーフェスをNurbsPatch
Primとして取り込みます。
これは、NURBSサーフェスの双方向変換に役立ちますが、Hydraを介したレンダリングで機能が制限されます。
Kind Authoring
取り込んだプリミティブにKindを割り当てる方法。
All Geometry is One Component
取り込んだツリー内のルートプリミティブをComponentに設定します。子プリミティブにはKindを設定しません。
Nested Groups and Components
取り込んだツリー内のLeaf(末端)プリミティブをComponentに設定します。ブランチ(分岐)プリミティブをGroupに設定します。
Nested Assembly, Groups, and Components
取り込んだツリー内のルートプリミティブをAssemblyに設定します。中間のブランチプリミティブをGroupに設定します。LeafプリミティブをComponentに設定します。
None
取り込んだプリミティブにKindを設定しません。
Path Attributes
SOPジオメトリの格納先となるPrimパスとして使用するSOP Primitive文字列アトリビュート を(カンマまたはスペースで区切った)リスト。
デフォルトはpath,name
です。
上記のジオメトリ階層を参照してください。
このリストに2個以上のアトリビュートが含まれていれば、インポーターは、各アトリビュートから最初に空っぽでない値をチェックします。
その文字列値がフルパスだった場合、そのパスがそのプリミティブのUSDシーングラフパスとして使用されます。 その文字列値が相対パス(または、名前だけ)だった場合、その文字列を Import Path Prefix 文字列の後に追加して、フルシーングラフパスを生成します。
リスト内のアトリビュートがどれも指定したSOPプリミティブ上に存在しなかった場合、または、どの値も空っぽの文字列だった場合、インポーターは自動的に名前を生成します(例えば、sphere_0
)。
Prefix Absolute Paths
Path Attributes の絶対パス値に接頭辞/親を付けるかどうか。 デフォルトでは、これは無効になっていて、相対パス値にのみ接頭辞が付きます。
Import HeightFields as Mesh
ソースのSOPジオメトリにHeight Fieldボリュームが含まれていた場合、そのボリュームはポリゴンメッシュとして取り込まれます。 他のレイヤーは、値がVaryingなら頂点Primvar、Constantなら定数Primvarとして取り込まれます。
Geometry Handling ¶
以下のパラメータには、SOPジオメトリデータの解釈を変更するためのオプションが用意されています。
Treat Polygons as Subdivision Surfaces
サブディビジョンスキームのタグがまだ付けられていないポリゴンメッシュに対して、catmullClark
が設定されたsubdivisionScheme
アトリビュートを追加します。これによって、それらのポリゴンメッシュはサブディビジョンサーフェスに変換されるようになります。
Subdivision Group
Treat Polygons as Subdivision Surfaces が有効な場合、このプリミティブグループ内のポリゴンのみがサブディビジョンサーフェスに変換されます。
Reverse Polygon Vertex Ordering
USDはポリゴンの頂点順が左手系なのか右手系なのかを示したメッシュプリミティブ上のorientation
アトリビュートに対応しているのに対して、
SOPジオメトリは頂点順が常に左手系です。
このオプションを有効にすると、インポーターは常に頂点順が右手系になるように頂点(と関連するPrimvar)を並べ替えます。
これは、右手系の向きのポリゴンをUSDからSOP、SOPからUSDに双方向に変換する時に役立ちます。 データは、SOPに取り込む時には常に左手系の頂点順に変換されます。 このオプションを使わないでポリゴンをUSDに戻した場合、そのUSDはオリジナルの右手系とは異なり左手系の頂点順のままになります。
Import Data ¶
以下のパラメータは、SOPジオメトリアトリビュートからUSDのアトリビュートとPrimvarへの変換に影響し、デフォルト値とタイムサンプル値のどちらで編集するのか選択することができます。
Topology Attributes
USDトポロジーアトリビュートをタイムサンプル値またはデフォルト値のどちらで作成するのかを制御します。
以下のアトリビュートがトポロジーアトリビュートとして扱われます:
プリミティブのタイプ |
アトリビュート |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Animated
ソースジオメトリのトポロジーが時間軸で変化するのか分かっているのであれば、USDシーングラフ内でトポロジーアトリビュートをタイムサンプルとして記録するこのオプションを選択してください。 アニメーションするトポロジーが含まれていると、再生するのに非常に負荷がかかってしまうので、このオプションは必要な時にだけ使用してください。
Static
トポロジーアトリビュートをデフォルト値として書き込みます。 これによって再生を非常に速くすることができますが、トポロジーが時間軸で変化できなくなる制限がかかります。
None
トポロジーアトリビュートを作成しません。
これは、USDデータをSOPsに送信して処理を加えて、それをLOPsに戻すのに役立ちます。 このオプションを使用すると、このプロセスではジオメトリトポロジーが変化しなかったとインポーターに伝わるので、変化のあったポイントポジションまたは他のPrimvarのみが取り込まれるようになります。
Attributes
USDにPrimvarとして取り込みたいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
アトリビュート名を直接マッチさせるだけでなく、特別な意味を持った値がいくつか用意されています:
bounds
関連するSOPジオメトリから計算された境界ボックスを使用して、USD extent
アトリビュートを作成します。
visibility
usdvisibility
ジオメトリアトリビュートの値に基づいて、USD visibility
アトリビュートを作成します。
インポーターが特定の共通Houdiniアトリビュートをそれに呼応するUSDアトリビュートにどのように変換するのかに関する情報は、アトリビュートのインポートを参照してください。
Indexed Attributes
USDにIndex Primvarとして取り込みたいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
SOPアトリビュートがこのパターンにマッチすると、インポーターは、Primvarをインデックス配列の値として作成します(つまり、primvars:name
に値の配列、primvars:name:indices
にそれらの値のインデックスの配列が入ります)。
整数でも文字列でもないアトリビュートに対してIndex Primvarを用意するのは、処理に負荷がかかってしまいます。 少数の固有な値を多数のコンポーネントにわたって使用することでストレージサイズを大幅に節約できそうな場合にのみIndex Primvarを使用してください。
Import as Single Element Array
SOPジオメトリアトリビュートがPoint/Primitive/Vertexアトリビュートのどれかに関係なく、USDにConstant
補間(プリミティブ全体で1個の値を持つ配列)のPrimvarとして取り込みたいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
特定のUSDプリミティブに対して複数の値を選択できる場合、インポーターは、見つかった最初の値を選択します。
( Import as Single Value の代わりに)アトリビュートを単一要素配列として取り込むと、Primvarのタイプを変えずにそのPrimvarの補間を上書きすることができるので便利です。
Import as Single Value
SOPジオメトリアトリビュートがPoint/Primitive/Vertexアトリビュートのどれかに関係なく、USDにConstant
補間且つプリミティブ全体で単一値のPrimvarとして取り込みたいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
特定のUSDプリミティブに対して複数の値を選択できる場合、インポーターは、見つかった最初の値を選択します。
これは、Detailアトリビュートが取り込まれるデフォルトの挙動です。
これは、 Import as Single Element Array に似ていますが、Primvarのタイプが単一要素の配列ではなくスカラー値となります(例えば、vector3f[]
ではなくvector3f
となります)。
Boolean Attributes
bool
タイプのPrimvarに変換したい整数SOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
Set Default Values
常にデフォルト値(タイムサンプルなし)としてUSD Primvarを作成したいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。 ここには、 Author Time Samples を“If Not Specifically Excluded”に設定した場合のその除外アトリビュートのリストを指定します。
Partition Attributes
ジオメトリのサブセットを表現したSOP Primitive文字列アトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。 メッシュプリミティブとカーブプリミティブに関しては、インポーターは、このアトリビュートが同じ値のエレメントを自身のジオメトリサブセットに格納します。
インポーターは、サブセット名をアトリビュート値に設定することを試みますが、その名前を有効なUSDプリミティブ名に変更する必要性が出てきます。
インポーターは、ジオメトリサブセットPrim上のそのままのアトリビュート値をpartitionValue
キーを持つCustom Dataとして格納します。
Prefix Subsets with Attribute Name
Partition Attributes からサブセットを作成する時、それらのサブセットの名前は、アトリビュート名とパーティションアトリビュート値(文字列または整数)を組み合わせた名前になります。 これによって、複数のパーティションアトリビュートに同じ値が含まれている時に名前の干渉が回避されますが、サブセット名を正確に制御したい場合には望ましい名前が得られない場合があります。 文字列アトリビュートの場合、このオプションを無効にすると、アトリビュート値が直接サブセット名として使用されます。
Subset Groups
SOPプリミティブグループを指定したスペース区切りのグループ名/パターンのリスト。 各グループ内のSOPのポリゴンプリミティブとカーブプリミティブは、そのグループの名前でジオメトリサブセットとして取り込まれます。
USD Custom Attributes
USDに(Primvarではなく)アトリビュートとして取り込みたいSOPアトリビュートを指定したスペース区切りのアトリビュート名/パターンのリスト。
Translate UV Attribute to ST
uv
SOP頂点アトリビュートをprimvars:st
USD Primvarに変換します。
これを有効にする必要があるかどうかは、あなたが使用しているレンダラーとシェーダの作り方で決まります。
Karmaでレンダリングする場合は、これを無効のままにしてください。
(これを書いた時点では、USDでのテクスチャ座標の命名に厳格な基準はありませんが、st
を使用するのが一般的な慣例であるのに対して、SOPジオメトリではuv
を使用するのが一般的な慣例です。)
Export ¶
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)”の時、開始/終了フレーム(そのフレームを含む)と増分フレームを指定します。
Render with Take
このテイクに保存されているパラメータ値を使ってレンダリングします。
Output File
ルートレイヤーの書き出し先となる“トップレベル” USDファイル。 ファイルパスメタデータが設定された他のレイヤーは、それ自身のファイルに書き出されます。 デフォルトの出力プロセッサ(以下参照)は、ノード内の外部ファイル参照を、このファイルのディレクトリを基準に推奨されるパスに変換します。
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回再構成されることになるので、パフォーマンスが悪くなります。 しかし、一部の設定では、これによって保存処理の堅牢性が高くなります。
Use Relative Paths
このプロセッサは、絶対ファイルパスをレイヤーファイル内で相対パスに変更します。
これによって、USDファイルの読み込みに$HIP/usd/foo.usd
といったパスを使用することができますが、そのようなパスはソースファイルを基準とした相対パスとして書き出されます。
おそらくこのプロセッサを削除したいということはないので、これが推奨される方法となります。
Layer Metadata ¶
Context Options ¶
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ノードのネットワーク通信のみを追跡します。
See also |