Gizmo可以理解為坐標軸,就是3D軟件里3個軸并可以調整對象的各種變換屬性的東西.
繪制Gizmo其實很簡單,這里只說箭頭的繪制中的一些技巧.一開始我的做法是MAX里建模,如圖
然后創建3個模型對象,以Z為父級(我的坐標系是Z朝上), X,Y分別掛接Z節點
按照Ogitor中的介紹,需要將Z關閉繪制,結果,繪制順序有錯誤
正確的效果應該是藍色(Z軸,朝上)蓋住綠色的Y軸.
這就涉及到X,Y,Z軸模型在Z關閉后的繪制順序,需要通過檢查對象的位置,按照從遠到近的順序進行繪制.
但是一開始每個軸的單位坐標都是在箭頭的下部,因此,怎么旋轉攝像機,都只能出1個繪制順序.這就是問題所在. 因此,決定重新修改箭頭的本地坐標系,調整為下圖所示
MAX中,將箭頭作為本地坐標原點, 并修改排序算法,對Z關閉后的對象按照畫家算法排序,如圖:
繪制效果正確.
解決這個問題時,我查閱了Ogitor代碼,并在Ogitor編輯器資源里找到了箭頭資源,但是代碼中并沒有用到這個資源,而是改用
AxisGizmo::createMesh(Ogre::SceneManager *manager, Ogre::String name)
函數用代碼方式創建Gizmo,估計也是和我碰到一樣的問題吧