Unity万向锁

结论:

当第二轴旋转±90°时会产生万向锁,万向锁只发生在程序中,现实世界不会发生。
发生万向锁的底层原因是由于程序中会指定旋转顺序,且前后顺序为父子包含关系。

  1. 旋转顺序:因为同样一组数据,例如{X:10,Y:20,Z:30},不同的旋转顺序Z>X>Y \ X>Z>Y,最终得到的姿态是不一样的。
  2. 父子包含关系:以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都只能在这个平面内旋转
在这里插入图片描述

原文地址

猜你喜欢

转载自blog.csdn.net/qq_41841073/article/details/128698702