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 パラメータを参照してください。
-
VEXスニペットでは、コロン(
:
)を含んだ@
変数名を使用することができます。これによって、特定のUSDアトリビュート名(例えば、i@primvars:foo
)を自動的にバインドするのが簡単になります(通常、このような名前はVEXソースコード内では有効ではありません。このような名前がスニペット内で使用されると、このノードが自動的にその名前をエンコードします)。
パラメータ ¶
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パラメータにマッチします。 アトリビュートは読み込み用にバインドされたままになります。