On this page | |
Since | 17.0 |
概要 ¶
このノードは、Attribute Wrangle SOPと同様です。
-
Primitives パラメータで選択されたPrim毎に、このノードはVEXスニペットを実行します。
-
@name
を使うことで現行アトリビュート値を読み込むことができ、アトリビュートと同じ名前の@
変数に書き出しをすることで、そのアトリビュート値を作成/更新することができます。 -
他にもVEX USD関数を使ってPrimを制御することができます。
-
Bindingsタブでは、VEX変数名をUSDアトリビュートに明示的にマップすることができます。
-
これは、USDアトリビュート名が有効なVEX変数名でない時に役立ちます。
-
まだ存在していないアトリビュートに関しては、明示的にUSDタイプを指定することができます。
-
構文 ¶
ビルトイン変数 ¶
-
@primpath
は、現行Primのシーングラフパスです。 -
普段では、
elemnum
は選択されたPrimsのリスト内の現行Primのインデックスで、numelem
は選択されたPrimsの総数です。 しかし、これらの変数の意味は、 Run on Elements of Array Attributes が有効な時で異なります。 -
以下の“便利”ビルトイン変数も利用可能です:
名前
等価
内容
primname
usd_name( 0, @primpath )
現行Primの名前
primtype
usd_typename(0, @primpath)
現行Primのスキーマ名
primkind
usd_kind(0, @primpath)
現行PrimのKind
primpurpose
usd_purpose(0, @primpath)
現行PrimのPurpose
primdrawmode
usd_drawmode(0, @primpath)
現行Primの描画モード
primactive
usd_isactive(0, @primpath)
現行Primがアクティブなら
1
primvisible
usd_isvisible(0, @primpath)
現行Primが可視なら
1
-
Primの現行バリアントにはビルトイン変数がありませんが、関数コールを使ってビルトイン変数を取得することができます:
usd_variantselection(0, @primpath, "variant_set_name")
Tips ¶
-
このノードは、Prim毎にスニペットを実行したり、各Prim上の各配列アトリビュート内のエレメント毎にスニペットを実行することができます。 Run On Elements of Array Attributes パラメータを参照してください。
-
このノードのサンプリング系パラメータを使用する場合、アトリビュートの設定は最初のサンプルが評価された後にのみUSDステージに適用されることに注意してください。プリミティブの作成またはメタデータの設定(メタデータは時間の経過と共に変化することはできません)といった他のオペレーションは、最初のサンプルに対してのみ実行されます。
-
複数サンプルをクックするには、他のノードを何回もクックする必要が出てきます。例えば、VEXコードがSOPネットワークを参照していた場合、そのSOPネットワークはタイムサンプル毎にクックされます。このノードの入力に接続されているLOPノードが時間依存だった場合、この入力ノードもこのノードのタイムサンプル毎に再クックされます。
-
VEXスニペットでは、コロン(
:
)を含んだ@
変数名を使用することができます。これによって、特定のUSDアトリビュート名(例えば、i@primvars:foo
)を自動的にバインドするのが簡単になります(通常、このような名前はVEXソースコード内では有効ではありません。このような名前がスニペット内で使用されると、このノードが自動的にその名前をエンコードします)。
パラメータ ¶
Sampling Behavior
このノードがクックされると、現行時間にただ1個のUSDタイムサンプルを生成するのではなく、たくさんのUSDタイムサンプルを生成することができます。 これは、このノードの後にCache LOPを接続することと同様ですが、こちらの方が非常に高速に評価され、他のノードからのデータをキャッシュ化しません。 これによって、以降のすべてのノードも時間依存にしてしまうノード時間依存を導入することなく、アニメーションデータをUSDで作成することができます。 その結果、一部のLOPネットワークの再生パフォーマンスを大幅に向上させることができます。
どのサンプリングモードでも、このノードのパラメータが時間と共に可変しない、且つ、ステージ上の他のタイムサンプルデータに依存していない場合、 呼応するアトリビュートに対して単一デフォルト値のみがUSD内で生成されます。 時間と共に可変するパラメータに対してのみUSDタイムサンプルが生成されます。
Sample Current Frame
現行時間に対して単一タイムサンプルが作成されます。
Sample Frame Range If Input Is Not Time Dependent
このノードの入力が時間依存の場合、このノードは、Sample Current Frame
モードと同様の挙動をします。
そうでない場合、このノードは、Sample Frame Range
モードと同様の挙動をします。
Sample Frame Range
Start/End/Inc パラメータを使用して、このノードのパラメータが評価される時間に対して複数の時間を生成し、それらの各時間においてアトリビュート毎にUSDタイムサンプルが作成されます。
Start/End/Inc
Sampling Behavior がSample Frame Range
の場合、このパラメータは、このノードで生成されるベースタイムサンプルの数と間隔を制御します。
このパラメータのデフォルト値は、@fstart
、@fend
、@finc
です。
これらの値は、Houdiniを操作する時のグローバルHoudiniアニメーション設定の開始フレーム、終了フレーム、ステップサイズに相当します。
ROPノードを使用してフレーム範囲を生成した場合、これらの値は、実行したそのROPノードで指定された開始フレーム、終了フレーム、ステップサイズに相当します。
このデフォルトは、ディスクに書き出されるUSDファイルに、(Houdiniアニメーション設定に関係なく)ROPで指定されたフレーム範囲ちょうどのタイムサンプルを含めます。
Subframe Sampling
このノードで生成されたプライマリサンプル毎に、これらのパラメータは、そのプライマリサンプル時間付近に追加でサンプルを生成させることができます。 これは、プライマリサンプル時間だけでなく、カメラシャッターの開閉時間ちょうどにも正確なデータが存在することを保証するために非常によく使用します。
Shutter
プライマリサンプル時間を基準にシャッターの開閉時間を指定するのに使用されるメソッドを制御します。
Specify Manually
Shutter Open/Close パラメータの値で、プライマリサンプル時間を基準とした正確なオフセット値を指定します。
Use Camera Prim
Camera Prim パラメータで、シャッターの開閉時間が抽出されるカメラPrimのシーングラフパスを指定することで、プライマリサンプル時間を基準としたオフセット値を指定します。
Shutter Open/Close
Shutter モードがSpecify Manually
の場合、ここの2つのオフセット値がプライマリサンプル時間に追加され、シャッターの開閉時間が指定されます。
シャッターの開時間は0以下に、閉時間は0以上に設定してください。
Camera Prim
入力ノードのステージ上のカメラPrimのシーングラフパス。 このPrimからShutter Open/Closeのアトリビュート値が読み込まれます。
Samples
プライマリサンプル毎に作成するサブフレームサンプルの数。 これらのサンプルは、シャッターの開時間から閉時間の間で均等に分布します。 このような均等な分布は、ちょうどプライマリサンプル時間にサンプルが作成される場合と作成されない場合があることに注意してください。
Always Include Frame Sample
このオプションを有効にすると、ちょうどプライマリサンプル時間にサンプルを作成させることができます。 シャッター開時間とシャッター閉時間のどちらの Samples 値も既にプライマリサンプル時間でサンプルが配置されている場合、このオプションを有効にしても何の効果もありません。 そうでない場合、このオプションによって、追加でサンプルが作成されます。 つまり、プライマリサンプルあたりの実際のサンプル数は、 Samples で指定されたサンプル数よりも多くなる可能性があります。
Primitives
このノードを動作させるPrim(s)。
Scene Graph Tree ペインからPrim(s)をこのテキストボックスにドラッグすることで、それらのパスを追加することができます。
または、このテキストボックスの隣にある 再選択ボタンをクリックすることで、ビューア内でPrim(s)を選択することができます。
他にも、この再選択ボタンを⌃ Ctrlクリックすることで、ポップアップツリーウィンドウからPrim(s)を選択することができます。
コレクション内のすべてのPrimsのマッチング(/path/to/prim.collection:name
)といった高度なマッチングには、プリミティブパターンを使用すると良いでしょう。
Allow Instance Proxy Primitives
これを有効にすると、 Primitives パラメータ内のパターンを、インスタンスプロキシPrims(インスタンス化可能とマークされたPrimのインスタンス親Prims)にマッチさせることができるようになります。 インスタンスプロキシPrimsはUSD内で直接編集することができないので、主にこのモードは、VEXコードがインスタンスプロキシPrimsからデータを引き出して、値を何かしらの非インスタンス親Primに適用できるようにするために使用します。
Run On Elements of Array Attributes
これを有効にすると、このノードは、各Prim上の配列アトリビュートの 配列エレメント毎に VOPネットワークを評価します。
このモードでは、ビルトインのelemnum
は、配列インデックスを参照し、numelem
は、 一番大きい 配列の長さを参照します。
(これが無効な時、配列アトリビュートは、スニペット内では配列タイプの変数として利用可能です。)
一部の配列アトリビュートの長さが他よりも短い場合、それらのエレメントは、最後のエレメントで埋められます。
このモードは、points
などのジオメトリ関連のアトリビュートに対して実行する際に役立ちます。
Code ¶
VEXpression
Attributes to Create
スニペットが新しい変数を作成する時、その変数名がこのパターンに合致した場合にのみ、それに相当するアトリビュートを作成します。
デフォルトは*
で、スニペット内で作成されたすべてのVEX変数からアトリビュートを作成します。
Enforce Prototypes
@
変数から自動的にアトリビュートを作成するのは便利ですが、間違ったアトリビュートをバインドまたは作成してしまう危険性があります。
これを有効にすると、@
変数を使用する前にそれを明示的に宣言している場合にのみバインドが動作します。
Bindings ¶
Autobind by Name
既存のアトリビュートに呼応した@
変数を自動的に作成します(デフォルトで有効)。
これを無効にすると、以下のMulti-Parmを使って明示的にバインドされたアトリビュートのみがスニペット内で@
変数として利用可能になります。
Number of Bindings
VEX変数にバインドするUSDアトリビュートの数。
Attribute Name
VEX変数にバインドするUSDアトリビュートの名前。
Note
このアトリビュートが既に存在している必要はありません。 このアトリビュートをVEX変数にバインドさせると、VEXがその変数を書き出した時に、このノードがそのアトリビュートを作成します。
Attribute Type
アトリビュートのUSDデータタイプ。
通常では、これをAuto
のままに設定します。すると、このノードは既存アトリビュートの既知タイプを使用します。
アトリビュートを作成する際に、このノードがそのVEXタイプを正しいUSDタイプに変換しなかった場合(例えば、token
が欲しいのにstring
になってしまった場合)、その欲しいタイプをここで変更することができます。
VEX Parameter
アトリビュートにバインドさせるVEXパラメータの名前。
Evaluation Node Path
ch()
などの特定のVEX関数は、このノード上のパラメータを評価します。
一部の場合において、これらの関数を別のノードを基準にして評価させたい時があります(例えば、デジタルアセット内のノードを使って、親アセットを基準に関数を評価したいことが多いです)。
これは、プログラム内の“現行ノード”として使用するノードの相対ノードパスです。
Export Parameters
VEXパラメータをエクスポートする時、それにバインドされたアトリビュートが存在しなければ、そのアトリビュートが作成されます。 ここにパターンを使用することで、特定のアトリビュートに書き込まないようにしたり、特定のアトリビュートを作成しないようにするオプションを上書きすることができます。 このパターンは、バインドされたアトリビュートではなくてVEXパラメータにマッチします。 アトリビュートは読み込み用にバインドされたままになります。