On this page | |
Since | 18.5 |
概要 ¶
従来、Houdiniのアニメーションジオメトリは、呼応するフレーム番号の名前が付けられた一連の静的なジオメトリファイル(例えば、dinosaur_0001.bgeo
, dinosaur_0002.bgeo
など)でディスク上に保存していました。
そして、dinosaur_$F4.bgeo
のようにファイル名のエクスプレッションを使用してそれらのフレームを読み込んでいたと思います。
LOPsでは、Sublayerノードを使用してdinosaur_$F4.bgeo
のようなファイル名のエクスプレッションで複数のフレームを読み込もうとした場合、
ビューア内でアニメーションさせると 一見、動作したように思える ものの、実際にはすべてのフレームが 別々のレイヤー (数百または数千ものレイヤーができる可能性があります)として読み込まれ、各レイヤー内のジオメトリはそれに呼応するフレームでのみ可視になっています。
これは、USDでアニメーションジオメトリを扱うのにはまったく良くない方法です。
このノードは、SOPsでファイルを読み込んでからアニメーションジオメトリをUSDにインポートすることによって、 *フレーム毎のジオメトリファイルを適切なUSDアニメーションジオメトリとして読み込みます。 このノード上のほとんどのパラメータは、SOPジオメトリをUSD Primsに変換する方法を制御するSOP Import LOPから取得されています。
パラメータ ¶
Geometry File
読み込むジオメトリファイルにマッチさせるファイル名のエクスプレッション。例えば、dinosaur_$F4.bgeo
。
Reload Geometry
このボタンをクリックすると、ファイル(s)の内容がリロードされます。 他にも、これはパックディスクプリミティブのキャッシュデータをクリアします。geocacheコマンドを参照してください。
Missing Frame
フレームシーケンス内で見つからなかったファイル/ファイル番号の扱い方。 デフォルトでは、ノードはエラーを出します。 代わりに No Geometry を選択すると、見つからなかったフレーム間のアニメーションジオメトリは空っぽになります。
Cache Frames
メモリにキャッシュ化するフレームの総数。
キャッシュは時間ではなくファイル名でキーが打たれるので、 Geometry File パラメータのエクスプレッションが何かしらの原因で複数フレームに対して同じファイル名を生成すると、お互いにキャッシュジオメトリを上書きしてしまいます。
これを1
に設定すると、File SOPのデフォルトの挙動とほぼ同じになります。
しかし、このノードは、キャッシュから現行ジオメトリをフラッシュする前に新しいジオメトリを読み込みます。
これによって、エージェントプリミティブを読み込む際に、共有されているエージェントシェイプがフラッシュされてしまう可能性が回避されます。
Pre-fetch Geometry
次に必要となるフレームを予測し、バックグラウンドでそのフレームの読み込みを試みます。 これによって、計算とファイルI/Oを並列で実行させることができます。
複数のフレームをブレンドする場合、ノードがクックされる度に“必要だけれども現在キャッシュ化されていない”(実質的に新しい)フレームを読み込むのに十分なほどのフレーム数を Cache Frames に設定する必要があります。 このフレーム数が足りなければ、このノードの単純な予想モデルは破綻します。
Load As Reference
これを有効にすると、ジオメトリがペイロードとして取り込まれます。 これを無効にすると、既存のシーンツリー上に階層をサブレイヤー化してジオメトリが取り込まれます(サブレイヤーとリファレンスを参照)。
Sublayer Style
( Load As Reference が無効な時)デフォルトでは、SOPsから取り込まれたジオメトリは、ディスク上のファイルから取り込まれたジオメトリと同様に扱われます。 つまり、強いオピニオンのレイヤーをそのレイヤーの上に適用しないとそのジオメトリを編集することができません。 このパラメータを変更することで、このノードは、そのジオメトリを アクティブレイヤー に配置することができるので、このノードの出力に接続されたLOPノードでそのジオメトリを修正することができます。
このノードは、SOPジオメトリから生成された内容を匿名In-Memory USDレイヤーにコピーすることで、これを行ないます。 この方が遅くなりますが、ディスクに書き込む必要のあるUSDレイヤーの数、各レイヤーに取り込む内容の選択肢が増えます。 これは、Load Layer for Editing LOPのオペレーションと同様です。
Copy SOP Layer Into New Active Layer
スタイルは、SOPレイヤーの内容のコピー先となる新しいアクティブレイヤーを作成します。
Merge SOP Layer Into Existing Active Layer
スタイルは、SOPレイヤーの内容を入力ノードのアクティブレイヤーにコピーするので、ステージ上に新しいレイヤーは作成されません。
Adjust Transforms for Input Hierarchy
( Load As Reference が無効な時)これが有効な時(デフォルト)、このノードは、LOPsから(パックUSD Primsとして)SOPsに取り込んで再度LOPsに戻した場合に発生するトランスフォームの問題を自動的に補正します。 LOPs → SOPパックUSD Prims → LOPsのように双方向な変換をしないことがわかっている場合には、これを無効にすることでインポートを高速化することができます。
SOPsのパックプリミティブは、そのパックジオメトリのローカルからワールドへの完全トランスフォームを表現したトランスフォームを1個だけ持ちます。 USDジオメトリPrimを パックUSD Prim としてSOPsにエクスポートすると、Houdiniは、そのUSD Prim下の完全トランスフォーム階層を単一トランスフォーム行列に平坦化します。
これは、SOPパックプリミティブをLOPsに“戻す”際に、その子プリミティブ自身にトランスフォームがあると、そのトランスフォーム も SOPsから取り込まれたルートPrimのトランスフォームに組み込まれるので問題を起こしてしまいます。 その結果、トランスフォームが間違って二重に適用されてしまいます。
このパラメータを有効にすると(デフォルト)、このノードは、シーングラフ階層内でPrimの位置関係を考慮して、SOPsから取り込まれたすべてのトランスフォームを検査します。 Prim(または子Prims)が既に入力ステージ上に存在している場合、このノードは、親Primsの逆トランスフォームをPrimの追加ローカルトランスフォームとして適用します。 これによって、LOPsでのPrimの最終ワールド空間位置がSOPsでの位置と同じになります。
Copy Contents Into Editable Layer が有効になっている場合、このノードは、取り込んだPrimsに直接それらの追加トランスフォームを適用します。 無効になっている場合、このノードは、新しいアクティブレイヤーを作成し、その新しいレイヤー内にオーバーライドとしてトランスフォームを配置します。
Reference Primitive
( Load As Reference が有効な時)このノードは、変換されたジオメトリを外部USDジオメトリファイルのように扱います。 これは、SOPジオメトリの変換によって生成されたUSD Prim階層からどのルートレベルPrimを取り込むのか制御します。 ここは、“Reference Automatically Chosen Primitive”のままに設定してください。
Reference Automatically Chosen Primitive
リファレンスしたファイルにデフォルトPrimが設定されている場合、そのデフォルトPrimを使用します。 デフォルトPrimが存在しなかった場合、ルートにある最初のXform Primを使用します。 ルートに何もXform Primがなければ、任意のタイプの最初のルートPrimを使用します。
Reference Default Primitive
リファレンスしたファイルにデフォルトPrimが設定されている場合、そのデフォルトPrimを使用します。 デフォルトPrimが存在しなかった場合、このノードで警告を表示します。
Reference Specific Primitive
Reference Primitive Path パラメータで指定されたシーングラフパスを参照します。
Reference Primitive Path
Reference Primitive が“Reference Specific Primitive”の時、ここには、参照するPrimのシーングラフパスを指定します。
(このフィールドにautomaticPrim
またはdefaultPrim
を設定すると、 Reference Primitive を“Reference Automatically Chosen Primitive”または“Reference Default Primitive”に設定した時の挙動と同じになります。)
Primitive Path
Create モードでは、このパラメータには単一Primパスを指定します。 これは、参照ブランチの取り付け先となるシーングラフパスです。 このPrimが存在しなかった場合、このノードはそのPrimを作成します。 Edit モードでは、このパラメータは、このノードの1番目の入力に接続されたステージ上の既存のPrimsに対してマッチされるプリミティブパターンを指定します。 ローカル変数を使用することで、そのリファレンスPrimパスを制御することができます。
Make Instanceable
新しいPrimまたは変更されたPrimを(“ネイティブインスタンス”と同様の)インスタンス化可能としてマークします。
これによって、同じブランチを複数の場所でリファレンスした場合にメモリが節約されますが、リファレンスしたPrimの子Primsは編集不可になります。
このオプションを無効にすると、Primsは明示的に“インスタンス化可能”としてマークされません。
代わりに、各Prim上の現在のinstanceable
値がそのままになります。
Parent Primitive Kind
Primitive Path にPrimが存在しなかった場合、このノードはそのPrimを作成します。 Primを作成する必要になった場合、作成する必要のある中間PrimにこのKindを設定します。
Parent Primitive Type
Primitive Path にPrimが存在しなかった場合、このノードがそのPrimを作成します。 このノードがそのPrimを作成する必要がある場合、その途中で作成する必要のある中間Primsがこのタイプになります。
Import Group
これを有効にして、インポートするグループ名(または、グループ構文をスペースで区切ったリスト)を指定します。 これを有効にして、フィールドを空っぽのままにすると、すべてのジオメトリが取り込まれます。
Import Group Type
これを有効にして、 Import Group がポイントまたはプリミティブのどちらのグループなのかを指定します。
Import Path Prefix
取り込んだPrimにパスPrimがなかったことで(mesh_0
のような)自動生成された名前が付けられている場合、または、パスPrimがあってもそのパスが(/
から始まっていない)相対パスであった場合、
このノードは、その名前/パスの頭に自動的にこのパスを追加します。
これは、“パスなし” Primsを単一ブランチ下に整理しておくための方法です。
(ジオメトリ階層を作成する方法を参照。)
(デフォルトは/$OS
です。これは、このノードの名前を使ってルートPrim下に“パスなし” Primsを配置します。)
Layer Save Path
有効にすると、ジオメトリを含んだレイヤーのSave Pathメタデータにこのファイルパスが設定されます。
USD Renderノードを使ってUSDを書き出す時、(出力処理の後に)このファイルパスを使ってジオメトリが.usd
レイヤーファイルに保存されます。
Primitive Definition ¶
このグループ内のパラメータは、ソースSOPジオメトリからどのようにしてUSD Primsを生成するのかという観点で変換処理をガイドします。
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 モードとは違って、このノードは、追加で階層を作成しないので、インポート前にパックプリミティブをアンパックすることと同じです。 これは、複数のジオメトリをアトリビュートをマージせずに取り込むのに役立ちます。
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
)。
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アトリビュートとPrimvarsへの変換に影響し、デフォルト値とタイムサンプル値の編集方法を選択することができます。
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
を使用するのが一般的な慣例です。)
See also |