Unity3D中动画和GameObject的变化关系

原创 2015年07月07日 21:32:11

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

粒子群算法python实现

1、 概述 粒子群算法作为一种优化算法,在很多领域都有应用。所谓优化,我的理解是对一个问题求出它足够好的解,目前的优化算法有很多,如蚁群算法、遗传算法等。粒子群算法相对于这些算法来说,它更简单,而且...
  • CHEN_JP
  • CHEN_JP
  • 2012年09月05日 16:32
  • 7190

Java编写打砖块 经典游戏设计

一.   游戏设计规则   游戏开始时,小球会停在挡板正中间,且此时挡板可左右自 由移动,当按下空格键后小球会弹出,并在程序设定的区域内不 停的碰撞反弹。当小球碰到墙壁、挡板和砖块时,均会...

Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator 控制动...

unity3d 5.0 点击鼠标动态改变gameObject的material

在unity3d5.0中 renderer后面不能使用material 需要通过GetComponent来获取组件所以代码应该这样写:using System.Collections; using ...

Unity3D游戏引擎实战开发从入门到精通(坦克大战项目实战、NGUI开发、GameObject)

Unity3D游戏引擎实战开发从入门到精通(坦克大战项目实战、NGUI开发、GameObject) 我这里有一套课程和大家分享,我的qq是2059055336,有兴趣的朋友可以和我聊天。 下载地址...

Unity3D 06-根据Transform、GameObject和Tag获取子对象集合

导引:因为项目中难免要多次进行获取子对象或者子对象的集合,所以写一个单独的类,用来做这些操作。然后再实际的项目中,只需要使用 transform 或者 gameobject 调用这些方法就可以快速的...

Unity3d使用脚本自如编辑GameObject

Unity3d使用脚本自如编辑GameObject在工作中,发现想对Scene内的Object进行程序化编辑,例如当一个父对象的中心感官上并不是这个物体的中心时,我们想对所有的子对象的transfor...

Unity3d开发(三)GameObject 作函数参数

今天忽然想到这样的问题,我将一个GameObject作为参数传入,在函数内直接更改它。那么它应该是值传递还是引用传递呢?...

unity3d从零开始(二):学习GameObject

GameObject是Unity中一个很重要的角色。对GameObject学习能够让我们更好的进行Unity开发,今天我们就来学习一下GameObject这个概念...

【Unity3D基础教程】(一):GameObject,Compoent,Time,Input,P...

【狗刨学习网】 Unity3D重要模块的类图 Unity3D是一个Component-Based的游戏引擎,并且为GamePlay Progrmmer提供了很多游戏性层上的支持。比如可以在图形界...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3D中动画和GameObject的变化关系
举报原因:
原因补充:

(最多只允许输入30个字)