2012-08-31 52 views
0

我正在使用glRotate和glTranslate函數來圍繞自身旋轉模型。當我運行程序時,模型正在圍繞它旁邊的一個點旋轉。這裏是我的模型定義:glTranslate和glRotate無法正常工作

private static final float[] mesh = { 
    -0.5f, 0.5f,-0f, 
    -0.5f, -0.5f, -0, 
    0.5f, -0.5f, 0f, 
    0.5f, 0.5f, 0f, 
    -0.5f, 0.5f,-1f, 
    -0.5f, -0.5f, -1f, 
    0.5f, -0.5f, -1f, 
    0.5f, 0.5f, -1f, 


    }; 
    private static final byte[] indices = { 
     0, 2, 1, 
     0, 3, 2, 

     1,2,6, 
     6,5,1, 

     4,5,6, 
     6,7,4, 

     2,3,6, 
     6,3,7, 

     0,7,3, 
     0,4,7, 

     0,1,5, 
     0,5,4 
    }; 

,這裏是我的旋轉模式功能:

glRotatef(rotation.x,1,0,0); 
glRotatef(rotation.y,0,1,0); 
glRotatef(rotation.z,0,0,1);` 

我使用LWJGL但我能讀懂C++就好了。

+5

glTranslate在哪裏?操作順序很重要。 – Tim

回答

3

由於您的代碼不完整,我必須猜測一點,但我懷疑您做了以下事情。

您在z方向上做了一個.5的平移以使您的對象成爲原點,然後應用旋轉。期望它能夠扭轉現在位於物體內部的原點。有意義但不幸的是,這不是OpenGL的工作原理。

當您翻譯對象時,整個座標系統將與它一起翻譯。所以當你圍繞原點旋轉時,原點仍然是你物體旁邊的一個點。

您必須改變訂單。所以你首先旋轉對象然後翻譯對象。請注意,當您旋轉對象時,座標系也隨之旋轉,因此無論您旋轉對象多少,您需要平移的數量和方向在z方向仍然爲.5。

+0

好的,我不認爲這是問題,當我得到更多的空閒時間時,我會得到完整的代碼。感謝您及時的回覆。 – Spaceman1701

+0

我剛解決了這個問題!事實證明,我的立方體頂點定義不正確。修復後,它的工作!感謝您的幫助! – Spaceman1701

相關問題