约束
动画过程中,可能在一些情况下你需要将元素附加到一起,而不在大纲视图或控制点层级中造成更改。这种附加称为 约束 。虚幻引擎中的约束分解为不同的方法:位置(Position) 、 旋转(Rotation) 、 缩放(Scale) 、 父节点(Parent) 和 LookAt 。通过这些方法,你可以设置选项来控制这些约束的运作方式,例如控制附加偏移和将约束烘焙回法线关键帧。
本文档概述了Sequencer中的约束,以及每种约束方法的不同工作流程。
先决条件
- 你已经创建 控制绑定资产(Control Rig Asset) 。有关如何执行此操作的信息,请参阅控制绑定快速入门指南页面。
- 动画过程中的约束通过动画模式面板访问,因此需要启用 动画模式(Animation Mode) 。
- 约束主要依赖于使用在 Sequencer 中使用控制绑定,因此需要具备Sequencer的基础知识。
创建约束
- 在启用动画模式后,约束信息以及用于添加约束的工作流程位于"动画(Animation)"面板中。
约束通过在两个或更多对象之间创建 父子(Parent - Child) 关系来建立。要创建新约束,首先选择你想约束的控制点(子),然后点击 添加约束(Add Constraint (+)) 并选择约束类型。你的光标会变为滴管工具,可用于在视口中选择要约束到的对象(父)。

约束不限于控制绑定元素,你可以约束任意对象或Actor。此外,无需打开Sequencer就可以约束Actor。
创建约束后,你可以在受约束控制点的Sequencer中查看其关键帧信息。大部分约束还将创建补偿性关键帧,以在约束激活时维护子节点的当前视觉位置。这些补偿性关键帧链接到约束关键帧,如果你更改了时序,会遵循约束关键帧。

约束用法
选择受约束控制点时,你的约束还可以在动画面板的 约束(Constraints) 分段中查看。这里你可以创建新的约束关键帧,编辑约束的属性,并将约束烘焙回法线关键帧。
如果你将多个约束应用于某个对象,它们也会显示在此处。播放或推移序列时,每个约束通过在变为活动或非活动状态时高亮显示来表示其状态。
约束条目的按钮提供了以下功能:
| 按钮 | 说明 |
|---|---|
| 在Sequencer中的当前时间创建约束的活动关键帧。如果约束已经处于活动状态,将改为创建停用关键帧。此我还会创建补偿性关键帧,以在受约束对象上维护相同的世界位置 | |
| 如果同一个对象上有多个约束,这些按钮会在列表中将约束上移或下移。虚幻引擎中的约束是分层的,会覆盖列表中更高位置的其他约束(仅当这些约束对相同通道制作动画时)。新约束始终优先于旧约束,并且放在列表中较低位置。 由于约束可以被覆盖,因此并非总是需要停用其他约束。例如,由于父节点约束对控制点的所有变换通道制作动画,所以只要激活的约束有更高优先级,只需激活这一个约束就足以实际上停用其他全部约束。在此例子中,虽然两个约束都处于活动状态,但只有 根 约束提供了约束效果,因为它在列表中更低位置,拥有更高优先级 | |
| 移除此约束。 |
右键点击约束条目将显示上下文菜单,可用于编辑特定于该约束类型的属性,烘焙约束,并设置补偿性关键帧。

烘焙约束
完成约束的动画制作之后,你可以将最终效果烘焙到关键帧。这适合用于恢复到法线关键帧动画,进行进一步编辑,而不必考虑约束。
要烘焙所选控制点,请右键点击约束条目,然后选择 烘焙(Bake) 。

补偿关键帧
动画过程中,可能在一些情况下约束会在激活或停用时表现出明显的中断。如果你在约束创建之后调整父节点的姿势,常常会发生此情况,这会打破原始补偿性关键帧所提供的视觉匹配。
要解决此问题,请选择发生问题的控制点,右键点击该约束,然后选择 补偿关键帧(Compensate Key) 。你还必须确保Sequencer 播放头(Playhead) 位于你想修复的约束关键帧所在时间。这将为父对象的新位置重新创建新的补偿性关键帧。

补偿关键帧(Compensate Keys) 可用于解决单个约束的错误,而 补偿所有关键帧(Compensate All Keys) 也可以用于为序列中每个受约束控制点重新创建所有补偿性关键帧,无论选择内容或播放头位置如何。
动态偏移
默认情况下,你可以对受约束对象以及影响它的约束设定关键帧。如果你想禁用此选项,不允许子对象制作动画,请右键点击该约束,然后禁用 动态偏移(Dynamic Offset) 。这会将受约束对象的位置锁定在当前变换处,现在它仅在父对象移动时才会移动。

约束管理器
随着你在关卡序列中约束许多对象,管理和查看你的约束可能变得越来越困难。你可以使用 约束管理器Actor(Constraints Manager Actor) 来查看和管理关卡中的所有约束。
首次创建约束时, 约束管理器Actor(Constraints Manager Actor) 会自动在你的关卡中创建,选择它会将所有使用的约束合并到单个列表中。这样就更容易同时在多个对象上查看和管理大量约束。

约束类型
点击 添加约束(Add Constraint (+)) 时可以创建以下约束类型:

- 平移约束
- 旋转约束
- 缩放约束
- 父节点约束
- LookAt约束
平移约束
平移约束(Translation Constraints) 仅沿平移轴约束对象。它遵循父节点位置,但不遵循其旋转或缩放。
如果从约束上下文菜单禁用了 维持偏移(Maintain Offset) ,则受约束对象按绝对坐标遵循父对象位置,而不是相对于创建约束时。

旋转约束
旋转约束(Rotation Constraints) 仅沿旋转轴约束对象。它遵循父节点旋转,但不遵循其平移或缩放。
如果从约束上下文菜单禁用了 维持偏移(Maintain Offset) ,则受约束对象按绝对坐标遵循父对象旋转,而不是相对于创建约束时。

缩放约束
缩放约束(Scale Constraints) 仅沿缩放轴约束对象。它遵循父节点缩放,但不遵循其平移或旋转。
如果从约束上下文菜单禁用了 维持偏移(Maintain Offset) ,则受约束对象按绝对坐标遵循父对象缩放,而不是相对于创建约束时。

父节点约束
父节点约束(Parent Constraints) 沿所有轴和通道将对象约束到父节点,如同是分层附加的那样。
默认情况下,缩放未包含在父节点约束中。要包含缩放,请右键点击约束条目并启用 缩放(Scaling) 。

与其他约束类型相似,禁用 维持偏移(Maintain Offset) 会导致受约束对象按绝对坐标遵循父节点变换,而不是相对于创建约束时。
LookAt约束
LookAt约束(LookAt Constraints) 通过瞄准父节点位置,仅沿旋转轴约束对象。
你可以右键点击约束条目并编辑 轴(Axis) 属性来设置子对象的瞄准方向。
不同于其他瞄准类型的附加,LookAt约束不会用尽向量。相反,你可以对 滚动(roll) 轴制作动画,手动控制滚动的行为。这还适合用于消除旋转翻转问题,这些问题在其他瞄准类型附加中很常见。

