常用表达式
本主题列出了一些在设置动画时可能比较有用的表达式。
圆形路径
[ Radius * cos(360*Time),Radius * sin(360*Time), 0 ]
其中 Time 是一个预定义的时间变量,如 NT 或 S。
如果使两个“半径”值不相等,将得到一个椭圆形路径。
如果指定了一个非零 Z 分量,该路径就不再是平面。
跟随另一个对象
[X, Y, Z] + Position
其中 Position 是第二个对象的“位置”控制器。
向量 [X, Y, Z] 可以是到第二个对象的偏移。(如果为 [0,0,0],两个对象就处在相同的位置上。)它也可以是指定了其自身内某些运动的向量表达式。
在两个对象之间保留一个对象
(Position1 + Position2) / 2
其中 Position1 和 Position2 是两个对象的“位置”控制器。
分数 2 约束了位于两个其他对象之间中途的对象。其他值将该对象约束到其他的位置。
在其他对象之间反弹
(1+sin(360*Time))/2 * (Pos1-Pos2) + Pos2
其中 Time 是一个预定义的时间变量,诸如 NT 或 S;Pos1 和 Pos2 是两个其他对象的“位置”控制器。
次表达式 (1+sin(360*Time))/2 是随着时间在 0 和 1 之间摆动的值。(Pos1-Pos2) 是两个其他对象之间的向量。将两者相乘,随后再把 Pos2 作为偏移加上,就将对象沿着这个向量进行了定位。
基于摄影机距离更改对象的分段数
此表达式基于摄影机的距离而改变圆柱体内的分段数。它指定给了圆柱体的“分段”创建参数。
if ( (length(Camera-Myself) > 35),3 + (50*Height) / length(Camera-Myself),MaxSegs)
其中 Camera 是摄影机的位置控制器;Myself 是圆柱体的位置控制器;Height (= 70) 是圆柱体的高度;MaxSegs (=100) 是分段的最大数目。
当摄影机靠的越近,更多的分段使得圆柱体更为平滑;当摄影机比较远时,平滑就不那么重要,分段数也就越少而渲染就进行得更快。
当第一个参数为真时,if() 函数就会返回它的第二个参数;否则,就返回它的第三个参数。在本例中,如果摄影机离圆柱体的距离超过了 35 单位,表达式就会计算分段数;如果摄影机距圆柱体 35 单位远或更近,分段数的值就是 MaxSegs 常量。
选定第二个参数中的值,这样随着距离朝着阈值 35 减小,分段数就会朝着 MaxSegs 增加。加法“3+”保证了圆柱体至少具有三个分段,即使除法的结果到了零(分段是一个整数)。
注意对于表达式,摄影机或圆柱体或是这两者是否移动显得无关紧要。
,