我正在研究某些3D圖形的文件格式,並且遇到了將單獨網格的繪製順序解釋爲單個對象的問題。每個網格通過一個樞軸與前一個網格相連,包含一個父索引(下一個樞軸連接),一個平移和一個旋轉 - 這些通常被稱爲骨骼。操作的順序不容易通過反覆試驗來確定 - 有太多的可能性。繪製旋轉物體之間的骨骼
我在即時模式下在同一時間畫這個,一個網格,並辦理使用glRotate
和glTranslate
樞軸的堆棧。在這幅圖中,用不同顏色的網格繪製正確的平移和旋轉值 - 顯然一個或多個操作仍然是錯誤的順序。
爲了幫助調試這個,我想從每個網格的中心點繪製一條連接線到它應該連接的一條連線。但是,這在立即模式下似乎不可行!
僞代碼:
.. rotate/translate pivot #1
.. draw mesh #1 ..
glBegin (GL_LINES);
glVertex3fv (center);
glEnd();
.. rotate/translate pivot #2
glBegin (GL_LINES);
glVertex3fv (center);
glEnd();
是不可能的,因爲GL_LINES
只對頂點的工程之間,並且不能使用glRotate
和glTranslate
內glBegin
和glEnd
。
手動計算每個單獨點的旋轉和平移矩陣,還是OpenGL被強制爲「記住」上次使用的頂點,以便與下一個GL_LINES
命令一起使用?