计算gluLookAt的向上矢量的有效方法,它最多指向y轴?

时间:2010-08-06 20:08:39

标签: opengl vector camera

我需要为相机在任何角度观察时创建一个向上矢量(除了直接向下或向上,因为向上矢量将垂直于y轴)。

向上矢量必须垂直于航线。当视线不是沿着y轴时,你可以想象一个眼睛周围的圆圈和向上矢量可能的视线。在这个圆上,将有一个点在y轴上比任何其他点更远。这就是我想要的向上传感器。

我确信我可以找到一个解决方案,但我猜测人们之前会做很多次这样的事情,我希望得到最有效的解决方案。

我的相机,至少在使用时,不会直接向下或向上看y轴,所以没有问题。

2 个答案:

答案 0 :(得分:16)

大多数商业游戏使用交叉产品生成垂直。

  • 规范化您的外观向量。

  • 取你的外观矢量和矢量0,1,0的叉积。这为您提供了正确的向量。

  • 获取右矢量和外观矢量的叉积。这是您的新向上矢量,它与原始外观矢量垂直。

答案 1 :(得分:3)

gluLookAt不要求您提供的向上矢量垂直于您正在查找的方向。所以你可以使用0,1,0。

如果你真的,真的想要提出一个垂直向量,看看the man page for gluLookAt并做他们正在做的事情来做