簡體   English   中英

在openGL或更確切地說在LWJGL中,一個人如何相對於相機旋轉?

[英]How does one rotate relative to the camera in openGL or more specifically LWJGL?

我正在用LWJGL制作3D游戲。 在此游戲中,每當我按箭頭鍵時,無論當前方向如何,我都希望屏幕朝該方向旋轉。 我正在努力用代碼來實現這一點。 使用基於旋轉向量3f的三個glRotatef函數無法實現此目的。 向上和向下旋轉是因為首先調用glRotatef(rotation.x, 1, 0, 0) ,但只有當您不向上或向下查看時,才可以左右glRotatef(rotation.x, 1, 0, 0) 如果是這樣,則繞通用y軸旋轉,然后相機旋轉。 我看到另一個實現可以使用gluLookAt() ,但是我想我會遇到同樣的問題。

編輯我以為我可以通過更改glRotatef()的調用順序來解決問題,具體取決於我想旋轉的方向。 我認為這會起作用,因為在我的游戲中,我一次只會旋轉一個軸。 它有些奏效,但在某些方面卻沒有奏效。

      if(updown){
             glRotatef(rotation.x, 1, 0, 0);
             glRotatef(rotation.y, 0, 1, 0);
        } else if(leftright){
             glRotatef(rotation.y, 0, 1, 0);
             glRotatef(rotation.x, 1, 0, 0);
        }
        glTranslatef(position.x, position.y, position.z);

gluLookAt可能會使您更快地到達那里,但是您將需要圍繞原點坐標手動旋轉眼睛坐標。 如果計划繞所有3軸旋轉,則還需要使用gluLookAt計算向上矢量。

我有一種預感,在執行glRotate之前,您只需要添加一個glTranslate即可使相機周圍有一些東西。

如果顯示一些代碼,則可能會獲得更多幫助。

我已經解決了這個問題,並繼續前進。 因為我一次只能將一個軸旋轉90度,所以我經歷了所有64種可能的方向並手動應用了必要的轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM