On this page |
概要
これは非常に強力な低レベルにアクセス可能なノードであり、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
修正するジオメトリアトリビュートのクラス。 Numbers に設定した時、読み取り専用のDetailアトリビュート以外のアトリビュートはバインドされません。
Number Count
Run Over を Numbers に設定した時の反復数。
@elemnum
は0(含む)から始まり、この数(含まない)までの反復番号で、@numelem
はこの数です。
このモードの時は読み取り専用のDetailアトリビュート以外のアトリビュートはバインドされません。
Thread Job Size
Run Over を Numbers に設定した時に任意のスレッドで同時に走る反復最大数。 これが Number Count 以上の時、VEXコードはシングルスレッドで実行されます。 各反復に非常に長い時間がかかる場合は、これを1に設定します。とはいえ、この値を大きくすれば大きなメリットが得られることが多いです。特に各反復にかかる時間が短い場合や同時に複数の反復を実行しても処理が重複しない場合です。
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 |