解析欧拉角旋转导致的万向锁问题

昨天一同事说看了网上很多关于万向锁的文章还是没搞懂,让我解释一下~

我想不至于吧,我也到网上找了一些文章看, 发现解释的真是一塌糊涂,而且还是错误的~

欧拉旋转导致的万向锁应该很好理解的, 只要你理解欧拉旋转是有顺序的,欧拉旋转是有顺序

的,欧拉旋转是有顺序的,重要的事情说3遍。

那么在Unity里面的顺序是啥? 看文档啊~   哈哈~ 

 

 旋转的顺序是(z-x-y) ,一定要记住是(z-x-y),这是理解欧拉角的基础。

昨天我看了一篇Blog说是(y-x-z),真是扯,还说旋转是在惯性空间、模型空间,因为3次旋转不在同一个坐标空间,导致了旋转轴重合,导致万向锁,我的天呀~   真能扯

看看Unity的提示,你能明白,旋转是相对于他的父节点的,就是他爸爸的坐标空间,3个轴旋转都在同一个坐标空间。

也许你会被一些假象迷惑,感觉是绕着模型空间在旋转的,我举个例子,下面的图看起来是绕着模型空间的z轴转的,其实不是的,他还是绕着父节点的z轴旋转的,也许你会问为啥??? 回到最开始说的,因为旋转是有顺序的,在Unity里面先旋转的永远是Z轴,初始的时候模型空间和他的父节点空间的坐标轴是重合的, 给人的错觉就是绕着模型空间在转。

 

 

万向锁来了,为了方便演示,我把立方体沿z轴方向的两个面染红了,可以看到旋转的面是红色的面。 

最简单的万向锁是第二个旋转轴,旋转正负90度,在Unity第二个旋转轴是x轴,我们把x轴旋转90度,看看发生了什么,旋转面就跟父节点坐标的Y轴方向垂直了(没有父节点就是世界的坐标,看右上角的轴方向)。 

 接下来我们旋转y轴,你会发现此时y轴的旋转面也是红色的面,你会发现转y轴和z轴的旋转面试一样的,这个就是万象锁。

 总结一下:

1. 旋转是有顺序的(z-x-y), 每次都是绕着父节点的坐标轴旋转。因为z轴是最先旋转的,所以看起来像是绕着模型空间的z轴旋转,你可能还是不太明白,你自己向我一样,在unity里面用立方体旋转,自己体会一下。

2. 每次的旋转都是从(0,0,0)开始的,并不是根据你在Inspector 里面填写的顺序来旋转的,很多人都以为只这样的,每一次的修改,都遵循(z-x-y)顺序,从(0,0,0)开始转

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值