【Unity】RootMotion相关概念整理
有机紫菜
2024年07月05日 15:54

Unity动画系统中.需要了解的一些根运动概念---RootMotion

  • 游戏开发中RootMotion与普通动画(非Root)的应用大概一共有3种主要状态,父级坐标跟着动画走,父级坐标不跟着动画走,原地踏步(普通动画).这三种不同的动画类型,通常在制作战斗或者交互动画时候,是混合着使用的.

    • 1---父级,碰撞器啥的,控制器,不跟随人物动画,"人物出窍动画"---适用于坐下凳子,上床睡觉啥的,有位移.

    • 2---跟随动画走.RootMotion,动画蹦到哪里,做Boss跳跃攻击,打开RootMotion,跳跃攻击之后,可以用程序控制Boss位移.有位移

    • 3---普通动画.非RootMotion,也就是原地踏步,动画的位移被去掉了,也就是普通动画的效果.无位移

其他需要了解的

  • Body transform:动画发生的位移和旋转,只是单纯的动画效果,不会影响模型自身在世界空间中的实际位置和朝向。

  • Root transform:动画发生的位移和旋转,会改变模型实际的位置和旋转。

  • Bake into Pose实际上就是“烘焙成姿势”,姿势将是子物体的实时运动,不会影响父物体的位置和方向。

  • Root的中心,是算出来的,物体的质量中心在水平平面的投影位置(重心投影).如果想要设置成脚.Based Upon模式,和Feet模式的区别.

  • 注意Generic动画,如果想要开启RootMotion则需要,在导入设置里面,选一个骨骼作为根骨骼.一般是选Hips

  • TimeLine上的动画.会自动覆盖人物当前Animator上的动画.动画片段需要选择Bake into Pose才能正常的进行位移.

使用时候的一些问题

  • 应该使用哪种RootMotion形式,

  • 2种形式,都可以做到,人物脱离控制器,与同步控制器.

    • TimeLine+Bake Into Pose

    • Animator的Apply Root Motion

    • Animator的Mask,通常给上半身的动画,比如怪猎世界中的采集动画.

  • 不同的RM形式,对应的情况.

  • 这些都是针对,实时游戏内容来讲的.

  • 比如一个人物,上车,或者上马,上摩托,原来的人物碰撞体怎么办.

  • 原来的人物可以隐藏,摄像机,fade到新的控制物上,比如车或者马.

  • 人物上车可以用Root动画或者TimeLine动画,播放完上车后(上车后,创建一个假人物体,可以是SpawnAmesh,继承当前人物的坐标.原来的人物以因为Rootbake自动返回原来的位置.),人物的整个物体隐藏,--打开汽车的操作控制器.

  • 一个人物上座位,或者床上躺着,原来的碰撞体怎么办.----通常可以使用RootMotion进行“人物脱离Collider”

  • 动画,过场当中,人物的碰撞体怎么办?---通常不用管,TimeLine上可以用事件关掉.

按照使用情况分类

  • 特别小的动画,比如人物按一个场景中的大按钮.---无锁定模式.人物播放动画,+IK混合---似乎需要Point辅助.

  • 中小型动画,比如坐下凳子,上床,单杠,等一些需要RootMotion的.使用TimeLine的系统,或直接在Animator中,设置Root.

  • 中型的.---比如上马,上车,这些则需要单独配置.

  • 中大型的---比如场景动画.则需要场景TimeLine---加控制不同的人物.

其中通用的功能和技术

  • 人物转身,或者是,MoveTo,目标地点,目标的朝向.----人物主体的位置.

  • 人物的手部分,脚部分的IK目标.---把手和脚,放到目标位置.---四肢的动作.

  • 人物的,操作控制,关闭,与开启.---人物的控制开关.

  • 人物的IK部分,渐变的过程,和Animation混合的流程.---四肢的细微动作

  • 拿武器时候,特殊的,手部IK,与武器的IK,比如一个武器一直托在地上.