我制造一个非常简单的3D场景中,具有5个世界坐标。我想划过的痕迹导航,所以我定义既具有向上和向外向量的相机。有了这个信息I产生在每帧,我将适用于矢量,以获得所述照相机坐标中的旋转矩阵。

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

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

感谢您

有帮助吗?

解决方案

如果通过OUT你的意思是“向前”,并且这是总是垂直于UP向量,则NO,则不会遇到万向节锁定。

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

请注意,以创建也将需要创建一个“左”的矩阵(或右)从UP和FORWARD矢量矢量。一个很好的介绍,这是这里 - 注意,例如不会再申请转到相机矩阵,这是一个完全可选步骤。

维基百科具有很好的解释万向节锁定

其他提示

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

要摆脱这个问题的方法之一是使用四元进行计算。

此外,这里我发现了一些OpenGL的教程如何执行这些。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top