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();
這裏是一個更好的圖片說明我的意思是希望提供一個更好的解釋。
編輯:我發現它真的很奇怪,旋轉似乎一個接一個地工作,如果我在X軸上旋轉一次,然後繼續在Z軸上旋轉它從已旋轉X軸代替世界X軸。
希望有人能幫助我理解這一點,真的需要得到它爲我的項目工作。 謝謝。
這確實有效,一旦它旋轉了,它就會在旋轉的軸上變換,但它不會圍繞它自己的軸旋轉,而且看起來好像繞着(0,0,0)世界座標旋轉,如果以某種方式旋轉將圍繞它自己的軸旋轉,一切都將被解決。 – 2015-03-25 10:22:59
@MichaelCross是的,即使對象從原點平移,所有旋轉都發生在0,0,0附近。爲了圍繞自己的軸旋轉,在進行任何平移之前應用旋轉,而軸位於原點。 – Thomas 2015-03-26 01:32:05
花了很長時間回到它,仍然有相同的問題嘗試了一些方法來做運動和旋轉,我仍然無法讓它正常工作......要麼它自己的軸旋轉,但翻譯全局軸或它在全局軸上旋轉但在本地軸上移動。 – 2015-04-08 21:56:46