约束可将某个对象的位置、方向或比例约束到其他对象。另外,利用约束可以在对象上施加特定限制并使动画过程自动进行。
例如,如果要快速设置一个雪橇从崎岖小山上滑下的动画,那么首先可能要使用几何体约束将雪橇约束到曲面。然后,可使用法线约束将雪橇平置于曲面上。创建这些约束后,在山顶和山脚为雪橇的位置设置关键帧。然后动画就完成了。
针对角色设置和动画,Maya 包括了以下约束:
请注意,其他软件包中使用术语“动画控制器”来指代 Maya 所说的“约束”。
您无需了解约束节点行为,也可以有效地使用约束。如果对约束还很陌生,那么可以跳过这一节。但是,如果熟悉约束节点行为,则可以更好地对约束操纵和性能进行控制。
对于场景中的每个对象,如果更改了对象节点或其历史记录(其输入或输出节点)中的任意节点,那么 Maya 将基于节点的节点行为属性对节点求值并更新显示。约束节点的节点行为属性可影响约束效果的计算和显示方式。
受约束对象是位置、方向等由最近曲面位置、目标向量方向或一个或多个目标对象位置驱动的对象。将一个或多个目标对象的位置称为目标点。将一个或多个目标对象的方向称为目标方向。
目标点是目标对象旋转枢轴的位置。如果存在多个目标对象,那么所有目标对象旋转枢轴的平均位置就是目标点。如果使用多个目标对象,则可以改变每个目标对象对目标点计算的影响。目标点可以是目标对象位置的加权平均,但某些目标对象会对目标点产生更大的影响。目标对象对加权平均的影响由目标对象的权重指定。通过移动每个目标对象的旋转枢轴,可以更改目标点。
目标方向就是目标对象的方向(“旋转 X”(Rotate X)、“旋转 Y”(Rotate Y)和“旋转 Z”(Rotate Z)属性)。如果存在多个目标对象,那么所有目标对象的平均方向就是目标方向。但是,如果使用多个目标对象,则可以改变每个目标对象对目标方向计算的影响。目标方向可以是目标对象方向的加权平均,但某些目标对象会对目标方向产生更大的影响。目标对象对加权平均的影响由目标对象的权重指定。
目标缩放就是目标对象的缩放(“缩放 X”(Scale X)、“缩放 Y”(Scale Y)和“缩放 Z”(Scale Z)属性)。如果存在多个目标对象,那么所有目标对象的平均缩放就是目标缩放。但是,如果使用多个目标对象,则可以改变每个目标对象对目标缩放计算的影响。目标缩放可以是目标对象缩放的加权平均,但某些目标对象会对目标缩放产生更大的影响。目标对象对加权平均的影响由目标对象的权重指定。
目标向量或加权平均向量表示在受约束对象位置上的法线向量。Maya 会将目标向量计算为曲面或网格上相邻法线向量的加权平均。
可以为每个目标对象指定目标对象权重,用于控制对象对目标点、目标方向、目标缩放、目标向量等计算的影响。生成的加权平均将驱动受约束对象的位置、方向等。当目标对象的权重为 0 时,目标不会对受约束对象产生影响。当目标对象的权重为 1 时,目标会充分发挥对受约束对象的影响。
受约束对象的位置由目标点驱动。但是,可以从目标点偏移受约束对象的位置。从目标点偏移受约束对象的位置适用于不希望受约束对象的局部轴与目标点完全重合的情况。例如,如果要将一个球约束到角色手中的关节,从而让手拿着球,就需要从关节偏移球。通过偏移,可以让球位于手掌中,而不是在手的内部居中。
受约束对象的方向由目标方向驱动。
受约束对象的缩放由目标缩放驱动。
创建约束与选择要约束对象一样简单,只需选择要约束的对象,然后从“约束”(Constrain)菜单中选择相应的约束。当您的要求超出约束默认选项时,约束的使用就会变得更加复杂。
有些约束将锁定某些受约束对象的通道。例如,目标约束将锁定其受约束对象的方向通道(“旋转 X”(Rotate X)、“旋转 Y”(Rotate Y)和“旋转 Z”(Rotate Z))。哪一个通道处于锁定状态将指示您如何能在对象上使用多个约束。对于给定对象,可以使用目标约束、法线约束、切线约束中的任一种,因为这些约束中的每一个约束都将锁定受约束对象的方向通道。
约束锁定的属性也可以阻止这些属性上表达式的使用。如果已锁定属性位于关节上,那么这些已锁定属性可以防止骨架返回到其绑定姿势。