示例:使用表达式控制器设置对象动画

以下示例显示了如何使用表达式控制器来设置对象动画。

该示例分为四个阶段:

  1. 创建表达式
  2. 修改表达式
  3. 在表达式中使用变量
  4. 设置表达式动画

要创建一个在精确的圆内移动球体的表达式,请执行以下操作:

  1. 创建一个半径为 15.0 的球体。

    使用“轨迹视图”来创建“表达式”控制器

  2. 在活动视口中,右键单击球体,然后单击“曲线编辑器”。
  3. 在“层次”列表中,下滚至“对象”分支,如有必要,展开 Sphere001 分支以使该球体的“位置”轨迹可见。单击“位置”标记以使其高亮显示。
  4. 在“层次”列表中,右键单击“位置”标签,然后单击“指定控制器/节点”。

    3ds Max 将打开“指定控制器”对话框。

  5. 从控制器类型列表中选择“位置表达式”,然后单击“确定”。

    3ds Max 将打开“表达式控制器”对话框。

  6. 在“表达式”字段中输入以下位置表达式来替换默认表达式:

    [100*cos(360*NT), 100*sin(360*NT), 0]

    表达式为该球体指定了一个圆形路径。NT 是一个变量,表示“规格化时间”。 基于 NT 的运动在每个活动时间段恰好发生一次,无论动画中有多少帧。

  7. 单击“计算”。
  8. 播放动画。该球体绕着世界原点 (0,0,0) 在圆内移动。圆形路径的半径为 100 个单位。

要更改圆的半径,请执行以下操作:

    上一步骤位置表达式中的两个 100 指定了半径。要调整圆路径的半径,可以创建一个符号变量来表示该半径。该变量有一个易于编辑的常量值。

  1. 如有必要,重新打开“轨迹视图”和“表达式控制器”对话框。
  2. 在“表达式控制器”对话框的“名称”字段中,输入半径,确保选中“标量”,然后单击“创建”。

    变量名称“半径”出现在该对话框的“标量”列表中。

  3. 单击“指定常量”。

    3ds Max 将打开一个名为“半径”的对话框。

  4. 在“值”字段,输入 150,然后单击“确定”。

    半径变量现在为 150。

    接下来,您需要将文本值替换为变量名,以便在表达式中使用新变量。

要在表达式中使用新变量,请执行以下操作:

  1. 在“表达式”字段中,将两处 100 都改为 radius。表达式如下:

    [radius*cos(360*NT), radius*sin(360*NT), 0]

  2. 单击“计算”。
  3. 播放动画。该球体绕着世界原点 (0,0,0) 在圆内移动。圆形路径的半径为 150 个单位。

要使球体绕长方体旋转,请执行以下操作:

  1. 创建一个 40 个单位见方的长方体,并在三个或四个关键帧上设置它位置的动画。
  2. 选择球体。
  3. 在“表达式控制器”对话框的“名称”字段中,输入 boxposn。选择“向量”,然后单击“创建”。

    “boxposn”会显示在该对话框左下方的“向量”列表中。

    变量名称对大小写敏感;变量名称应该小写。

  4. 单击“指定控制器”。

    显示“轨迹视图拾取”对话框。该对话框在“轨迹视图 - 摄影表”的左侧出现时,同时显示了对象层次。

  5. 在“层次”列表中,高亮显示 Box001 的位置控制器,然后单击“确定”。
  6. 在“表达式”字段,将 boxposn 作为偏移做加法运算:

    [radius * cos(360*NT), radius * sin(360*NT), 0]+boxposn

  7. 单击“计算”,然后单击“关闭”。
    再次播放动画。该球体绕着长方体在圆内移动,无论长方体移动到哪儿,它都会跟着移动到哪。
    注: 如果在步骤 5 中为 Box001 拾取位置控制器,则变量将保留位置控制器的值。该位置值是相对于父节点的(如果有)变换的。如果拾取节点 Box001,则变量将保留 Box001(父对象的变换 + 节点的变换)的世界位置。