使用“表达式”控制器,可以用数学表达式来控制以下动画的有关方面:诸如长度、宽度和高度之类的对象参数,以及诸如对象的位置坐标之类的变换和修改器值。
可以基于场景中其他对象的控制器值来对值进行约束。
表达式是一种能得出数值的数学函数。3ds Max 会为动画的每一个帧对表达式求一次值,以生成可随帧而改变的值。
可以将表达式指定给以下几种场景元素:
场景元素 | 控制器 |
---|---|
创建参数 | 任意数字创建参数 |
变换 | 位置 [X、Y、Z] X 轴旋转 Y 轴旋转 Z 轴旋转 缩放 [X%、Y%、Z%] |
修改器 | 任意数字修改器参数(包括创建参数) |
材质 | 颜色 [R、G、B] 任意数字材质参数 |
要将常量值指定给变量,请执行以下操作:
3ds Max 将打开一个新对话框。
要将控制器指定给变量,请执行以下操作:
3ds Max 将打开“轨迹视图拾取”子对话框,显示轨迹层次。该对话框显示与“轨迹视图”层次相类似。
示例:要创建一个在精确的圆内移动球体的表达式,请执行以下操作:
使用“轨迹视图”来创建“表达式”控制器。
3ds Max 将打开“指定控制器”对话框。
3ds Max 将打开“表达式控制器”对话框。
[100*cos(360*NT), 100*sin(360*NT), 0]
表达式为该球体指定了一个圆形路径。NT 是一个变量,表示“规格化时间”。基于 NT 的运动在每个活动时间段恰好发生一次,无论动画中有多少帧。
继续示例:要更改圆的半径,请执行以下操作:
上一步骤位置表达式中的两个 100 指定了半径。要调整圆路径的半径,可以创建一个符号变量来表示该半径。该变量有一个易于编辑的常量值。
变量名称“半径”出现在该对话框的“标量”列表中。
3ds Max 将打开一个名为“半径”的对话框。
半径变量现在为 150。
接下来表达式使用了新的变量。
继续示例:要用变量名称替换文字值,请执行以下操作:
[radius*cos(360*NT), radius*sin(360*NT), 0]
继续示例:要使球体绕着长方体旋转,请执行以下操作:
“boxposn”会显示在该对话框左下方的“向量”列表中。
变量名称对大小写敏感;变量名称应该小写。
显示“轨迹视图拾取”对话框。该对话框在“轨迹视图 - 摄影表”的左侧出现时,同时显示了对象层次。
[radius*cos(360*NT), radius*sin(360*NT), 0]+boxposn.
再次播放动画。该球体绕着长方体在圆内移动,无论长方体移动到哪儿,它都会跟着移动到哪。
在单击“创建”之前,必须输入名称并指定类型。
首先高亮显示列表中的变量,这会将名称放入“名称”字段中。在“名称”字段中输入名称,然后单击“重命名”,新的名称将替换列表中旧的名称。
标量变量的常量指定
矢量变量的常量指定
在该列表中,p、q 和 r 表示标量值或标量表达式;V 和 W 表示向量值或向量表达式。
已保存的表达式并不包括变量定义或变量值。加载表达式后,需要将它们重新定义。
此窗口显示了所有的变量值,以及表达式的值。在更改变量或移动时间滑块时,“调试”窗口会自动进行更新,以交互式地察看表达式发生的变化。它同时也显示了帧 (F)、规格化时间 (NT)、秒 (S) 和 tick(T) 的值。
就如在常规程序设计语言中的一样,这里没有显示指定(= 或:= 操作符);指定是隐式的并随着时间而进行。
如果表达式出现了语法错误,就会显示错误消息。错误消息是表达式自身的第一部分。错误消息的最后一个字符是错误点。它通常是错误真正发生的地方,除非发生的问题是左括号和右括号(或向量括号)不匹配。在这种情况下,在检测到错误之前,计算可以进一步进行。