注意:设置好Root node:
![](https://img.haomeiwen.com/i9341304/7a43abfc148b7cb9.png)
以下转载:https://www.jianshu.com/p/f804fa931e54
Body Transform(身体变换)
Body Transform是角色的质心(重心)。用于Mecanim系统的重定向引擎中来提供稳定的模型移动。身体朝向是角色模型在T姿势下上身和下身朝向的平均值。
Body Transform和朝向存储在Animation Clip中,这两个是Animation Clip中存储的唯二世界空间的曲线,其他的动画曲线都是以相对body transform的形式存储的。
Root Transform(根变换)
Root Transform是body transform在Y平面上的投影,并且是运行时计算的。每一帧Root Transform的变化实时计算。然后Transform的变化会被应用到GameObject上从而让物体移动。
调整Root Transform
通过对Animation Clip的设置来控制Body Transform投影到Root Transform的结果。
可以调整的有Root Transform Rotation, Root Transform Position (Y) 和 Root Transform Position (XZ) 。基于设置,Body Transform的部分数值可以转移到Root Transform中。例如你可以选择动画中的Y曲线是Root Motion的一部分,还是Body Transform(pose)的一部分。
Root Transform Rotation
用于设置Root Transform的朝向(旋转)。
Bake into Pose:选中后,角色的朝向会基于body transform(Pose)。Root Orientation会是一个常量,意味着Animation Clip不会旋转这个物体。
只有AnimationClip的开始和结束位置旋转相似的时候,才应该使用这个选项。可以通过右边的绿灯判断。通常用于向前直行的走或跑的动画。
Base Upon:可以设置动画的朝向基于的地方。
- Body Orientation:动画会朝向身体正前方。这个设置适用于大多数身体朝前的动画,比如走跑跳。但是如果动画是向左或向右平移的话,会有问题。这时候可以使用下面的Offset来调节角色的朝向。
- Original:有的动画师会给动画手动加上旋转,确保动画的朝向正确,这时候可以使用这个选项,一般就不用再手动调整Offset了。
Offset:基于Base Upon的设置,调整偏移量。
Root Transform Position (Y)
用于设置Root Transform位置的Y轴位置。
Bake into Pose:选中后,动画的Y轴的运动会保留在Body Transform(Pose)上。Root Transform的Y轴会是一个常数(不会受动画影响变化),也就是意味着动画不会改变物体位置的Y值。右边有一个绿灯指示动画起始位置和结束位置的高度是否一致,可以看出动画是否适合使用此选项。
大多数的动画应该选中此选项,除了那些会改变物体高度的动画比如跳起、跳下这些动画。
注意:Animator.gravityWeight是由Bake Into Pose position Y控制的。选中时gravityWeight = 1,不选中时gravityWeight = 0。gravityWeight用来在state转换时进行混合。
Base Upon:和Root Transform Rotation设置类似,除了Original 或 Mass Center (Body)选项外,还有一个Feet选项。Feet选项非常适合改变物体高度的动画(不勾选Bake Into Pose)。使用Feet时,Root Transform Position Y会匹配骨骼中脚部的Y位置(更低的那个)。Feet选项可以避免混合或转换时浮空的现象。
Offset:可以设置高度的偏移量。
Root Transform Position (XZ)
用于设置Root Transform位置的XZ轴位置。
Bake Into Pose:通常用于原地不动的动画(动画在XZ轴上的位置为0)。可以用来去除动画循环累计的误差,造成位置的移动。也可以通过设置Based Upon Original来强制使用动画师设置的位置,否则会使用角色的重心作为Root。
Loop Pose
Loop Pose(比如混合树或Transition中的混合)会基于Root Transform。Root Transform在每帧被计算出来后,动画的位置会相对Root Transform。开始帧和结束帧的差别会被计算出来,然后分布到动画的0-100%
GravityWeight
使用Animator的时候经常会发现动画没有重力,而GravityWeight就是这个问题的关键
默认重力权重设置为1,即可应用刚体的重力。如果刚体不打开重力,则没有重力
使用时在FBX动画片段的曲线中设置即可
重力权重越大即重力越大,重力权重范围对应时间轴上包含位移的范围
![](https://img.haomeiwen.com/i9341304/3be3d90b2d41977c.png)
网友评论