游戏开发论坛

 找回密码
 立即注册
搜索
查看: 17060|回复: 14

关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

[复制链接]

4

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2007-11-8 01:38:00 | 显示全部楼层 |阅读模式
关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

我先前在网上书上看了一些这方面的东西,但是我看到的说法多种多样,或许是我没明白一些基本的东西,而那些人只是说法不同,实质相同

说法:

我们最常用的旋转方法应该是使用yaw, roll和pitch。yaw是在XZ轴平面上围绕Y轴左右旋转,当开车时使用的是yaw。pitch在YZ轴平面上围绕X轴上下旋转,喷气机飞行或爬坡时用pitch向上或向下。roll是在XY轴平面上绕Z轴倾斜旋转,从字面意思上说,当你驾驶汽车高速急转弯时,你的汽车会出现roll运动
    欧拉旋转十分的有用,Ogre API也提供了欧拉旋转。但是,旋转时也会出问题。一个是操作的顺序不能乱。如果你将对象先pitch 90度,然后再yaw 45度得到的结果肯定与先yaw  90度再pitch 45度不同。另外一个叫做万向节锁。万向节是一个旋转轴。这个问题发生在两个旋转轴重合时,此时需要删掉一个。
(译者注:欧拉角最著名的问题是这样的:当你先yaw 45度再pitch 90度,和先pitch90度再roll 90度是等价的。事实上,一旦先择±90度为pitch角,就被限定在只能绕竖轴旋转。这种现象,角度为±90度的第二次旋转使得第一次和第三次旋转轴相同,成为万向锁。为了消除限制欧拉角的这种别名现象,规定万向锁情况下只能由yaw完成绕竖轴的旋转。即若pitch = ±90度,则roll = 0)
    总的来说,欧拉角在实际的应用是受限的。这里我所指的是使用yaw, roll, pitch操作让对象任意旋转并不是很实用。如果你要一个可以任意pitch / yaw的相机(就像许多第一人称视角射击游戏)的话,它们是很有用的。使用双场景节点的技巧,你可以得到一个仅用yaw和pitch操作却能实现你所需要的全部旋转功能的相机。尽管如此,当你的一个对象面对一个方向,而且你想让它面对处于任意位置的对象时,取当前的yaw, roll和pitch值后再计算与新方向之间的角度差并不是十分有效的。同样的,如何使旋转更加平滑?进入矩阵的学习。

提问 :
1 这里的绕轴旋转是指自身的坐标系(前后左右上下),还是在绕一个固定坐标系的轴旋转?
2 所说的两个轴重合,这里的"两个轴"是指自身的,还是固定的? 还是一个自身的轴和一个固定坐标系的轴?那么又是如何重叠的呢?
3 "事实上,一旦先择±90度为pitch角,就被限定在只能绕竖轴旋转"这句又怎么理解?
各位前辈高手,小弟初学,还有一些不明白,但也不知该怎么问,先问这些

9

主题

50

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2007-11-9 13:48:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

我对这个问题也有点疑惑, 看过基本书, 讲这个问题都没有结合图来讲。很难弄清具体的意思。

望高手作答

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-11-9 15:32:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

我也是,都不清楚作者说什么

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2007-11-9 16:54:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

别名问题。
偏航45->翻转90->侧滚0

偏航0->翻转90->侧滚45
的结果一样。
为了消除别名问题,在翻转为90的情况下,约定使用偏航角完成旋转动作。

“一旦选择pitch90度,就只能绕竖轴……”
这句话这样理解的:pitch为90,偏航动作和侧滚动作都会发生在物体惯性坐标系的竖轴,很明显这会带来偏航角和侧滚角度不唯一的情况,所以特别指出来。

至于别名问题引起关注,主要在于旋转插值、动作还原上出现歧义,这对于运动的物体来讲是不可忽略的问题。

希望对你们有帮助。

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2007-11-9 16:57:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

推广之:
偏航30->翻转90->侧滚-20
=
偏航10.99->翻转90->侧滚-0.99
=
偏航9.555->翻转90->侧滚0.005
发现问题了吗?

