转:OGRE场景管理器介绍
一个场景代表在虚拟世界中显示的物品。场景可以包括静态几何体(比如地形或者室内),模型(比如树、椅子等),光和摄像机。场景有下面种类。室内场景:可能由走廊、有家具的屋子和挂着装饰品的墙组成。室外场景:可能由山,树木,微微摇动的草地,飘着云彩的天空组成。Ogre提供了一套不同的场景管理器,每一种特别支持某种场景,本文档将列出Ogre提供的场景管理器和它们的优缺点。
- 1 选择一个场景管理器
- 2 八叉树场景管理器(Octree Scene Manager)
- 3 地形场景管理器(Terrain Scene Manager)
- 4 自然场景管理器(Nature Scene Manager –插件)
- 5 分页场景管理器(Paging Scene Manager –插件)
- 6 BSP 场景管理器
- 7 DotSceneOctree 场景管理器 (插件)
选择一个场景管理器
你可以通过getSceneManager 方法选择一种场景管理器,来代替默认的ST_GENERIC :
Dagon 1.2 version 以后版本:
mRoot->createSceneManager (ST_GENERIC);
老版本:
mRoot->getSceneManager (ST_GENERIC);
它们的参数有以下值可选择:
- ST_GENERIC – 如果你设定加载Plugin_OctreeSceneManager 将使用八叉树管理, 如果你设定加载Plugin_DotSceneManager 就可以加载DotScene (.scene)
- ST_EXTERIOR_CLOSE – 地形场景管理Terrain_Scene_Manager
- ST_EXTERIOR_FAR – 自然场景管理(Nature scene manager)
- ST_EXTERIOR_REAL_FAR – 分页场景管理Paging_Scene_Manager
- ST_INTERIOR – BSP场景管理
1. 八叉树场景管理器(Octree Scene Manager)
用八叉树分割场景,对于多数场景效果良好,除了那些非常封闭的场景。
优点:
- 一个简单的解决方案,对于多数场景实用。
- 如果有大量静态几何体,可以用StaticGeometry 类来加速
缺点:
- 对特殊的场景结构没有加速
- 不适用于非常封闭的空间
2. 地形场景管理器(Terrain Scene Manager )
terrain scene manager 是为非常小的包含静态地形的场景所设计的。这个场景管理器方便从高度图来产生场景。(通过读取media目录下的terrain.cfg文件来生成地形)
优点:
- 可以很快渲染高分辨率的地形
- 可以很方便地由高度图和地形材质产生地形
- 材质可以使用shader
缺点:
- 没有分页- 有hooks接口但是你需要添加它
具体描述地形管理器的文档可以在这里找到。
3. 自然场景管理器 (Nature Scene Manager:插件)
似乎没人用,略。
4. 分页场景管理器(Paging Scene Manager:插件)
Paging Scene Manager 可以将场景分成多页。只有哪些正在被使用的页面才会显示,随意可以用在非常大的场景上。每个页有自己的高度图,并且可以使用不同材质。(可以创建绿色平原上的雪山之类的场景)
优点:
- 可以处理比terrain and nature scene managers更大的场景
- 允许实时卸保存载地形
- 允许多个高度图,每个高度图允许多材质
- 地图工具 ( "Mapsplitter") 可以将大地图和材质分成页
- 支持16 bits per height 的Raw 格式的高度图
- 实时改变地图和材质
- Demo: http://tuan.kuranes.free.fr/Ogre.html
- Horizon Occlusion Visibility Real-time determination:比如山之后的物体不会被送到显卡处理
- 支持八叉树
缺点:
- 需要安装paging scene manager 插件
- 需要用地图工具来产生分页
- 更多的选择也意味着更复杂
5. BSP 场景管理器
该场景管理器用来管理室内场景。特别会优化那种有交错的墙壁和走廊组成的场景。
为BSP场景管理器产生level的步骤简要如下:
- 可以用 各种level编辑工具来创建你的level,用.map格式保存
- 将.map格式编译成Quake 3的.bsp格式,这种格式可以被BSP场景管理器读取。(可以用q3map3来转换)
优点:
- 可优化室内场景
- 很多level编辑工具可选择
缺点:
- 现在可能有一些GPU处理不了Quake 3的 .bsp 格式
- 一些人建议不要用Blender来创建level, 而是要导出为.scene格式
6. DotSceneOctree 场景管理器(插件)
DotSceneOctree 场景管理器可以令几何体和mesh存在同一个文件中。
优点:
- 可以在一个文件中包括所有场景
- meshes可是是静态或者动态
- 支持八叉树
Cons:
- 需要工具来建立八叉树文件 (.bin)
- 不支持32 bit indices,所以大的mesh需要切开
转:OGRE场景管理器介绍的更多相关文章
- 转:Ogre的八叉树场景管理器OctreeSceneManager
上面是我绘制的一张图. 关于八叉树场景管理器主要需要关注两个类,其一是松散八叉树的数据结构Ogre::Octree,其二是八叉树场景管理器Ogre::OctreeSceneManager. 下面摘录图 ...
- [Axiom 3D]3.SceneManager场景管理器
首先看看Axiom.Core命名空间下public abstract class SceneManager : DisposableObject A SceneManager organizes th ...
- ogre3D学习基础11 -- 交换两个场景管理器
这一节,练习一下前几次学习的内容,功能很简单,就是建立两个不同的场景管理器,当按下键盘上某个键时切换镜头. 基本框架不变,这个监听器继承了两个父类,一个是我们的老朋友ExampleFrameListe ...
- 13.Quick QML-RowLayout、ColumnLayout、GridLayout布局管理器介绍、并通过GridLayout设计的简易网站导航界面
上章我们学习了:12.Quick QML-QML 布局(Row.Column.Grid.Flow和嵌套布局) .Repeater对象,本章我们继续来学习布局管理器 1.RowLayout.Column ...
- Swing布局管理器介绍
创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/128174 当选 ...
- Vue Router路由管理器介绍
参考博客:https://www.cnblogs.com/avon/p/5943008.html 安装介绍:Vue Router 版本说明 对于 TypeScript 用户来说,vue-router@ ...
- Windows Server 2012 R2 服务器管理器介绍和配置使用
1. 服务管理器是用于管理系统服务的管理工具.一般常用于windows系统,使用这个工具你可以启动.停止服务:设置服务是自动.手动启动或禁用:查看某个服务的相关信息:设置服务以什么用户启动等等(一般包 ...
- Spark集群管理器介绍
Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器.Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式: ...
- 转:Ogre源码剖析 - 场景管理之Octree
由于本人的引擎ProjectGaia服务于08年创新杯的游戏项目 – 3D太空游戏,所以理所应当加入Octree(八叉树 – 已经周宁学长发帖介绍过)场景管理器.参考了无数Octree的代码,发现还是 ...
随机推荐
- 【手机网络游戏 编程】C#异步socketAPI调用 处理数据的流程
之前客户端在网络条件好的时候,运行没问题.但是有时候手机的网络不稳定,接受数据可能不稳定,导致接受数据错误,一直都不知道,原来是接受数据处理的不够好! 现在更改过后的接受数据的逻辑如下: //接收 p ...
- scrapy框架系列 (2) 一个简单案例
学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的 Spider 并提取出结构化数据(Item) 编写 Item Pipelines 来存储提取到的Item(即结构化 ...
- PHP操作数据库函数比较
常用的php语法连接mysql如下 <?php $link = mysql_connect('localhost', 'user', 'password'); mysql_select_db(' ...
- 让App中增加LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...
- NLP常用信息资源
ACL Anthology,囊括了ACL,EMNLP,CL等NLP领域重要会议和期刊的论文.http://www.aclweb.org/anthology-new/ LDC: The Linguist ...
- 如何三招帮你排查Linux中的硬件问题
下列贴士帮助你更快速更轻松地为Linux中的硬件排查故障.许多不同的因素可能导致Linux硬件出现问题:在你开始尝试诊断之前,了解最常见的问题以及最有可能找到原因的环节是明智之举. Linux服务器在 ...
- 怎样将 MySQL 迁移到 MariaDB 上
自从甲骨文收购 MySQL 后,由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场,很多 MySQL 的开发者和用户放弃了它.在社区驱动下,促使更多人移到 MySQL 的另一个叫 MariaD ...
- Modbus常用功能码协议详解
Modbus常用功能码协议详解 01H-读线圈状态 1)描述:读从机线圈寄存器,位操作,可读单个或者多个: 2)发送指令: 假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x003 ...
- ASP入门(二十一)- 如何自己获取 ADO 连接字符串
1.新建一个文本文件,并将文件名修改为[ado.udl] 注意 如果不显示扩展名,请在资源管理器的[查看 | 选项]对话框中去掉"隐藏已知文件类型的扩展名"勾就可以了. 2.双击这 ...
- APUE 3rd
以下是APUE 3rd edition 的preface,从04年的第二版到现在的第三版,APUE内容有所更新.点击下载. It’s been almost eight years since I fi ...