[Hudini] vex: 判断语句和循环语句
if else 语句
1 P.x大于0的点变成绿色。

2 P.x大于0的点变成绿色,其他的变成红色。

3 P.x大于0的点变成绿色,其他的点如果P.z大于0变成红色,最后剩下的点变成蓝色。

4 if else的简写
1的简写

2的简写

2的终极简写

下图的写法报错,大概是赋值操作只能用上面那种写法。

这种可以

这种也可以

foreach loop 语句
foreach语句的特点是把数组成员的值带入到循环中。有两种形式,第二种形式还可以把当前数组成员的编号带入到循环中。

1 新建一个点当作当前几何体,在另一个几何体上寻找距离该点0.3范围内的点,根据这些点的位置添加新点到当前几何体中。

2 新建一个点当作当前几何体,在另一个几何体上寻找距离该点0.3范围内的点,根据这些点的位置添加新点到当前几何体中。然后根据距离的由近到远给他们一个排序值,0代表最近。(因为找到的点是根据距离由近到远在数组中排序,越靠前代表距离该点越近,我们把点在数组中的序号当作排序值。addpoint函数能够返回新建点的序号,我们根据这个序号给属性。)

for loop 语句
for loop的特点是可以通过循环的次数控制是否继续执行语句。

1 从第二十点开始,每隔一个点变成紫色,一直到计数器不再小于100。

do while 和 while 语句
while语句先判断条件是否成立,成立的话会一直执行。而do while先执行一次,再判断,也就是说无论条件成立与否,都会执行一次。
1 如果P.y小于15,Cd.g和Cd.b减少0.1,知道Cd.g小于等于0,移除该点。例子和图来源于Cg Forge vex部分。

2 只要时间小于2,Cd.g和Cd.b减小0.1。因为在dop里,每一个substep都会执行节点一次,而这个表达式是先执行再判断条件,所以即使时间大于2了,Cd值仍在减少。

break 语句
break 直接终止整个循环。一般和if语句配合使用,当达到某个条件时,终止整个循环。

continue 语句
continue 跳过当前循环,直接执行下次循环。一般和if语句配合使用,当达到某个条件时,终止当前循环。

一些教程里不太常见但是看上去挺有用的东西
1 @opinput1_P这种格式可以直接读取某个端口相同序号元素的属性。如果有id属性的话,会读取id相同的元素,匹配属性可以设置(下图2)。


2 用int(),float()来转换相应的数据类型。
