关于 root motion

google了下,没找到root motion这种技术的出处在哪,unity上有此功能,ue4也有,真想知道是谁想出来这么返璞归真的想法:用动画的位移来控制人物的位移,让滑步狗带。


相信看到这里的人,应该是知道root motion是什么,已经自己遇到了什么样的困惑,我就不赘述了,直入正题,说一下我的理解。


这篇文章很详细,但个人觉得还是不是很透彻,而且细节有些不对。

http://blog.csdn.net/cubesky/article/details/39478207


这是我的个人理解,从程序员的角度看下:


(因为没有源码,官方文档也不多,只能从表象猜测了)

当你制作动画时,一定离不开一棵骨骼树,然后调整某个骨骼,做出相应动作(举手,抬腿)。但当你想要让整体移动时(比如助跑,跳跃),这时候你就要移动根节点骨骼了,这就是ROOT MOTION 中 ROOT的由来??
(当然你也可以不移动根节点,只是摆出原地的动作,后续在游戏里,用程序实现人物整体移动的轨迹,当然,然后你就滑步了)

而root motion就是在这个根节点骨骼上做文章。如果你设置为“Bake into Pose”,那么这个根节点骨骼的移动,会加在所有子骨骼的位移上,这时候Root Motion的移动就是0.
如果不勾选“Bake into Pose”,那么根骨骼的位移,就不会加在子骨骼的位移上。这时候Root Motion的值就是根节点骨骼的位移值。

最后,当你勾选Apply Root Motion时,之前的那个值就起作用了,如果root motion为0,那么不会设置你人物的transform(自然就不会影响你的物理计算结果)。如果不为0,那么就是直接设置你人物的transform,物理就不起作用了。

而unity官方api,把水平(XZ)和垂直(Y)分开了,这样就解决很多问题了:如果你是奔跑动作,那么就不勾选XZ,让值影响你的水平位移,但勾选Y,让Y上的root motion bake 到你的子骨骼中,让物理重力依旧影响你的人物。如果你是跳跃运动,那么就不勾选XZ,让值影响你的水平位移,让你能跳出去,同时也不勾选Y,让值影响你的Y,让你的人物忽略掉重力,高高跳起,直到动画播完,切回到idle或run,你的人物就会从半空中摔下来。what a beautiful workflow ~

抛砖引玉,请评论对错。谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值