结论:
当第二轴旋转±90°时会产生万向锁,万向锁只发生在程序中,现实世界不会发生。
发生万向锁的底层原因是由于程序中会指定旋转顺序,且前后顺序为父子包含关系。
- 旋转顺序:因为同样一组数据,例如{X:10,Y:20,Z:30},不同的旋转顺序Z>X>Y \ X>Z>Y,最终得到的姿态是不一样的。
- 父子包含关系:以Z>X>Y为例,Z轴旋转会影响XY轴,X轴旋转会影响Y轴,Y轴不影响其他轴。现实世界中,其中一轴旋转会带动另外两轴旋转,故不会存在一轴旋转,会使另外两轴发生重叠,形成万向锁。
以Unity为例,Inspector面板Rotation:[X:90 Y:10 Z:10],Unity默认旋转顺序为Z>X>Y。
Z轴为10,旋转10°,影响XY轴,带动XY轴旋转10°。
X轴为90,旋转90°,影响Y轴,带动Y轴旋转90°,此时Y轴与Z轴发生重叠。
Y轴为10,旋转10°,不影响其它轴。
在Unity中,当X轴=±90°时(因为Unity中X轴是第二旋转轴),此时不管怎么旋转ZY轴,都饶同一轴旋转。
如下图所示,由于Unity以欧拉角旋转的顺序为Z->X->Y;所以只要|X|%180 == 90,改动Z和Y都只能在这个平面内旋转
原文地址
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)