2013-05-05 200 views
0

我想在OpenGL中移動一個對象。我在(0,0,0)中繪製對象,如果對象位於該點上,它將很好地旋轉(使用對象的中心作爲旋轉的參考)。當我移動物體時會出現問題,它會使用與參考點相同的點進行旋轉,而不是旋轉點。該代碼是:在OpenGL中旋轉對象

glPushMatrix(); 
glRotatef(xangle,1.0f,0.0f,0.0f); 
    glRotatef(yangle,0.0f,1.0f,0.0f); 
    glRotatef(zangle,0.0f,0.0f,1.0f); 
    glTranslatef(x,y,z); 
//draw object 
    glPopMatrix(); 

有誰知道它有這樣做的目的總是使用旋轉它是作爲參考點?

+0

見http://gamedev.stackexchange.com/a/16721/1134 =) – leander 2013-05-05 20:21:10

+0

謝謝:)。翻譯點我該怎麼辦? – Jack 2013-05-05 20:30:09

回答

1

只需重新排序轉換:

glPushMatrix(); 
glTranslatef(x,y,z); 
glRotatef(xangle,1.0f,0.0f,0.0f); 
glRotatef(yangle,0.0f,1.0f,0.0f); 
glRotatef(zangle,0.0f,0.0f,1.0f); 
//draw object 
glPopMatrix(); 
+0

如果我這樣做,對象旋轉正常,但問題是翻譯(它有一個前面和後面的部分),因爲它可以翻譯移動兩邊,當它應該移動使用正面或背面。 – Jack 2013-05-05 20:36:58

+0

我不明白。前後部分是什麼?當它不應該發生什麼樣的動向? – 2013-05-05 20:42:59

+0

該對象有一個前部和後部,我用鍵盤使用翻譯向前和向後移動它。如果平移是在旋轉之前旋轉,那麼對象不會沿前/後部分的方向移動。 – Jack 2013-05-05 20:56:49