这几天在用Ogre读取Ogitor的场景,遇到了不少问题,在网上也找不到详细的说明,虽然读取Ogitor的场景对很多人来说太简单了,但对一些新手来说就有点难了,我刚开始就觉得是无从下手,因此简单的描述下读取过程和一些常见问题,希望对一些新手有所帮助,高手就可以跳过了O(∩_∩)O~
我简单的分为2大步:
1.学会简单的使用Ogitor,新建自己的场景,然后导出为scene场景文件
Ogitor的简单操作我就不再详述了,直接引用网上的:
一、基本控制
1.场景中的坐标:x轴z轴表示左右,Y表示上下
2.QWEASD:摄像机方向、行走控制(在“Fly”与“Walk”模式下,作用略有不同)
3.鼠标中键+移动:晃动摄像机镜头
4.鼠标右键+移动:旋转摄像机镜头
5.Alt+Mouse Wheel:靠近或远离选中对象
6.Alt+鼠标右键+移动:摄像机围绕选中物体旋转
7.将摄像机放置到Scene Tree中选中的对象前:双击Scene Tree中的对象名字或按“F”键(只有场景在“Fly”模式下才有效)
8.增加摄像机移动速度:场景工具条中的“Speed+”(图标为带加号的摄像机)
9.减慢摄像机移动速度:场景工具条中的“Speed-”(图标为带减号的摄像机)
10.鼠标左键+移动:选中多个模型
11.选中多个模型:按住Shift键,依次点击需要选中的模型
12.从多个选择中去掉某个模型:按住Ctrl,依次点击不需要的模型——与Shift多选功能相反
13.复制模型:Shift+移动某个模型
14.移动模型使其贴到其他模型或地表上方:Ctrl+移动模型(不怎么灵敏,比手动好一点)
15.End键:高亮操作模型(移动,旋转,放缩)控件的一个轴
2.新建一个场景:
1.打开新建一个场景的对话框(Project Settings),如下图:选择Project的存放位置,输入Project的名字。在Assets选项页中,单击鼠标右键,选择模型的Mesh及Material、贴图的存放位置(自己的模型等资源在这里添加,也可以项目建好后再重新设置)
2.新建好之后,可以在编辑器中看到一个空的场景,这时我们可以向场景中添加基本的对象——地形,天空,水体等等,编辑器都有提供,在Objects面板中,直接将所需对象拖入到场景中即可。
Terrain Group:地形组,拖动场景中(此时场景中并没生成地形,只是提供了地形的一个组,Ogitor中地形的最好单位是Page,Terrain Group由许多的Page构成)
Caelum:天空盒
Hydrax:水体
将对象拖入到场景中后,可以在Scene tree中看到各对象的名字,点击对象,可以在属性面板编辑他们的属性。
3.添加地形Page
在Scene面板树中,右击Terrain Group,选中Add Page。弹出对话框,选中page的位置和基本的地表纹理设定,确定之后就可以在Scene面板树中看到刚才添加的page,在场景中也可以看到基本的地形了
Page位置:Page的名字坐标与在场景中的位置如下图
每增加一个Page,在工程文件夹下的terrain文件夹下会增加两个文件,一个.ogt文件,一个.tga文件。一个Page对应这两个文件。Page的坐标名与这两个名的对应关系如下:
Page_0000ffff.ogt是由Page0x-1生成的。一个.ogt文件的前4个字符(这里是0000)对应page名字的第一个坐标(这里是0);ogt文件的后四个字符(这里是ffff)对应page名字的第二个坐标(这里是-1).
00000
10001
正数如上,依次类推
-1ffff
-2fffe
其他负数,收集中
3.编辑地形
Shift+地形升高:降低地形
地形编辑工具可以调整笔刷的样式,大小,强度等
Splat:地表贴图
Shift+地表贴图:擦掉这种地表贴图
一个Page最多支持6种不同的地表贴图,当发现地表贴图不能刷到地形上时,有两种情况:
1.这个Page的地形贴图也达到6种(可以在这个Page的属性property中看到Layers是否已达到6)
2.笔刷纹理已在当前刷的地方,只是上面覆盖了另一层不同的纹理(如一个page的同一个地方上有Layer0纹理A,Layer1纹理B,如果此时笔刷上的纹理为A,用A来刷这个地方,则没反应,此时正确的做法是:将笔刷上的纹理调整为B,按住Shift键,擦除纹理B,使纹理A露出来)
Paint:(ColorMap)
使用颜色纹理,此功能默认不启用,如要启用可以在Terrain Group的属性中勾选Colour Map
Splat Grass:在地表添加草(暂时不要在场景中使用此功能)
2.用Ogre读取导出的scene场景文件
导出的场景文件:
2.1把Ogitor自带的例子代码拷到自己的工程里
目录关系自己定(附加包含目录里添加例子文件的头文件,也可以不加,只要例子cpp文件能找到相应的头文件就行了,附加依赖项加上OgreTerrain_d.lib(根据实际情况来),然后就开始编译代码,编译过程中可能会找不到XX头文件,自己相应的添加就可以了,res文件夹也要拷的。
BaseApplication.cpp文件的bool BaseApplication::setup(void)方法下有个读取插件配置的改成这样mRoot = new Ogre::Root("plugins.cfg") (如果直接把bin下那个文件改成和他一样也可以,那就不用改这里了)
2.2把导出的相应文件放到自己的资源路径下,并在resources.cfg添加相应的路径(注意:要加到[General]下,不然读出的地形看不到)
2.3Ogitor的bin目录下有个SampleAppConfig.xml,拷到你的exe生成目录下,<SampleApp projectDir="Media/scene/prj1" scene="mscene.scene"/>改成你自己相应的
(到这里就应该可以编译出你的EXE了,点击运行就能看到场景了,如果有遗留的话我再补充!)
分享到:
相关推荐
ogitor编译全过程 ogitor0.5.4+vs2008+WIN32+QT4.8.0+ogre1.8.0
ogre开发的简单场景编辑器 xgEditorogre开发的简单场景编辑器 xgEditor
ogre开发的简单场景查看器源码 xgEditor
ogre 网格读取与显示
1.在3Dmax中使用ogremax导出scene 2.ogremaxViewer检测scene可用性 3.把scene放入$OGRE_HOME$/media下 4.修改代码中载入资源的名称,编译运行
ogre 场景 编辑器
场景组织是整个 Engine的灵魂, 而且到目前为止没有适用于任何场景的场景组织方式,所以都是以 Abstract Factory方式进行组织,然后根据不同的场景采用不同的场景组织方式,再进行绘制。 场景组织就像一个舞台, ...
ogre场景编辑器ogitor0.5.4版本,适应ogre1.10版本。通过VS2015编译而成。
Ogre3D场景编辑器,自制软件开源,使用Ogre 3D渲染引擎
演示了BSP室内场景管理器(ST_INTERIOR)的使用,取自OGRE的BSP例子。一般例子都使用普通场景管理器(ST_GENERIC)。
该框架程序用于将嵌入到3ds中的ogreMax插件所产生的scene文件,导入到ogre中。方法:将压缩文件models文件释放到$(ogre_home)\media\models下即可。
ogre场景组织分析.pdf OGRE的消息机制.pdf Ogre的渲染系统(Rendering System).pdf OGRE分析之场景管理.pdf OGRE分析之场景渲染.pdf OGRE分析之设计模式(1234).pdf OGRE分析之文件系统(1234).pdf ogre数据文件...
自制软件开源,使用Ogre 3D渲染引擎,BCG界面库。
OGRE分析之场景管理,对于学习ogre的很有帮助
3D MESH格式 大场景模型 可用于OGRE场景调试
对Ogre引擎的源码进行分析,从消息,文件,数据,场景渲染等方面进行了详细的介绍。
ogre场景组织分析
利用ogre实现游戏场景的设计,适合初学ogre的初学者学习。
基础教程一 场景管理器,场景节点和实体 基础教程二 摄影机,阴影和光照处理 基础教程三 天空,地面和雾化处理 基础教程四 帧监听器和非缓冲输入 基础教程五 缓冲输入 基础教程六 CEGUI和OGRE 基础教程七 ...
OGRE导入mesh的过程, 展示了OGRE读取文件,获得文件头部的格式信息,得到顶点和法线信息,然后读取数据并显示的过程