本文最后更新于 2025-02-28,文章内容可能已经过时。

使用VEX语言

对每个物体随机旋转

matrix3 xform = primintrinsic(0,'transform',@ptnum);
//从当前几何体的原语属性中获取变换矩阵(transform matrix)。primintrinsic 函数返回指定原语属性的值,第一个参数是几何体的索引(0表示当前几何体),第二个参数是属性名称('transform'表示变换矩阵),第三个参数是原语的索引(@ptnum表示当前点的原语索引)
vector axis = normalize(rand(@ptnum));
//这一行代码从当前几何体的原语属性中获取变换矩阵(transform matrix)。primintrinsic 函数返回指定原语属性的值,第一个参数是几何体的索引(0表示当前几何体),第二个参数是属性名称('transform'表示变换矩阵),第三个参数是原语的索引(@ptnum表示当前点的原语索引)
float angle = ch('angle')*rand(@ptnum);
//计算一个随机的旋转角度,并将其存储在名为angle的变量中。ch('angle') 获取用户界面中命名为"angle"的控件(通常是一个滑块或输入框)的值,然后乘以 rand(@ptnum) 以引入一些随机性。

rotate(xform, angle, axis);
//使用 rotate 函数在变换矩阵 xform 上进行旋转操作。旋转角度由上面计算的 angle 决定,绕着 axis 定义的轴进行旋转。
setprimintrinsic(0,'transform', @ptnum, xform, 'set');
将修改后的变换矩阵 xform 更新到原语的属性中。setprimintrinsic 函数用于设置原语的属性,参数包括几何体索引(0表示当前几何体),属性名称('transform' 表示变换矩阵),原语索引(@ptnum 表示当前点的原语索引),变换矩阵 xform,以及最后的 'set' 表示设置操作。