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都只能在这个平面内旋转
在这里插入图片描述

原文地址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值