Version: 1.3
语言 : 中文
反向动力学
教程:为“原地就位”的人形动画编写根运动脚本

根运动 - 工作原理

身体变换

身体变换是角色的质心。它用于 Mecanim 的重定向引擎,并提供最稳定的移位模型。身体方向是相对于 Avatar T 形姿势的下身和上身方向的平均值。

身体变换和方向存储在 动画剪辑 中(使用 Avatar 中设置的肌肉定义)。它们是 动画剪辑 中存储的唯一世界空间曲线。所有其他:肌肉曲线和 IK(反向动力学)目标(手和脚)都是相对于身体变换进行存储的。

根变换

根变换是身体变换在 Y 平面上的投影,并在运行时计算。在每一帧都会计算根变换的变化。变换的此变化随后应用于游戏对象以使其移动。

角色下方的圆圈表示根变换
角色下方的圆圈表示根变换

动画剪辑检视面板 (Animation Clip Inspector)

动画剪辑编辑器设置 - Root Transform RotationRoot Transform Position (Y)Root Transform Position (XZ) - 可让您从身体变换控制根变换的投影。根据这些设置,身体变换的某些部分可能会转移到根变换。例如,您可以决定是否希望运动 Y 位置成为根运动(轨迹)的一部分或姿势(身体变换)的一部分(称为 Baked into Pose )。

Root Transform Rotation

Bake into Pose :方向将保持在身体变换(或姿势)上。根方向将是常量,增量方向将是标识。这意味着游戏对象根本不会被 动画剪辑 (AnimationClip) 旋转。

只有具有相似的开始和停止根方向的动画剪辑才应使用此选项。您将在 UI 上看到绿色指示灯,表示 动画剪辑 是合理的候选项。合适候选项将是直走或奔跑。

Based Upon :此选项用于设置剪辑的方向。使用 Body Orientation 会将剪辑定向以跟随身体的向前矢量。此默认设置适用于大多数动作捕捉 (Mocap) 数据(如行走、奔跑和跳跃),但是对于诸如扫射一样的运动(此类情况下,运动垂直于身体的向前矢量),此设置将会失败。在这些情况下,可使用 Offset 设置来手动调整方向。最后还可选择 Original 设置,此设置会自动添加位于导入的剪辑中的创作偏移量。此设置通常与关键帧数据一起使用以遵循美术师设定的方向。

Offset :为 Based Upon 选择该选项时用于输入偏移量。

Root Transform Position (Y)

此部分涉及的概念与 Root Transform Rotation 部分所述的概念相同。

Bake Into Pose :运动的 Y 分量将保留在身体变换(姿势)上。根变换的 Y 分量将是常量,增量根位置 Y 将为 0。这意味着此剪辑不会更改游戏对象高度。您再次看到绿色指示灯,表示剪辑是将 Y 运动烘焙到姿势中的合理候选项。

大多数 动画剪辑 将启用此设置。只有会改变 游戏对象 高度的剪辑才应该将此设置关闭,比如向上跳或向下跳。

注意:Animator.gravityWeight 通过 Bake Into Pose 位置 Y 驱动。启用时,如果 disabled = 0,则 gravityWeight = 1。在状态之间过渡时会为剪辑混合 gravityWeight

Based Upon :与 Root Transform Rotation 的情况相似,可选择 OriginalMass Center (Body) 。此外还有一个 Feet 选项对于会改变高度的 动画剪辑 (禁用 Bake Into Pose )而言非常方便。使用 Feet 时,对于所有帧,Root Transform Position Y 将与位置最低的脚 Y 匹配。因此,混合点始终保持在脚周围,从而防止在混合或过渡时发生浮动问题。

Offset :与 Root Transform Rotation 的情况相似,可利用 Offset 设置来手动调整 动画剪辑 高度。

Root Transform Position (XZ)

同样,此部分涉及的概念与 Root Transform RotationRoot Motion Position (Y) 部分所述的概念相同。

Bake Into Pose 通常用于“空闲”状态,此情况您会希望将增量位置 (XZ) 强制设置为 0。此选项将阻止多次评估后小增量漂移发生积累。对于 Based Upon 设置为 Original 的关键帧剪辑,此选项还可强制使用美术师设置的创作位置。

循环姿势 (Loop Pose)

循环姿势(类似于混合树或过渡中的姿势混合)发生在根变换的引用中。计算根变换后,姿势变为相对于根变换。计算开始帧和停止帧之间的相对姿势差,并分布于 0–100% 的剪辑范围内。

通用根运动和循环姿势

工作原理与人形根运动基本相同,但不使用身体变换来计算/投射根变换,而是使用 根节点 中设置的变换。姿势(在根运动骨骼下变换的所有骨骼)都是相对于根变换创建的。

反向动力学
教程:为“原地就位”的人形动画编写根运动脚本