- 以前一直听说过万向节锁
- 当时觉得问题太难就没去认真分析
- 最近在B站找了一些视频看懂了。
- 简单来说
- 旋转是有顺序的,比如transform面板有三个旋转分量,你先调整y,再调整x,最后调整z
- 按照正常思路来说,调整x轴是在y轴旋转的基础上的。所以应该有三个旋转自由度
- 但是用户调整顺序和程序运行顺序是不一样的。
- 程序会等玩家输入完毕后,将所有角度旋转按照他自己的顺序x,y,z作为一个变换,初始状态—>最终状态
- 无论你怎么调整,x都是相对于初始姿态的旋转Rx,而y轴再对Rx进行旋转90°就把x轴的旋转效果变换到了z轴,这个时候z轴再旋转就和x轴效果重合
- 损失了一个自由度
举例
-
unity的旋转y-x-z的顺序
-
先按照y轴旋转20°
-
再按照x轴旋转90度,就把y轴刚才的旋转状态挪动到了z轴
-
可以看到这个时候z轴的旋转就和y轴的旋转相同,损失了一个自由度
-
这个就是万向节锁了