2010-08-06 57 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