プリミティブを理解する上での基本ですね。
VEXで作成する
// Run Over: Detail
// プリミティブを作る
int prim = addprim(0, "poly");
// ポイントを生成
int pt1 = addpoint(0, set(-1,0,0));
int pt2 = addpoint(0, set(0,2,0));
int pt3 = addpoint(0, set(1,0,0));
// ポイントにアトリビュートを設定
setpointattrib(0, "N", pt1, set(0,0,1));
setpointattrib(0, "N", pt2, set(0,0,1));
setpointattrib(0, "N", pt3, set(0,0,1));
// ポリゴンにポイントを加える
addvertex(0, prim, pt1);
addvertex(0, prim, pt2);
addvertex(0, prim, pt3);
addprimの引数”poly”を”polyline”にすればポリラインに変わる。時計回りで描くとポリゴンが表になる。
Python SOPで作成する
同じ内容をPythonで書くとこのようになる。
# pointに新しくアトリビュートをつくる
geo.addAttrib(hou.attribType.Point, "N", (0,0,0))
prim = geo.createPolygon()
#prim = geo.createPolygon(False) # ポリラインならFalse
pt1 = geo.createPoint()
pt1.setPosition((-1,0,0))
pt1.setAttribValue("N", (0, 0, 1))
pt2 = geo.createPoint()
pt2.setPosition((0,2,0))
pt2.setAttribValue("N", (0, 0, 1))
pt3 = geo.createPoint()
pt3.setPosition((1,0,0))
pt3.setAttribValue("N", (0, 0, 1))
prim.addVertex(pt1)
prim.addVertex(pt2)
prim.addVertex(pt3)
環境:Houdini 19.5.752