Houdini 17.5 VEX

VEXでジオメトリグループを扱う方法

VEXでは、プリミティブ/ポイント/頂点のグループの内容をアトリビュートと同じように読み込むことができます。

On this page

専用関数

VEXには、ジオメトリグループを扱うための関数がいくつかあります:

グループ内のエレメントの数を取得します

指定したエレメント番号がグループ内にあるかどうかをテストします

グループ名またはグループ構文をポイント番号/プリミティブ番号のリストに変換します

指定した名前のグループの内容を編集します

存在していないグループにエレメントを追加すると、そのグループが作成されます。

既存グループの取得

"intrinsic" Detailアトリビュートのedgegroups, pointgroups, primitivegroups, vertexgroupsを読み込むことで、 既存のグループ名の配列を取得することができます。

string groups[] = detailintrinsic(0, "pointgroups")

グループをアトリビュートとして読み込む

一般的なアトリビュートを読み込む関数のattribattribclass引数にジオメトリレベル(Detail, Primitive, Point, Vertex)を指定することで、そのレベルのアトリビュートを読み込むことができます。

代わりにprimgroup, pointgroup, vertexgroupをクラスとして指定することで、アトリビュートと同じようにグループの内容を読み込むことができます。

これらのクラスを指定した時、"エレメント番号"はグループリスト内のインデックスになり、"アトリビュート値"は、そのリストの指定したインデックスのポイント/プリミティブ/頂点の番号になります。

fooプリミティブグループ内のプリミティブ番号を取得します

int group_size = attriblen()
int prim_num;
for (int i = 0; i < group_size; i++) {
    // "*group"クラスを使用すると、そのエレメント番号がグループリストのインデックスになります。
    prim_num = attrib(0, "primgroup", "foo", i)
    // ...プリミティブに何かしらの処理をします...
}

VEX

言語

次のステップ

リファレンス