返回首页 >> Maya文档 >> maya高级工作流: 结合使用约束和表达式以及动画层

高级工作流: 结合使用约束和表达式以及动画层


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

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

若要设置表达式以驱动含分层动画的对象,则必须找到与要驱动的属性相对应的层的混合节点。然后,设置该表达式以驱动该混合节点的“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)来编辑曲线。(请参见设定受驱动关键帧关系。)
•一旦多源约束移到动画层中,则无法向多源约束添加新目标。请改为创建含该约束的多个实例的多个层,然后调整层的权重值,以实现所需的效果。
请将您关于此页内容的评论发送给我们