Action Constraint 动作关系约束

动作关系 是很强大的的约束。它允许你通过另一个物体的变换控制约束对象的 动作

动作关系 约束的基本作用非常类似于 驱动 ,只是前者使用于整个动作(即一堆相同类型的 F 曲线),而后者则控制“自身”的单一F曲线…

请注意,即使该约束接受 网格 操作类型,但只有 物体姿势约束 类型才会真正的工作(起作用),因为约束只能影响物体或骨骼的变换属性,而不能影响网格的形状。还要注意,只有物体变换(位置、旋转、缩放)受动作影响,如果动作包含其他关键帧属性它们将会被忽略的,作为约束不会影响那些属性。

作为一个例子,让我们假设你已经定义了一个 物体 动作(它可以被指定给任何物体,甚至不指定物体),并通过 动作关系 约束已映射到你的自身,使目标在(0.0到2.0)范围内沿着它的X轴映射动作内容在其自身(0到100)帧范围内移动。这将意味着当目标的 X 属性为0.0时,自身将如同在链接动作的第0帧中一样;目标的 X 属性为1.0,自身将如同在链接动作的第50帧中一样。

选项

../../../_images/animation_constraints_relationship_action_panel.png

Action panel.

Target 目标

数据ID used to select the constraints target, and is not functional (red state) when it has none. See common constraint properties for more information.

混合

指定如何将动作中的关键帧变换与现有变换相结合。

  • 初始前

    动作变换添加到现有变换之前,就像应用于约束所有者的假想父级一样。缩放的处理方式与骨骼的 对齐继承缩放 类似,以避免创建剪切。

    初始后

    动作变换在现有变换后添加,就像它在本地应用于约束所有者的假想子级一样。缩放的处理方式与骨骼的 对齐继承缩放 类似,以避免创建剪切。

    初始后(全比例)

    动作变换在现有变换后添加,就像它在本地应用于具有普通父项约束所有者的假想子级一样。此模式可能创建剪切,因此不建议使用。

Influence

Controls the percentage of affect the constraint has on the object. See common constraint properties for more information.

Target 目标

Channel

该选择控件选择从目标使用“动作关系”的哪个变换属性(沿/围绕它那个轴位置,旋转或缩放)。

Target Space 目标空间

此约束允许您选择在哪个空间计算其目标的变换属性。

Range Min, Max

驱动变换属性值的下限和上限。

Warning

坏消息是,我们发现这动作关系约束有它的局限性:

  • 当使用旋转属性作为”动作”时,这些值将”重新映射”到(180.0 到-180.0) 的范围。

  • 当使用缩放属性作为”动作”时,这些值被限制为无效值或者正值。

Action

Action

选择要使用的动作的名称。

Warning

尽管它可能不处于红色状态(UI刷新问题),但当这里没有选择有效的动作时,此约束显然不起作用。

Object Action 物体动作

当它启用时 仅仅 用于骨骼,此选项将使受约束的骨骼使用链接动作的“物体”部分,而不是“同样命名的姿势”部分。这允许你将物体的动作用应用于骨骼。

Frame Start, End

要映射的动作的开始和结束点。

Note

  • 这些值必须严格正数。

  • 这两个值默认为0,即禁用映射(即自身只获取在链接动作的第0帧定义的属性…)。

注意

  • 当物体或骨骼已具有 动作约束时,应在所有其他约束之前添加使用新插帧操作的下一个约束,以便获得相同的最终组合变换。此事实不受混合模式的影响。

  • 与正常情况不同的是,你可以有 起始 的值高于 结束点 的值,或者 最小值 大于 最大值 的值:这将会翻转动作的映射关系(即将“播放”反转…),除非你们两套都显然颠倒了!

  • 当使用 约束 动作时,它是约束 通道 名称,用来决定自身的哪些约束应用于该动作。例如,如果你有一个约束通道命名为“trackto_empt1”,其键 影响起始/结束 值(唯一可以键入的)将被映射到的自身的约束命名为“trackto_empt1”那一个。

  • 同样,当使用 Pose(姿势) 动作时(这显然当它约束骨骼时才有意义和能够工作!),它是用来确定那一个来自动作的骨骼 channel’s names(通道名) 被使用。(例如,如果受约束的骨骼被命名为“手臂(arm)”,它将使用并且仅使用名为“手臂(arm)”的动作的骨骼通道…)。不幸的是,在整个骨架对象上使用 Pose 动作(一次影响动作中的所有关键骨骼)将不起作用…

  • 请注意,你可以使用 姿态库功能 创建/编辑 Pose(姿势) 动作数据块…只要记住,在这种情况下,每帧有一个姿势!

Example