Action Constraint 动作关系约束
The Action constraint is powerful. It allows you control an Action using the transformations of another object.
Action 约束的基本思想与 驱动器 背后的思想非常相似,除了前者使用整个动作(即同一类型的多个函数曲线),而后者控制其 “所有者” 的单个函数曲线……
请注意,即使该约束接受 网格 操作类型,但只有 物体、姿态 和 约束 类型才会真正的工作(起作用),因为约束只能影响物体或骨骼的变换属性,而不能影响网格的形状。还要注意,只有物体变换(位置、旋转、缩放)受动作影响,如果动作包含其他关键帧属性它们将会被忽略的,作为约束不会影响那些属性。
作为一个例子,让我们假设你已经定义了一个 物体 动作(它可以被指定给任何物体,甚至不指定物体),并通过 动作关系 约束已映射到你的自身,使目标在(0.0到2.0)范围内沿着它的X轴映射动作内容在其自身(0到100)帧范围内移动。这将意味着当目标的 X 属性为0.0时,自身将如同在链接动作的第0帧中一样;目标的 X 属性为1.0,自身将如同在链接动作的第50帧中一样。
选项
目标
数据 ID 用于选择约束目标,当它没有时,就没有功能(红色状态)。参见 常见的约束属性 以获得更多信息。
估算时刻
这个属性允许在没有约束目标的情况下,通过在 动作开始 和 结束 帧之间插值来驱动对象。开始和结束帧之间的相对位置可以用数值滑块来控制。
这对更复杂的绑定和机械绑定非常有帮助,因为它意味着动作约束可以直接用 驱动器 或 自定义属性 控制。
混合
指定动作的关键帧变换与现有变换的结合方式。这些模式与 复制变形 约束中的相同。
原创前/原创后(全文)
关键帧的变换被添加到现有的变换之前/之后,就像它被应用于约束所有者的一个假想的父/子。刻度的处理就像在最基本的 完全继承比例 模式下的骨骼,所以结合非统一的刻度和旋转会产生剪切力。
初始前/初始后 (对齐)
关键帧的变换被添加到现有的变换之前/之后,就像它被应用于约束所有者的一个假想的父/子。尺度的处理与骨骼的 对齐继承缩放 模式一样,以避免产生剪切力。
这相当于使用 Split Channels 选项,但用 完整 的结果取代了位置部分。如果只使用统一比例,其结果与 完整 相同。
之前/之后的原件(分割通道)
分别组合变换的位置、旋转和比例成分,类似于将三个复制位置、复制旋转和复制缩放(带偏移)约束绑定在一个操作中;如果是剪切输入,结果可能略有差异。
与 对齐 不同的是,在这种模式下,位置通道被简单地加在一起,所以输入变换的旋转和缩放成分不能影响所产生的位置。
Warning
由于技术原因,除了 初始化后 (完整) 和 初始化后 (对齐) 模式外,对于没有父代的*物体(不是骨骼)的约束,可能无法像预期那样工作。
影响
控制约束对对象的影响百分比。有关详细信息,请参阅 通用约束属性。
目标
通道
该选择控件选择从目标使用 “动作关系” 的哪个变换属性(沿/围绕它那个轴位置,旋转或缩放)。
目标
此约束允许您选择在哪个空间计算其目标的变换属性。
范围 最小,最大
驱动变换属性值的下限和上限。
Warning
坏消息是,我们发现这动作关系约束有它的局限性:
当使用旋转属性作为
动作
时,这些值将重新映射
到(180.0 到-180.0) 的范围。当使用缩放属性作为
动作
时,这些值被限制为无效值或者正值。
动作
动作
选择要使用的动作的名称。
Warning
尽管它可能不处于红色状态(UI刷新问题),但当这里没有选择有效的动作时,此约束显然不起作用。
Object Action 物体动作
当它启用时 仅仅 用于骨骼,此选项将使受约束的骨骼使用链接动作的 “物体” 部分,而不是 “同样命名的姿势” 部分。这允许你将物体的动作用应用于骨骼。
起始帧、结束帧
要映射的动作的开始和结束点。
Note
这些值必须严格正数。
这两个值默认为0,即禁用映射(即自身只获取在链接动作的第0帧定义的属性…)。
注意
当物体或骨骼已具有 动作约束时,应在所有其他约束之前添加使用新插帧操作的下一个约束,以便获得相同的最终组合变换。此事实不受混合模式的影响。
与正常情况不同的是,你可以有 起始 的值高于 结束点 的值,或者 最小值 大于 最大值 的值:这将会翻转动作的映射关系(即将 “播放” 反转…),除非你们两套都显然颠倒了!
当使用 约束 动作时,它是约束 通道 名称,用来决定自身的哪些约束应用于该动作。例如,如果你有一个约束通道命名为 “trackto_empt1”,其键 影响 或 起始/结束 值(唯一可以键入的)将被映射到的自身的约束命名为 “trackto_empt1” 那一个。
同样,当使用 Pose(姿势) 动作时(这显然当它约束骨骼时才有意义和能够工作!),它是用来确定那一个来自动作的骨骼 channel’s names(通道名) 被使用。(例如,如果受约束的骨骼被命名为 “手臂(arm)”,它将使用并且仅使用名为 “手臂(arm)” 的动作的骨骼通道…)。不幸的是,在整个骨架对象上使用 Pose 动作(一次影响动作中的所有关键骨骼)将不起作用…