2010-08-06 51 views
3

我需要创建一个向上的向量,当相机看任何角度(除了直接向下或向上,因为向上的矢量将垂直于y轴)。有效的方法来计算向上指向y轴的gluLookAt向量?

向上的向量必须垂直于当然的视线。当视线不是沿着y轴的时候,你可以想象一个围绕眼睛的圆圈和向上矢量所在的视线。在这个圆上,会有一个点比Y轴更远。这就是我想要的向上的东西。

我确定我可以制定一个解决方案,但我猜测人们会这么做过很多次,我想要有最有效的解决方案。

我的相机至少在使用时不会直视Y轴,所以这里没有问题。

回答

3

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

如果你真的,真的要拿出一个垂直的矢量,看看the man page for gluLookAt,做他们正在做的事情,使ü

+0

我认为它引起了一些问题,这种观点不是吗?它没有任何区别? 非常感谢您的回答。 – 2010-08-06 23:57:40

+0

再次,如果你看一下gluLookAt手册页,他们会告诉你他们在做什么。他们垂直向上你提供的向量,基本上就像lisarc描述的那样。 (顺便说一句,如果你感激,你可以投票回答你的回答者,并接受其中的一个。) – 2010-08-07 02:10:39

+0

它没有对我看过的文档说。我看到很多页面说向上的矢量需要垂直,但感谢你清理它。 我知道如何接受答案,是的。在我接受你之前,我希望得到答复。 – 2010-08-07 14:01:22

14

大多数商业游戏使用叉积,产生垂直。

  • 标准化您的外观矢量。

  • 取你的外观矢量和0,1,0的矢量的叉积。这给你你正确的矢量。

  • 拿你的右矢量和你的外观矢量的叉积。这是您的新建向量,它与您的原始外观矢量垂直。

+3

谢谢你的回答。我会用你的建议,除非事实证明我不需要一个垂直向上的向量。 – 2010-08-06 23:58:17