Wrangle(SOP)のVEX例文。メモより抜粋。
よう使うglobal変数
//SOP @Cd //Point Color @P //Point位置 @v //Point Velocity @ptnum //処理中のPoint番号 @pscale //Particle Scale @numpt //Point総数 @N //法線 //時間 @Frame; //Frame @Time; //Time
Attribute読み書きあれこれ
//Type別
f@Float = 1.0; //float
i@ID = @ptnum; //int
v@Vec = {0,1,2};//vector
u@UV = {4,5}; //vector2
s@Text = "name";//string
//個別にアクセス(位置)
@P.x = @P.x + rand(@ptnum);
@P.y = anoise(@P.y);
@P.z = fit01(@P.z,0,5);
//個別にアクセス(色)
@Cd = {1,0,0};
@Cd.g = @Cd.g+1;
Pointを追加する
vector pos = {0,0,0};
addpoint(geoself(), pos);
Primitiveを追加する(Line)
int prim = addprim(geoself(), "polyline"); addvertex(geoself(), prim, 0); addvertex(geoself(), prim, 1);
(ポイント0とポイント1を繋ぐ)
Primitiveを追加する2(Line)
int nPoly = chi("n");
int startPt = chi("stratPoint");
if(@ptnum == startPt){
int prim = addprim(0, "polyline");
for(int i=0; i<nPoly; i++){
addvertex(0, prim, @ptnum+i);
}
}
(指定したスタートポイントから、指定した数のポイントを繋ぐ)
Primitiveを追加する3(面)
int prim = addprim(geoself(), "poly"); addvertex(geoself(), prim, 0); addvertex(geoself(), prim, 1); addvertex(geoself(), prim, 2);
(ポイント0とポイント1とポイント2を繋いで面を作る)
Primitiveを追加する4(面)
int nPoly = chi("n");
if(@ptnum%3 == 0){
int prim = addprim(0, "poly");
for(int i=0; i<nPoly; i++){
addvertex(0, prim, @ptnum+i);
}
}
(ポイント3つごとに面をはる)
Pointを消す
if (@ptnum%5==0){
removepoint(geoself(),@ptnum);
}
(ptnumが5の倍数のpointを消す)
Primitiveを消す
if (@primnum%2==1){
removeprim(geoself(), @primnum, 1);
}
Groupを作る
if(@ptnum &amp;amp;amp;lt; chi('threshold')){
i@group_mygroup=1;
}
if(@ptnum == 10){
i@group_mygroup=0;
}
@group_*の形式でグループを設定、参照できる。*には任意のグループ名。int型。
グループに属するかどうかは@group_* == 1でチェックできる。
グループに追加する場合は、i@group_*=1
グループから外す場合は、i@group_*=0
Group作る(別解)
string gpName = "testGroup";
for(int i=0; i &amp;lt; @numpt; i++){
if(@P &amp;lt; 0){
setpointgroup(geoself(), gpName, @ptnum, 1 ,"set");
}
}
(primitiveのグループを作るときは”setprimgroup”)
記述からパラメータ作成

先に書いといて、横っちょにあるボタンを押すと、記述したパラメータを作成してくれる。
初期値はParameter Interfaceで設定しろってことかな。
使用バージョン:Houdini 14
Wrangleの記述方法はバージョンによって変更される場合があるので注意が必要。











コメント