Ogre, LevelEdtior, Project, Release
LevelEdtior截图, 注意有几个地方打错字=____=
功能说明
当前版本只是简单地建立了一个壳
目前支持的功能如下:
- 打开.scene文件建立一个场景
- 打开.proj文件建立工程
- 打开.mesh查看指定的ogre mesh
- 通过WxAui支持动态拖拉窗口面板
- 在Log面板上打印OgreLog信息
----------------------------------------
下一个版本支持如下功能:
1 场景图显示面板
2 属性网格支持
----------------------------------------
场景窗口游历操作指南
----------------------------------------
使用鼠标操作视图相机
鼠标可以被用来选中场景对象和视野相机的移动
选取对象 - 鼠标左键
向上, 下, 左, 右移动移动 按住鼠标中键
旋转相机 按住鼠标右键
向前, 向后移动相机 同时按下鼠标左键和右键
图: AUI放大
开发总结
关于OgreMax
这次的编辑器原型其实就是在读OgreMax的时候顺道重构抽取了些代码出来重新写的... 作为编辑器的原型似乎不错的样子...OgreMax.MaxScene是很不错的DotScene数据驱动载入参考... OgreMax.ActionMap的模板类的代码也是不错的键位映射参考... 通过阅读OgreMax, 相对而言可以更快地熟悉Ogre场景的构成和如何与DDC配合开发...
Scene文件查看器
同时OgreMax提供了用于快速启动的OgreMaxViewer来配合Max导出时的直接查看(你可以在3DSMax里配置Viewer的启动路径和资源关联)... 而OgreMaxWinViwer则提供了一个相对更人性化的场景图查看和属性调整, 截图的应用程序界面。。。
导出工具对Scene格式的支持得也算到位, 最大的缺点就是无法在3dsMax中查看一些效果, 应用材质的时候也要在Max里应用一个Max材质方便查看, 然后再建立一个对应的Ogre材质来提供导出。。。 所有自己的专用地图编辑器还是有必要的...
天空方面则是提供构建一个Max原语来进行OgreMax导出属性的配置, 比如你可以建立一个面, 然后把它的Ogre导出属性设置为天空面, 配合相应的材质, 场景文件中就建立和相应的的天空数据, 而SkyDome和SkyBox也是类似的对应Box和球体原语...
关于代码需要注意的几点是:
OgreMaxWinViewer版本中存在一些问题, 在阅读的时候我重新做了下修正, 比如:
内存泄漏问题, 又如每次载入场景文件的时候都重新建立Root对象的问题等...
关于WxWidget的UI数据驱动
Wx方面要注意的就是在Ogre社区里开放的代码中普遍硬编码UI(编译测试很痛苦的!)
其实应该尽量使用WxRC的数据驱动功能, 这样你不仅可以在xrc文件中读取定义好的Widget类, 也可以读取自己定制实现的Widget类, 编辑器方面我就是简单实用PyWx自带的XrcEdtior, 虽然目前很多方面使用起来都比MFC麻烦, 不过WX的代码相对更加合理和可读, 相对少了MFC那种大量自动生成垃圾代码...
这次顺道借机学习了下WxWidget的使用=_= 大致和QT方面一样同步上手了... 之后会转向使用PyWxWidget和PyQt来进行工具开发...
WxAui的动态拖放和PropertyGrid也是非常不错的功能支持...
因为引擎层功能还不完善, 所以这个主要是根据组里的美工的查看场景和材质需要进行开发的..
关于Ogre开源社区的参考代码
Ogre社区提供了大量的源代码可以参考, 这样顺道可以借机阅读一下其他几个Ogre编辑器的代码, 不过似乎功能都不完善, 当前最看好的是OGE, 构架和设计上都很优先, 但是就是进度太慢了=_= 嘛, 顺道都代码借鉴吧...OgreMVC和官方的材质编辑器Tools的代码也是不错的参考...
AddOns上一堆很好的参考代码来的=_=
作为学习目的和方便使用的开发, 一举两得~
对Symphonie小组3D美工们的建议
个人希望几个3D美工好好的熟悉一下OgreMax的导出器, 虽然当前我不能对Scene格式作出游戏向的定制(游戏向场景集成还需要一些权衡和设计, 比如演出系统的时间轴在其他数据上的集成, 多场景算法切换的利用)
就当前DotScene格式的功能在一定程度上已经可以制作相当不错的图形场景了... =_= 争取至少先把导出器上DotScene的功能先充分利用...
残后话
吐槽一下... 其实编辑器界面上我倾向于SandBox和FXC那样的... 所以在思考编辑器如何开发时经常开着这2个编辑器发呆XD。。。
囧 嘛...今天就先到这~ 一些东西比如定制数据类型啊, 物理, AI在场景图上的集成, 地形刷子, 空间分割文件之类的...留在之后的文章里再做讨论....(死