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,估计也是和我碰到一样的问题吧