[英]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.