Unity3D中动画和GameObject的变化关系

三维动画一般在三维动画软件中制作,游戏引擎中也有自己所谓的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中导出的动画和游戏引擎中的游戏对象的互动关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值