On this page | |
Since | 12.5 |
概要 ¶
これは非常に強力な低レベルにアクセス可能なノードであり、VEXに詳しい熟練者が、コードを使ってアトリビュートを調整することができます。
このノードは、Attribute VOP SOPに相当しますが、VOPネットワークの代わりにテキストのVEXスニペットを使用します。
Warning
このノードを扱うには、VEX言語を理解している必要があります。 そうでないと、このノードを使えば不正なコードを記述しがちです。
このノードは、入力ジオメトリ内の DetailまたはすべてのPoint/Primitive/Vertex ( Class パラメータに依存)に対してスニペットを実行します。 スニペットは、アトリビュートを変更することで、入力ジオメトリを編集することができます。 アトリビュートとVEX関数を使うことで、他のジオメトリの情報にアクセスすることができます。
-
ノードをクリックすると、スニペットからのエラー出力を確認することができます。
-
VEX関数の
ch
を使ってパラメータを評価することができます。 パスは、このノードの相対パスです(ch("parm")
は、このノードのparm
パラメータを評価します)。 この評価は、現行時間で実行されます。 -
Attrib 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 のマッピングをセットアップします。
IntegerアトリビュートはIntegerパラメータにバインド(紐付け)します。 Floatアトリビュートは、タプルのサイズに応じてFloat、Vector、Point、Matrix、Matrix4にバインド(紐付け)します。 Stringアトリビュートは文字列にバインド(紐付け)します。
Autobind Groups by Name
自動的に任意のグループをgroup_
で始まるIntegerパラメータにバインド(紐付け)します。
なにかしらの理由でCVEXパラメータを、それに該当するグループとは別の名前にしたい場合には、これをオフにして、 Group Bindings パラメータを使って、 Group Name と VEX Parameter のマッピングをセットアップします。
Group Bindings
各グループのバインド(紐付け)を手動で指定します。
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
コンパイルすると、Attribute VOPは入力ジオメトリをコピーせずにその場でそのジオメトリを処理することができます。 これによって、コピーの工程が1つ減るので処理が高速化されますが、1番目の入力から読み込んだアトリビュートを書き込めるようにするには、 VEXコードがバインドしていないことが条件になります。
Output Selection Group
出力選択として使用するグループの名前。 このノードに対してhighlightフラグを有効にすると、このグループ(存在している場合)が、後のモデリングツールで使用される出力選択になります。
VEX Precision
VEXは、32ビットまたは64ビットの精度で評価することができます。 64ビットの方が特にトランスフォームでは精度が高いです。
Note
入力のアトリビュートは、元の精度を維持するので、32ビットのポジションに対して64ビットVEXを使用すると、まず最初にそれらの位置が64ビットに変換されてから、処理が適用され、書き出し時に32ビットに変換して戻されます。
Autoモードは、入力ジオメトリの優先精度に基づいて32ビットと64ビットを切り替えます。 64ビット精度で実行すると、作成されたアトリビュートがどれも64ビットになります。 32ビット精度で実行すると、作成されたアトリビュートがどれも32ビットになります。 Attribute Castを使用することで、この優先精度を変更することができます。
Examples ¶
AddPoint Example for Attribute Wrangle geometry node
このサンプルでは、Attribute Wrangle SOPとaddpoint()VEXエクスプレッションを使って、単一の新しいポイントを追加する方法を説明しています。
CentroidPoints Example for Attribute Wrangle geometry node
このサンプルでは、primintrinsic関数を使用して、プリミティブの頂点数を取得する方法を説明しています。 最初に、プリミティブ-頂点の組を線形頂点値に変換してから、その線形頂点値で参照されたポイントを検索することで その頂点に該当するポイントを見つけることができます。
See also |