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