以下示例显示了如何使用表达式控制器来设置对象动画。
该示例分为四个阶段:
- 创建表达式
- 修改表达式
- 在表达式中使用变量
- 设置表达式动画
要创建一个在精确的圆内移动球体的表达式,请执行以下操作:
- 创建一个半径为 15.0 的球体。
使用“轨迹视图”来创建“表达式”控制器。
- 在活动视口中,右键单击球体,然后单击“曲线编辑器”。
- 在“层次”列表中,下滚至“对象”分支,如有必要,展开 Sphere001 分支以使该球体的“位置”轨迹可见。单击“位置”标记以使其高亮显示。
- 在“层次”列表中,右键单击“位置”标签,然后单击“指定控制器/节点”。
3ds Max 将打开“指定控制器”对话框。
- 从控制器类型列表中选择“位置表达式”,然后单击“确定”。
3ds Max 将打开“表达式控制器”对话框。
- 在“表达式”字段中输入以下位置表达式来替换默认表达式:
[100*cos(360*NT), 100*sin(360*NT), 0]
表达式为该球体指定了一个圆形路径。NT 是一个变量,表示“规格化时间”。 基于 NT 的运动在每个活动时间段恰好发生一次,无论动画中有多少帧。
- 单击“计算”。
- 播放动画。该球体绕着世界原点 (0,0,0) 在圆内移动。圆形路径的半径为 100 个单位。
要更改圆的半径,请执行以下操作:
上一步骤位置表达式中的两个 100 指定了半径。要调整圆路径的半径,可以创建一个符号变量来表示该半径。该变量有一个易于编辑的常量值。
- 如有必要,重新打开“轨迹视图”和“表达式控制器”对话框。
- 在“表达式控制器”对话框的“名称”字段中,输入半径,确保选中“标量”,然后单击“创建”。
变量名称“半径”出现在该对话框的“标量”列表中。
- 单击“指定常量”。
3ds Max 将打开一个名为“半径”的对话框。
- 在“值”字段,输入 150,然后单击“确定”。
半径变量现在为 150。
接下来,您需要将文本值替换为变量名,以便在表达式中使用新变量。
要在表达式中使用新变量,请执行以下操作:
- 在“表达式”字段中,将两处 100 都改为 radius。表达式如下:
[radius*cos(360*NT), radius*sin(360*NT), 0]
- 单击“计算”。
- 播放动画。该球体绕着世界原点 (0,0,0) 在圆内移动。圆形路径的半径为 150 个单位。
要使球体绕长方体旋转,请执行以下操作:
- 创建一个 40 个单位见方的长方体,并在三个或四个关键帧上设置它位置的动画。
- 选择球体。
- 在“表达式控制器”对话框的“名称”字段中,输入 boxposn。选择“向量”,然后单击“创建”。
“boxposn”会显示在该对话框左下方的“向量”列表中。
变量名称对大小写敏感;变量名称应该小写。
- 单击“指定控制器”。
显示“轨迹视图拾取”对话框。该对话框在“轨迹视图 - 摄影表”的左侧出现时,同时显示了对象层次。
- 在“层次”列表中,高亮显示 Box001 的位置控制器,然后单击“确定”。
- 在“表达式”字段,将 boxposn 作为偏移做加法运算:
[radius * cos(360*NT), radius * sin(360*NT), 0]+boxposn。
- 单击“计算”,然后单击“关闭”。
再次播放动画。该球体绕着长方体在圆内移动,无论长方体移动到哪儿,它都会跟着移动到哪。
注: 如果在步骤 5 中为 Box001 拾取位置控制器,则变量将保留位置控制器的值。该位置值是相对于父节点的(如果有)变换的。如果拾取节点 Box001,则变量将保留 Box001(父对象的变换 + 节点的变换)的世界位置。