关闭

Unity3D中动画和GameObject的变化关系

标签: unity3d动画游戏对象
587人阅读 评论(0) 收藏 举报
分类:

三维动画一般在三维动画软件中制作,游戏引擎中也有自己所谓的gameobject的抽象。那么这两者之间有什么关系呢?具体来说,动画是否会影响游戏对象的位移和旋转(root motion)?

这里有两个概念要区别开来:
第一个是身体变换(body transform 或者叫做 bake into pose)。
什么是身体变换呢?身体变换属于三维软件,全部都在世界坐标系中产生,是动画师在三维软件中调出来的。
第二个是根变换(root motion)。
根变换属于游戏引擎,使用角色在Y=0平面的映射偏移去计算出每一帧需要进行的偏移,是引擎从三维软件导出的数据算出来的。因为三维软件导出的肌肉曲线和IK解算是局部坐标系的,没有世界坐标系的Y平面的移动,所以三维软件增加了一个通道作为Y平面的偏移,然后引擎每帧主动算出来那些Y的值,叠加到游戏中的动画中。

具体来说,在unity3d中有以下的一些组合来表示。
Bake Into Pose: 保持根变换不变,使用动画的位移和转向,看起来是在播放动画,实际上引擎中的游戏对象位移和旋转并没有发生变化
不Bake Into Pose.:如果动画产生了旋转,Y平面,XZ平面的变化,将影响到根变换
Base Upon: 设置动画的依赖。。

Apply root motion + root transform: 引擎中的游戏对象的位移和旋转在动画播放的每一帧都始终发生变化。
Apply root motion + bake into pose(body transform): 引擎中的游戏对象的位移和旋转在动画播放过程中不会发生变化。只有动画播放结束了,游戏对象才会一次性的到达动画最后一帧的位移和旋转。
No Apply root motion + bake into pose(body transform) : 动画一直播放,但是引擎中的游戏对象的位移和旋转不会发生变化. 如果开始一个新的动画,模型立即回到起始位置。
No apply root motion + root transform: 模型保持不变。

关键就是区别3dmax/maya中导出的动画和游戏引擎中的游戏对象的互动关系。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6977次
    • 积分:192
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档