转:OGRE场景管理器介绍

一个场景代表在虚拟世界中显示的物品。场景可以包括静态几何体(比如地形或者室内),模型(比如树、椅子等),光和摄像机。场景有下面种类。室内场景:可能由走廊、有家具的屋子和挂着装饰品的墙组成。室外场景:可能由山,树木,微微摇动的草地,飘着云彩的天空组成。Ogre提供了一套不同的场景管理器,每一种特别支持某种场景,本文档将列出Ogre提供的场景管理器和它们的优缺点。

选择一个场景管理器

你可以通过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需要切开
时间: 2024-11-04 19:33:34

转:OGRE场景管理器介绍的相关文章

转:Ogre的八叉树场景管理器OctreeSceneManager

上面是我绘制的一张图. 关于八叉树场景管理器主要需要关注两个类,其一是松散八叉树的数据结构Ogre::Octree,其二是八叉树场景管理器Ogre::OctreeSceneManager. 下面摘录图片中的文字: 松散八叉树的数据结构. 属性:其中mBox为其包围盒,mHalfSize定义为包围盒大小的一半.mChildren是一个大小为8的静态数组,里面保存了8个Octree指针,由八叉树场景管理器创建,由本类管理.mNodes为挂接到当前八叉树上面的八叉树场景节点,mNumNodes保存了挂

Windows Server 2012 R2 服务器管理器介绍和配置使用

1. 服务管理器是用于管理系统服务的管理工具.一般常用于windows系统,使用这个工具你可以启动.停止服务:设置服务是自动.手动启动或禁用:查看某个服务的相关信息:设置服务以什么用户启动等等(一般包括了超级管理员用户.管理员用户和游客用户):设置用户注销,软件等 2. 服务器管理器配置: http://www.jb51.net/os/windows/63454.html http://bbs.51cto.com/thread-953444-1-1.html Windows防火墙:控制面板-->

Spark集群管理器介绍

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器.Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式:如果是想让Spark部署在其他集群上,各应用共享集群的话,可以采取两种集群管理器:Hadoop Yarn 或 Apache Mesos. 一.独立集群管理器 Spark独立集群管理器提供的在集群上运行应用的简单方法.要使用集群启动脚本,按照以下步骤执行即可:1.将编译好的Spark发送到集群的其他节

转:Ogre源码剖析 - 场景管理之Octree

由于本人的引擎ProjectGaia服务于08年创新杯的游戏项目 – 3D太空游戏,所以理所应当加入Octree(八叉树 – 已经周宁学长发帖介绍过)场景管理器.参考了无数Octree的代码,发现还是我们可爱的Ogre写的最好,于是狂看n千行代码,把精髓提取出来给大家共享. 鉴于我们游戏版教程又n久没有更新了,今天发一篇我对Ogre场景管理器之Octree源代码分析的笔记. 所有代码采用伪代码. 首先回顾一下Ogre场景管理的架构 Ogre以插件形式提供了多种场景管理器 1. BSP管理用于支持

使用laravel快速构建vuepress管理器

使用laravel快速构建vuepress管理器 介绍 刚刚学了下laravel感觉很方便,最近也在用vuepress做个人博客,但是感觉每次写文章管理文章不是特别方便,就使用laravel写了这个vuepress cms管理器,放在电脑本地,改个host使用很方便,编辑文章到创建文件,推送仓库,很方便. 独立文章和文件 ,就算不使用vuepress主题了,也可以当做普通的文章cms管理 有图床功能,默认阿里云oss 仓库地址 直达仓库 直达我的个人页面 开始界面 原生主题和reco主题都可选,

Ogre bsp场景管理笔记

1.用到的知识点 如何判断点在平面哪一边? 以及判断aabb盒子在面的哪一边? Real Plane::getDistance (const Vector3& rkPoint) const { return normal.dotProduct(rkPoint) + d; } //----------------------------------------------------------------------- Plane::Side Plane::getSide (const Vect

Node.js包管理器Yarn的入门介绍与安装

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱虽然是个半桶水的咸鱼前端,不过也得跟上 Javascript 这股潮 (hong) 流 (huang) 的脚步,所以便有了下面这篇文章.大概的浅尝了一下这个自称是又快又可信赖又安全的包管理,所以写的内容不会很详细,更多的可能只是针对这个全新的包管理与 npm 的不同之处来对比.也可能有些地方写得不对

09应用输入管理器转动场景--《程序员学Unity3d》

为什么极品飞车等等游戏,都可以通过系统设置很方面地根据自己喜欢设置操作方式,有人喜欢用箭头来控制没有喜欢用用"W,S,A,D"来控制,这就说明了程序员不会把控制方式写死在程序里面,来看看Unity3d如何让用户可以随时修改"快捷键". 优点:不仅方便后期维护,也可以减少很多代码. Edit --Project Settings -- Input 打开输入管理器 前面17组是系统配置的,可以修改或删除. 将Size改为18,新增一组.(名称为Test,对应按键为 a)

nuget包管理器控制台下的powershell脚本介绍

http://personball.com/powershell/2016/07/15/powershell-tips 定制自己的powershell,减少重复工作 安装一系列自己的常用nuget包 项目做多了,有时候发现自己新建项目时,总是要花费半天或者几十分钟去新建一个新项目,一个一个地安装完所有常用的包. 对于码农,这重复劳动不可忍! 打开nuget包管理控制台,输入code $profile,在打开的文件中,输入如下脚本 function Install-PackageForAbpUni