果然验证了简单的问题不简单,想要弄个导航立方体,遇到了各种各样的难题
首先是Ogre貌似并不能直接导入3ds模型,Ogre仅支持自己的.mesh格式的模型
所以我要通过一个叫做3ds2mesh的工具把我的立方体3ds转换成mesh
第二个难题是为立方体贴图
因为6个面标识着六个方向,所以要为六个不同的面贴不同的图
这就意味着我第一步的工作白费了!无法为一个现成的,空白的六面体贴图
这就意味着,要不我就用3dsMax把贴好图的立方体导出来,要不我就用代码生成一个立方体,并同时为每一个面定义贴图
我选择后者。(参考资料的传送门:http://0flyingpig0.blog.163.com/blog/static/9937055620101209433665/)
第三个难题是,Ogre管理Material(材质)的方法和Irrlicht真的是完全不一样
在Ogre里面,如果想要控制光照,反面裁剪,纹理贴图,就要自己新建一个Material,并给Entity赋予这个Material
而Irrlicht里面只用设个标志位就好了
我不能说哪种方法更好,不过看起来Irrlicht的方法更简单,而Ogre的方法更专业
另外,材质也是可以使用脚本的,脚本后缀名为.material
(脚本使用方法传送门:http://www.ogre3d.org/docs/manual/manual_14.html#SEC23)
(脚本教程传送门:http://www.ogre3d.org/tikiwiki/MadMarx+Tutorial+7&structure=Tutorials)
第四个难题揭示了我是多么的天真。
现在我已经弄好了六面体,并且把它摆在场景中央
一切看起来正常,六面体的正面正对着我。
貌似此时需要做的只是写玩导航逻辑就大功告成,也就是说我拖动六面体,场景镜头就会转动
可是我觉得把一个导航块放在场景中间有些不合适,所以我决定把它放在旁边
尼玛啊……
它在逻辑上是朝向这正面,但是由于视角问题,变得好像不是朝向正面
解决方法我先在想到的有两种
第一种是让它倾斜一个角度朝向我,并把这个方向当做是初始方向,以后的旋转镜头都加上这个偏移量
第二种是将这个六面体渲染成一张texture(RTT)并贴出来
我先试试看第一种方法……
另外,Ogre管理资源的方法真的是非常的诡异,有空我要好好看看这篇东西http://www.ogre3d.org/tikiwiki/Resources+and+ResourceManagers&structure=Tutorials