如果始终用偏航角完成,则结果唯一
偏航10->翻转90->侧滚0

6

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
QQ
发表于 2007-11-9 18:06:00 | 显示全部楼层

Re: 关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

要搞清这个问题先要清楚两个坐标系:惯性坐标系和物体坐标系
   惯性坐标系的X Y Z轴始终和世界坐标系的X Y Z 轴平行同向,并且惯性坐标系的原点和物体坐标系重合。
   物体坐标系,就是你在建立模型时候使用。通俗点比如一辆车,物体坐标系的圆点在车中心,车的前方永远指向“物体坐标系”的+Z轴,车的右方永远指向“物体坐标系”的+X轴,车的顶指向“物体坐标系”的+Y轴。
   
  而欧拉变换相对于物体和物体坐标系相对于惯性坐标系的变换。
  举个例子(车子):假设刚开始惯性坐标系和物体坐标系重合,Yaw45 Pitch45 Roll45 的意思可以这么解释。正在急速行驶的车向右急转弯45度后,碰到45度下坡路向下开,由于速度太快车子发生侧翻45度。(当然车子中心实际上并没有位移)。
  注意从第一次变换后,车子的物体坐标系已经和惯性坐标系不重合,而是绕着惯性坐标系的Y轴旋转了45度。之后的每次变换都是物体在绕着自己的“物体坐标系”进行变换。就如你向右转45度,之后再向右转45度。做了两次Yaw 45。但你的前方已经和最初位置时后的前方不一样了。
  

   关于万向锁的解释:先Yaw 45 在 Pitch 90,与先Pitch 90 在 Roll 45是等价的。事实上,一旦选择了+-90为Pitch角,就被限制在只能绕竖直轴旋转。这种现象,角度为+-90的第二次旋转轴使得第一次旋转和第三次旋转的旋转轴相同,称作万向锁。
   这里的旋转轴指的是惯性坐标系下的向量而非物体坐标系。“所谓限定在”就是说两次变换的结果相同都是相对于惯性坐标下的一个向量用它来作轴变换。而实际上我们是用了不同的值,希望也能得到不同的结果!!!

   我们希望使用唯一的值来表示物体方位。而别名问题就是指同一位置可以用多种值指代比如上述的Y45P90=P9R45。作某些运算(楼上提及)会有问题。
   
   不知道解释清楚了没
   [em5]

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-11-10 17:23:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

还是不很理解,对于偏航45->翻转90和 翻转90->侧滚45产生的结果怎么会相同哪,我是用左手坐标系来计算的,由于欧拉角的旋转都是饶自身的坐标系来的, 你可以自己试下,旋转后他们的本地坐标系是不同的,我不知道为什么书上和上面两位都是得出相同的结论, 后来我反思了下,假如 偏航45->翻转90以物体本地坐标系来旋转物体,但是翻转90->侧滚45以惯性坐标系来旋转物体的话,那么最后物体的本地坐标系是相同的,不知道书上和楼上两位是不是说的这个意思,如果是的话,那我们统一约定旋转以物体坐标系不就行了吗,那不就没有上面说的问题了吗,不知道我的理解是否正确,这个问题也捆饶了我好久,一直没有看懂书上 到底含义是什么,关于别名问题,如果说0度和360度是一个意思,那我们统一把角度限定在0---360不就行了吗,这样也不会有什么别名不别名的了,干吗书上扯来扯去扯出那么多问题来,实在是不懂,还请两位继续指点迷津。

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2007-11-10 20:41:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

拿一本书自己尝试转一下就什么都明白了。

36

主题

109

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2007-11-11 00:33:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

回楼上,实验过了,如果都是饶物体本地的坐标旋转的话,旋转后的物体的朝向是不同的,除非45->翻转90和 翻转90->侧滚 负45结果才是相同的

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2007-11-11 00:59:00 | 显示全部楼层

Re:关于万向节死锁的问题,实在搞不明白,希望能帮帮忙

正或负,虽然我上下文没有提到,但这是约定的问题,旨在更好地说明问题。侧滚可以约定从原点看过去顺时针方向为正。

存在别名正如你看到的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 14:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表