在以下步骤中,您将创建默认球体并编写表达式,以便根据动画播放时间增加其“缩放 Y”(Scale Y)属性。在前两秒动画时间内,“缩放 Y”(Scale Y)随 time 值增加。在两秒及之后的时间内,“缩放 Y”(Scale Y)将不再增加。          

使用条件语句创建表达式        

  1. 确保已完成课程准备中的步骤。

    在原点处创建 NURBS 或多边形球体。在“属性编辑器”(Attribute Editor)中,单击变换节点(“nurbsSphere1”“pSphere1”)。

    确保 X 缩放、Y 缩放和 Z 缩放值等于 1。将球体重命名为 Balloon。                

    提示                      

    可以禁用“创建 > 多边形基本体”(Create > Polygon Primitives)“创建 > NURBS 基本体”(Create > NURBS Primitives)下的“交互式创建”(Interactive Completion)选项,且默认情况下,您将在原点处创建 X、Y 和 Z 缩放值均为 1 的球体。            

    转到开始时间。

    选定 Balloon 后,选择“窗口 > 动画编辑器 > 表达式编辑器”(Window > Animation Editors > Expression Editor)

    输入该表达式:                

    if (time < 2)
    	Balloon.scaleY = time;
    

    该表达式是一个 if 语句。if 关键字导致表达式基于两个或多个项的比较作出决定。本例中,表达式会将 time 值与值 2 进行比较。                

    表达式会检查 time 的值是否小于 2 秒。如果小于 2 秒,将指定 Balloon.scaleY = time。如果 time 不小于 2 秒,则不会进行指定。                

    注意                      

    将 time 的值与表达式中的数字进行比较时,Maya 将 time 解释为秒而不是毫秒、分钟或其他任何单位的时间。在本例中,Maya 将 2 解释为 2 秒。                      

    请注意指定 Balloon.scaleY = time 时的格式设置方式,看看它是如何在 if (time < 2) 下方缩进的。Maya 会忽略语句之间的所有缩进、额外空格以及空行。我们使用缩进让表达式更清楚易读。也可按如下方式编写表达式:                

    if (time < 2) Balloon.scaleY = time;
    

    这样就不方便阅读了。保持一致且有条理的间隔是良好的开发习惯。本课程将尝试尽可能提供良好间隔样式的示例。                

    单击“创建”(Create)以编译表达式。                

    球将展平。                

                   

    单击“创建”(Create)时会执行表达式。因为动画位于第 0 帧,因此动画时间为 0。因为 time 小于 2,Maya 会将 Balloon.scaleY 设定为等于 time 的值,即 0。                

    scaleY 值为 0 会导致在 Y 尺度展平对象。                

    播放动画。                

    展平的 Balloon 的比例沿其 Y 轴增加。它将在动画播放期间膨胀。                

                   

    在两秒及之后的时间内,Balloon 将不再膨胀。                

    如果 time 大于等于 2,if 条件将不再为 true。随后的 Balloon.scaleY = time 语句也不再执行。scaleY 属性的值保持为在 time 变为 2 之前具备的最后一个值,具体而言是 1.9583。                

    请回忆一下,本例使用的帧速率为每秒 24 帧。time 和 Balloon.scaleY 在不同帧处具有以下值:                    

    time(以秒为单位) Balloon.scaleY (time)
    0 0 0
    1 0.0417 0.0417
    2 0.0833 0.0833
    3 0.125 0.125
    24 1.0 1.0
    47 1.96 1.9583
    48 2.0 1.9583
    49 2.04 1.9583

    if 语句的条件 (time < 2) 是一个比较。条件必须由圆括号包围,以便将其与跟随在其后的指定隔开。                

    条件中的 < 是一种关系运算符。关系运算符测试一个值与另一个值具有什么关系。在本例中,< 测试 time 是否小于 2。                

    除了本例中显示的 < 运算符外,还有几种其他关系运算符,例如 >、>=、== 等。

  2. 停止播放动画并转到开始时间。Balloon 将再次展平,因为 scaleY 属性在您转到开始时间时变为 0。time 为 0,因此 scaleY 也为 0。

,