游戏动画中欧拉角与万向锁的理解

Posted 代码工作者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏动画中欧拉角与万向锁的理解相关的知识,希望对你有一定的参考价值。

总结:如果动画师在某个关键帧处指定了会引发万向锁的方位,则下一个关键帧的方位一旦超出了万向锁的约束范围,则这两个关键帧之间的路径就会发生偏移,反映在角色动画上是旋转偏移,反映在镜头控制上就是镜头抖动。

 

要获得路径偏移的感性认识,可以参考这个视频:这个视频和我的描述有些不同,该视频使用一个称为万向节的奇怪装置解释的,而我是直接用的物体坐标系但路径偏移都是一样的。

http://v.youku.com/v_show/id_XNzkyOTIyMTI=.html

 

 

怎样解决万向锁这个问题?

出现这个问题的根本原因是在万向锁情况下对欧拉角的插值不是线性的,因此旋转路径发生偏移。

解决方法是:

将欧拉角转换为四元数,对四元数进行slerp即球面线性插值,再将这一系列四元数转换为对应的欧拉角,而后作用于角色。缺点是耗费一定的内存,但角色可以任意旋转,灵活度高。

 

 

转载:http://blog.csdn.net/huazai434/article/details/6458257
https://zhuanlan.zhihu.com/HomoLuden
http://blog.csdn.net/candycat1992/article/details/41254799/

以上是关于游戏动画中欧拉角与万向锁的理解的主要内容,如果未能解决你的问题,请参考以下文章

Unity编程欧拉角与万向节死锁(图文版)

Unity编程欧拉角与万向节死锁(图文版)

Unity编程欧拉角与万向节死锁(图文版)

Unity编程欧拉角与万向节死锁(图文版)

万向节动画

Unity基础:欧拉角、四元数