1. 基本概念
在Unity3D动画中,模型的位置、角度经常会发生变化,我们需要决定是否将模型在动画中发生的这些变换化用到实际模型(GameObject)中。
在Untiy3D中将动画中的变换分成两类:
1) Body Transform (pose:姿势)
2) Root Transform (trajectory:轨迹)
我们可以设置动画中的关于模型的一些变换(平移、旋转等)是属于Body Transform(pose)还是Root Transform(trajectory)的一部分。
举例如下(ac001为角色跑步):
在上图中:
1) 如果【Apply Root Motion】未选中:则角色在原地跑步,且Transform中的值没有任何变化
2) 如果【Apply Root Motion】已选中:则角色在场景中跑步,且Transform中的值跟随变化
1.1 Body Transform (Pose:姿势)
身体变换 (Body Transform) 是角色的质心(the mass center of the character)。它用于 Mecanim 重定位引擎,提供最稳定的位移模型。身体方向 (Body Orientation) 是下半身方向与上半身方向的平均,与 Avatar T 字姿势 (T-Pose) 相关。身体变换 (Body Transform) 和方向 (Orientation) 存储在动画片段 (Animation Clip) 中(使用 Avatar 中设置的肌肉定义)。它们是存储在动画片段 (Animation Clip) 中的唯一世界空间曲线。其他一切事项:肌肉曲线和 IK 目标(四肢 (Hands and Feet))相对身体变换存储。
1.2 Root Transform(trajectory:轨迹 实时计算)
根变换 (Root Transform) 是身体变换 (Body Transform) 在 Y 平面上的投影,在运行时计算。在每一帧,根变换 (Root Transform) 中的变化都会计算出来。然后变换的变化会被应用到游戏对象 (Game Object) 上,使之移动。