On this page | |
Since | 18.5 |
概要 ¶
このノードは、 Attribute Wrangleと同様の挙動をしますが、ノードパラメータ内に Rig タブがあります。 この Rig タブには、独自のViewport Stateと、このノードの入力と出力のポイントトランスフォームを自動的に再計算するパラメータが露出されています。 このノードは、Rig Attribute VOP SOPに相当しますが、VOPネットワークの代わりにテキストによるVEXスニペットを使用します。
これは非常に強力で、VEX熟練者がコードを使用してアトリビュートを調整することができるローレベルなノードです。
このノードは、入力ジオメトリ内のDetailまたはすべてのPoint/Primitive/Vertex( Class パラメータに依存)に対してVEXスニペットを実行します。 スニペットは、アトリビュートを変更することで、入力ジオメトリを編集することができます。 アトリビュートとVEX関数を使うことで、他のジオメトリの情報にアクセスすることができます。
-
ノードをクリックすると、スニペットからのエラーメッセージを確認することができます。
-
VEX関数の
ch
を使ってパラメータを評価することができます。 パスは、このノードの相対パスで、ch("parm")
は、このノードのparm
パラメータを評価します。 この評価は、現行時間で実行されます。 -
Attribute Create SOPとは違い、このノードはローカル変数を 使用しません 。 さらに、すべてのバッククォートによるエクスプレッションと
$F
変数は、現行時間 ではなく 、フレーム1で評価されます。 代わりに@Frame
、@Time
、@TimeInc
を使ってください。
構文 ¶
パラメータ ¶
Code ¶
Group
プログラムの実行を適用する入力ジオメトリのポイントのサブセットを指定します。 このパラメータフィールドを空っぽにすると、入力のすべてのポイントに影響を与えます。
Group Type
グループを構成しているタイプを指定します。
Run Over
このタイプのコンポーネント毎(ポイント、プリミティブ/フェース、頂点)にVEXコードを適用します( Detail を選択した場合はVEXコードは1回のみ実行されます))。
コンポーネント毎に、VEXコードは読み書きできるようにアトリビュートを@
で始まる変数(例えば、@Cd
)にバインドして実行されます。
Numbers
を選択すると、Houdiniはコンポーネント毎ではなく、特定の反復回数だけVEXコードを実行します。
このモードでは、VEXコードは読み取り専用Detailアトリビュートのみを@
変数にバインドします。
Number Count
Run Over が Numbers の時、ここにはVEXコードを実行する反復回数を指定します。
反復の度に、@numelem
はこの反復総回数にバインドされ、@elemnum
は0
から`@numelem - 1までの反復番号にバインドされます。
このモードでは、VEXコードは読み取り専用Detailアトリビュートのみを@
変数にバインドします。
Thread Job Size
Run Over が Numbers の時、ここには別々のスレッドで同時に走る最大反復回数を指定します。
この最大反復回数が Number Count 以上の場合、すべての反復はシングルスレッドで順次に実行されます。
これが1
の場合、各反復が別々のスレッドで実行されます。
1
より大きくて Number Count 未満の場合、このノードは、その回数のサイズで反復をバッチに分けて、別々のスレッドで並列で各バッチを実行します。
VEXpression
Pointアトリビュートを操作するVEXコードのスニペット。
@variable_name
構文を使えば、ジオメトリアトリビュートにアクセスすることができます。
Attributes to Create
許可する名前のリストを指定します。
アトリビュートの名前がこのパターンに一致した場合のみ、そのアトリビュートを作成します。
デフォルトの*
パターンは、どのアトリビュートも作成することができます。
vtxnum
などのバインドされたアトリビュートは作成することができないので、無視されます。
Enforce Prototypes
スニペット内でまず型宣言として@
バインドを宣言しないと、それらのバインドが使用できないようにします。
これは、アトリビュート(例えば、@Cd
)と@ptnum
や@Frame
といった“便利”バインドのどちらにも当てはまります。例:
// バインドを宣言します。 int @ptnum; float @Frame; vector @Cd; // 宣言の後にバインドを使用します。 int pointnum = @ptnum; float red = @Cd[0] / @Frame;
@
構文を使った自動バインドは便利ですが、シーンが複雑になるにつれて、@
バインドのタイプミスが原因で不意に存在しないアトリビュートをバインドしてしまう危険性があります。
Bindings ¶
Autobind by Name
有効にすると、自動的に名前でアトリビュートをパラメータにバインド(紐付け)します。 なにかしらの理由で、CVEXパラメータの名前を、アトリビュート名とは別の名前にしておく必要がある場合は、このパラメータを無効にして、 Number of Bindings マルチパラメータを使って、 Attribute Name と VEX Parameter のマッピングをセットアップします。
Number of Bindings
Attribute Name と VEX Parameter のマッピングをセットアップすることで各名前のバインドを手動で指定することができるマルチパラメータ。 IntegerアトリビュートはIntegerパラメータにバインド(紐付け)します。 Floatアトリビュートはタプルのサイズに応じてFloat、Vector、Point、Matrix、Matrix4のパラメータにバインド(紐付け)します。 StringアトリビュートはStringパラメータにバインド(紐付け)します。
Attribute Name
指定した VEX Parameter にバインドするアトリビュートの名前。
VEX Parameter
指定した Attribute Name にバインドするパラメータの名前。
Autobind Groups by Name
有効にすると、自動的に任意のグループをgroup_
で始まるIntegerパラメータにバインド(紐付け)します。
なにかしらの理由でCVEXパラメータを、それに該当するグループとは別の名前にしたい場合には、これをオフにして、 Group Bindings マルチパラメータを使って、 Group Name と VEX Parameter のマッピングをセットアップします。
Group Bindings
Group Name と VEX Parameter のマッピングをセットアップすることで、各グループのバインド(紐付け)を手動で指定することができるマルチパラメータ。
Group Name
指定した VEX Parameter にバインドするグループの名前。
VEX Parameter
指定した Group Name にバインドするパラメータの名前。
Evaluation Node Path
ch()
などのVEX関数は、通常では、このノードを基準に評価します。
このパラメータでは、パス検索の開始場所を上書きするノードパスを指定することができます。
これは、トップレベルのデジタルアセットが検索ルートになるようにデジタルアセットへ組み込む時に役に立ちます。
Export Parameters
VEXパラメータをエクスポートする時、バインドしたアトリビュートが存在しなければ、そのアトリビュートが作成されます。
このパラメータにパターンを使ってVEXシェーダのExportオプションを上書きすることで、指定したアトリビュートへの書き込みや作成を回避することができます。 パターンはVEXパラメータに一致しますが、バインドしたアトリビュートには 一致しません 。 バインドしたアトリビュートは、読み取り専用になります。
Update Normals If Displaced
ポイントが繰り越されてしまい、P
アトリビュートが書き込まれ、N
アトリビュートが書き込まれていない場合、入力の法線が古くなります。
このパラメータを有効にすると、ポイントの繰り越しが起きた時に頂点とポイントの法線が更新されます。
Attribute To Match
マッチングに使用するアトリビュートを指定します。
このアトリビュートは、マッチングを実行する両方の入力に存在しなければなりません。
そうでない場合は、マッチングはエレメント番号(つまり、ポイントに対して実行する時はポイント番号)で実行されます。
このアトリビュートには、整数または文字列のどちらかのアトリビュートを指定します。
これは、opinput#_
仮想バインドの接続方法を制御します。
例えば、v@opinput1_Cd
を使用すれば、2番目の入力のv@Cd
アトリビュートを読み込むことができます。
Compute Results In Place
有効にすると、Rig Attribute Wrangleノードは入力ジオメトリをコピーせずにその場でそのジオメトリを処理することができます。 これによって、コピーの工程が1つ減るので処理が高速化されますが、1番目の入力から読み込んだアトリビュートを書き込めるようにするには、 VEXコードがバインドしていないことが条件になります。
Output Selection Group
出力選択として使用するグループの名前を指定します。 Rig Attribute Wrangleノードに対してHighlightフラグを有効にすると、このグループ(存在している場合)が、後のモデリングツールで使用される出力選択になります。
VEX Precision
VEXは、32ビットまたは64ビットの精度で評価することができます。 64ビットの方が特にトランスフォームでは精度が高いです。
Note
入力のアトリビュートは、元の精度を維持するので、32ビットのポジションに対して64ビットVEXを使用すると、まず最初にそれらの位置が64ビットに変換されてから、処理が適用され、書き出し時に32ビットに変換して戻されます。
Autoモードは、入力ジオメトリの優先精度に基づいて32ビットと64ビットを切り替えます。 64ビット精度で実行すると、作成されたアトリビュートがどれも64ビットになります。 32ビット精度で実行すると、作成されたアトリビュートがどれも32ビットになります。 Attribute Castを使用することで、この優先精度を変更することができます。
Rig ¶
Viewport State
有効なビューポートステート名を指した文字列を指定します。
Compute Transforms for Output
有効にすると、出力のトランスフォームが計算されます。 出力の後に Compute Transform SOPを追加することと同じ挙動になります。
Compute Transforms for Input 1
有効にすると、Input 1のトランスフォームが計算されます。 その入力の前に Compute Transform SOPを追加することと同じ挙動になります。
Compute Transforms for Input 2
有効にすると、Input 2のトランスフォームが計算されます。 その入力の前に Compute Transform SOPを追加することと同じ挙動になります。
Compute Transforms for Input 3
有効にすると、Input 3のトランスフォームが計算されます。 その入力の前に Compute Transform SOPを追加することと同じ挙動になります。
Compute Transforms for Input 4
有効にすると、Input 4のトランスフォームが計算されます。 その入力の前に Compute Transform SOPを追加することと同じ挙動になります。
See also |