Houdini VEX:属性 创建属性 int @num = 100;i@num = 100;int @num[];i[]@num = {100, 200};
两种方案的区别有一些,i@num可以使用表达式运算或者函数返回值,数组属性不简写不能赋初始值。 vector @up = {0, 1, 0};v@up = set(0, 1, 0);
内置属性不用指定数据类型,比如@ptnum,@N等,自定义属性如果不指定数据类型,默认初始化为浮点型数据。 所以为了和变量创建区别开推荐使用简写创建属性的方案。 i@i = 100; f@pi = 3.14; u@v1 = {1.0, 2.0}; v@v2 = set(1.0, $PI, 2.0); p@ 2@ 3@ 4@ s@ 数组属性 i[]@ f[]@ s[]@ 函数添加属性 addpointattrib(0, "Cd", {0, 0, 0});addvertexattrib(0, "Cd", {0, 0, 0});addprimattrib(0, "Cd", {0, 0, 0});adddetailattrib(0, "Cd", {0, 0, 0});
修改属性 setpointattrib(0, "Cd", 0, {0, 0, 0});setvertexattrib(0, "Cd", 0, {0, 0, 0});setprimattrib(0, "Cd", 0, 0, {0, 0, 0});setdetailattrib(0, "Cd", {0, 0, 0});
获取属性 float f1 = @P.y;float f2 = @opinput1_Cd.y;float f3 = v@opinput1_v1.y;vector c1 = point(1, "Cd", @ptnum);vector c2 = prim(1, "Cd", 0);vector c3 = vertex(1, "Cd", 0);vector c4 = detail(1, "Cd", 0);
全局属性 printf("%g\n", $PI);printf("%g\n", $E);printf("%g\n", @Frame);printf("%g\n", @Time);printf("%g\n", @Timeinc);printf("%g\n", @SimFrame);printf("%g\n", @SimTime);
内在属性 Intrinsic内在属性只有prim和detail上才会存在 prim() 读取属性 primintrinsic() 读取属性 setprimintrinsic() 设置属性 属性相关函数
|