这会带来万向锁?(Will this cause gimbal-lock?)

2019-09-22 02:51发布

我做一个很简单的3D场景,有5个在世界坐标。 我想划过的痕迹导航,所以我定义既具有向上和向外向量的相机。 有了这个信息,我产生在每一个帧,我将适用于载体,以获得摄像机坐标旋转矩阵。

现在的问题是:我读过关于万向节锁定为使用这种方法的一个问题,但在这种情况下,它会发生?

请注意,我产生在每帧的旋转矩阵,我不累计旋转。 因此,可以锁定在这种情况下发生? 如果是这样的话,你会建议安全应用旋转(从向上拉出载体)?

谢谢

Answer 1:

如果OUT你的意思是“前进”,这始终是垂直向上向量,则NO,你不会遇到万向节锁定。

你在做什么是创建从UP和FORWARD矢量的取向矩阵,并应用将每个帧,其是用于在空间中移动的照相机一个相当普遍的方法。 您使用的欧拉角,它可以是万向节锁定的原因不施加多次旋转。

注意创造你还需要创建一个“左”的矩阵(或右)向上和向前载体载体。 一个很好的介绍,这是在这里 -注意,这个例子也然后应用旋转的摄像头矩阵,这是完全可选的步骤。

维基百科有一个很好的解释万向节锁定 。



Answer 2:

用矩阵的方法来产生旋转矩阵(对X,Y,Z),然后将它们相乘得到最终的旋转矩阵时,您会遇到万向锁问题。 如果我理解你,你用OUT矢量获得角(α,β,γ),那么你计算矩阵,终于 - 你将它们相乘得到最终的轮替]矩阵 - 然后是的,你会遇到万向节锁定。

为了摆脱这一问题的一种方法是使用四元数进行计算。

另外, 在这里我发现了有关如何实现这些OpenGL的一些教程。



文章来源: Will this cause gimbal-lock?