Houdini VEX:几何体函数¶
| addpoint() | 添加点到几何体 |
| addvertex() | 添加顶点到几何体上的面 |
| addprim() | 添加面到几何体 |
| removepoint() | 删除点 |
| removeprim() | 删除面 |
| removevertex() | 删除顶点 |
使用add创建一个四角锥或者Attribute Wrangle创建一个四角锥,注意面法线方向。
int p0 = addpoint(geoself(), {1, 0, 1});
int p1 = addpoint(geoself(), {1, 0, -1});
int p2 = addpoint(geoself(), {-1, 0, 1});
int p3 = addpoint(geoself(), {-1, 0, -1});
int p4 = addpoint(geoself(), {0, 1.5, 0});
addprim(geoself(), "poly", p0, p1, p3, p2);
addprim(geoself(), "poly", p2, p4, p0);
addprim(geoself(), "poly", p0, p4, p1);
addprim(geoself(), "poly", p1, p4, p3);
addprim(geoself(), "poly", p3, p4, p2);
if (@P.x < 0) {
removepoint(geoself(), @ptnum);
}
for (int i = 0; i < chi("num"); i++) {
addpoint(geoself(), set(0, 0, i * chf("size")));
}
setprimintrinsic() setvertexpoint(0, 2, 0, 0);
primvertices() primvertex() primvertexcount() primpoints() primpoint()
pointprims() pointvetices() pointvertex() vertexpoint() vertexprev() vertexnext() vertexindex() vertexprim() vertexprimindex()
顶点序号
线性顶点序号
int lvt0 = pointvertex(0, 7);
int lvt1 = pointvertex(0, lvt0);
int lvt2 = pointvertex(0, lvt1);
setvertexattrib(0, "Cd", -1, lvt0, {1, 0, 0});
setvertexattrib(0, "Cd", -1, lvt1, {0, 1, 0});
setvertexattrib(0, "Cd", -1, lvt2, {0, 0, 1});