1. 程式人生 > >【轉】Ogitor中Gizmo的繪製技巧

【轉】Ogitor中Gizmo的繪製技巧

   Gizmo可以理解為座標軸,就是3D軟體裡3個軸並可以調整物件的各種變換屬性的東西.

    繪製Gizmo其實很簡單,這裡只說箭頭的繪製中的一些技巧.一開始我的做法是MAX裡建模,如圖

image

然後建立3個模型物件,以Z為父級(我的座標系是Z朝上), X,Y分別掛接Z節點

按照Ogitor中的介紹,需要將Z關閉繪製,結果,繪製順序有錯誤

image

正確的效果應該是藍色(Z軸,朝上)蓋住綠色的Y軸.

這就涉及到X,Y,Z軸模型在Z關閉後的繪製順序,需要通過檢查物件的位置,按照從遠到近的順序進行繪製.

但是一開始每個軸的單位座標都是在箭頭的下部,因此,怎麼旋轉攝像機,都只能出1個繪製順序.這就是問題所在. 因此,決定重新修改箭頭的本地座標系,調整為下圖所示

image

MAX中,將箭頭作為本地座標原點, 並修改排序演算法,對Z關閉後的物件按照畫家演算法排序,如圖:

image

繪製效果正確.

解決這個問題時,我查閱了Ogitor程式碼,並在Ogitor編輯器資源裡找到了箭頭資源,但是程式碼中並沒有用到這個資源,而是改用

AxisGizmo::createMesh(Ogre::SceneManager *manager, Ogre::String name)

函式用程式碼方式建立Gizmo,估計也是和我碰到一樣的問題吧