可以使用含约束和表达式的动画层来驱动场景中的对象。有关将约束添加到动画层的信息,请参见为动画层添加约束。          

请注意,将表达式添加到动画层的工作流更加复杂,并且还有一些已知的限制。(请参见动画层和约束的已知限制)。          

若要设置表达式以驱动含分层动画的对象,则必须找到与要驱动的属性相对应的层的混合节点。然后,设置该表达式以驱动该混合节点的“inputB”属性。          

以下示例描述了如何将表达式添加到含分层动画对象的 translateY 属性中。          

创建可驱动分层动画的表达式          

  1. 创建新场景,并添加任何要使用表达式设置动画的对象。以下示例描述了如何设置球体的动画。

  2. 选择球体之后,单击“动画层编辑器”(Animation Layer Editor)中的 ,以创建包含球体属性的层。默认情况下,新层名为 AnimLayer1。                

    后续步骤描述如何将表达式添加到 AnimLayer1 以驱动球体的 translateY 属性。  

  3. 请执行下列操作之一,找到要连接表达式的混合节点:

    • “动画层编辑器”(Animation Layer Editor)中,选择“层 > 打包到资源中”(Layers > Package Into Assets)。(请参见将动画层打包到资源中。)                  

    • 打开“Hypergraph”窗口(窗口 > Hypergraph: 连接(Window > Hypergraph: Connections)),双击展开 AnimLayer1_Asset,然后双击展开嵌套的 AnimLayer1_BlendNodes 资源。                  

    • 选择 pSphere1_translateY_AnimLayer1 混合节点。                      

      这是与球体的 translateY 属性相对应的混合节点。              

  4. 打开“表达式编辑器”(Expression Editor)“窗口 > 动画编辑器 > 表达式编辑器”(Window > Animation Editors > Expression Editor))。

  5. 选择“属性”(Attributes)区域中的“inputB”,然后键入表达式以驱动“表达式”(Expression)区域中混合节点的“inputB”。                

    例如,若要添加可驱动球体的 translateY 值的正弦函数,请输入以下内容:                

    pSphere1_translateY_AnimLayer1.inputB = sin(time);              

  6. 单击“创建”(Create)。                

    现在,您为“inputB”属性写入的表达式将驱动 AnimLayer1 中的球体 translateY 动画。示例表达式使球体随着时间的变化沿正弦波上下移动。    

含约束和表达式的动画层的已知限制

使用含约束和表达式的动画层时,应注意以下已知限制和解决方案。  

  • 含约束或表达式的层无法使用动画层编辑器输出工具导出。(请参见导入和导出动画层。)                

  • “曲线图编辑器”(Graph Editor)并非完全支持含约束的动画层。与基础动画(BaseAnimation)关联的约束属性始终会显示,即使将它们添加到层也是如此。                

  • 一旦曲线添加到动画层,便不能使用“设置受驱动关键帧”(Set Driven Key)窗口编辑“设置受驱动关键帧”(Set Driven Key)曲线。但仍可以使用“曲线图编辑器”(Graph Editor)来编辑曲线。(请参见设置受驱动关键帧。)                

  • 一旦多源约束移到动画层中,则无法向多源约束添加新目标。请改为创建含该约束的多个实例的多个层,然后调整层的权重值,以实现所需的效果。


,