这个万向节死锁困扰了我好几天,查遍了网络上的博客,基本都是通过一个陀螺仪来讲解。这种讲解方式忽略了很重要的一点,让人难以理解,看我讲解。
欧拉角有两种
静态的,静态是世界坐标旋转不会有死锁的情况。
动态的,自身坐标随物体旋转而改变
从动态欧拉角我做了很多次测试发现并不能死锁,所以我从定义下手。
首先需要知道什么是一次欧拉旋转,不是某个轴旋转,而是沿着三个轴都旋转结束后称为一次欧拉旋转,我们想象一下,一个物体沿着y轴旋转45°,那这个物体的x轴和z轴是也跟着旋转吗?定义中的(自身坐标随物体旋转而改变)是针对一个欧拉旋转,并不是
绕某个轴旋转自身坐标也跟着旋转,所以x轴和z轴是不动的,继续绕x轴旋转90°,那么此时y轴要跟着旋转吗?答案是要的因为我们之后的轴旋转已经不涉及到y轴的旋转了,动态欧拉角是旋转过的轴需要随物体旋转而改变,未旋转的轴不能改变。继续绕z轴旋转0°,那现在我们自身的坐标轴就在一个二维平面里面了(y轴和z轴是平行的),x轴垂直与这两个轴,这中情况就是万向节死锁了。
下面从定义总结一下动态的欧拉旋转
1 三个轴全部旋转完毕是一次欧拉旋转
2 未旋转的轴不跟随当前旋转而旋转,旋转过的轴跟着当前旋转而旋转
3 欧拉旋转结果跟xyz轴旋转的顺序有关(unity定义的旋转顺序是yzx)
4 当两个轴平行的时候会产生万向节死锁(无法旋转到某个位置)
小伙伴有问题请评论