2015-03-25 197 views
0

因此,目前我正在爲我的課程工作制作一個基於飛行火箭的想法的遊戲,我花了太多時間思考它背後的物理原理,我完全忽略讓它正確移動。 例如,當我要繪製頂部指向天空的圓錐體時,我將其旋轉到X軸上,但是如果我在Y軸上平移它,它將在全局Y軸上移動,而不是在其本地座標上系統將使Y軸指向圓錐頂部。 我的問題是openGL有一個本地座標系統,還是我必須以某種方式創建自己的轉換矩陣,如果有的話,我該怎麼做。OpenGL在基於旋轉的局部座標系上轉換一個對象

的方式我做的變換和旋轉如下:

glPushMatrix(); 
    glTranslatef(llmX, llmY + acceleration, llmZ); 
    glRotatef(rotX, 1.0f, 0.0f, 0.0f); 
    glRotatef(rotY, 0.0f, 0.0f, 1.0f); 
    drawRocket(); 
glPopMatrix(); 

這裏是一個更好的圖片說明我的意思是希望提供一個更好的解釋。 enter image description here

編輯:我發現它真的很奇怪,旋轉似乎一個接一個地工作,如果我在X軸上旋轉一次,然後繼續在Z軸上旋轉它從已旋轉X軸代替世界X軸。

希望有人能幫助我理解這一點,真的需要得到它爲我的項目工作。 謝謝。

回答

1

如果您正在使用平移矩陣向上移動(即沿正Y方向移動),無論您在矩陣堆棧中還是在轉換過程中,都將移動正Y中的頂點方向。

如果你不是想它以旋轉的方向移動的話,建議沿Y軸第一翻譯,然後再旋轉到你想要的角度。本質上,以相反的方式推動矩陣。

+0

這確實有效,一旦它旋轉了,它就會在旋轉的軸上變換,但它不會圍繞它自己的軸旋轉,而且看起來好像繞着(0,0,0)世界座標旋轉,如果以某種方式旋轉將圍繞它自己的軸旋轉,一切都將被解決。 – 2015-03-25 10:22:59

+0

@MichaelCross是的,即使對象從原點平移,所有旋轉都發生在0,0,0附近。爲了圍繞自己的軸旋轉,在進行任何平移之前應用旋轉,而軸位於原點。 – Thomas 2015-03-26 01:32:05

+0

花了很長時間回到它,仍然有相同的問題嘗試了一些方法來做運動和旋轉,我仍然無法讓它正常工作......要麼它自己的軸旋轉,但翻譯全局軸或它在全局軸上旋轉但在本地軸上移動。 – 2015-04-08 21:56:46

相關問題