SceneManagersFAQ
From Ogre Wiki
一個(gè)場(chǎng)景代表在虛擬世界中顯示的物品。場(chǎng)景可以包括靜態(tài)幾何體(比如地形或者室內(nèi)),模型(比如樹、椅子等),光和攝像機(jī)。
場(chǎng)景有下面種類。室內(nèi)場(chǎng)景:可能由走廊、有家具的屋子和掛著裝飾品的墻組成。室外場(chǎng)景:可能由山,樹木,微微搖動(dòng)的草地,飄著云彩的天空組成。
Ogre提供了一套不同的場(chǎng)景管理器,每一種特別支持某種場(chǎng)景。
本文檔將列出Ogre提供的場(chǎng)景管理器和它們的優(yōu)缺點(diǎn)。
[edit]
選擇一個(gè)場(chǎng)景管理器
你可以通過(guò)getSceneManager 方法選擇一種場(chǎng)景管理器,來(lái)代替默認(rèn)的ST_GENERIC :
Dagon 1.2 version 以后版本:
mRoot->createSceneManager (ST_GENERIC);
老版本:
mRoot->getSceneManager (ST_GENERIC);
它們的參數(shù)有以下值可選擇:
- ST_GENERIC – 如果你設(shè)定加載Plugin_OctreeSceneManager 將使用八叉樹管理, 如果你設(shè)定加載Plugin_DotSceneManager 就可以加載DotScene (.scene)
- ST_EXTERIOR_CLOSE – 地形場(chǎng)景管理Terrain_Scene_Manager
- ST_EXTERIOR_FAR – 自然場(chǎng)景管理(Nature scene manager)
- ST_EXTERIOR_REAL_FAR – 分頁(yè)場(chǎng)景管理Paging_Scene_Manager
- ST_INTERIOR – BSP場(chǎng)景管理
八叉樹場(chǎng)景管理器(Octree Scene Manager)
用八叉樹分割場(chǎng)景,對(duì)于多數(shù)場(chǎng)景效果良好,除了那些非常封閉的場(chǎng)景。
優(yōu)點(diǎn):
- 一個(gè)簡(jiǎn)單的解決方案,對(duì)于多數(shù)場(chǎng)景實(shí)用。
- 如果有大量靜態(tài)幾何體,可以用StaticGeometry 類來(lái)加速
缺點(diǎn):
- 對(duì)特殊的場(chǎng)景結(jié)構(gòu)沒有加速
- 不適用于非常封閉的空間
地形場(chǎng)景管理器(Terrain Scene Manager )
terrain scene manager 是為非常小的包含靜態(tài)地形的場(chǎng)景所設(shè)計(jì)的。這個(gè)場(chǎng)景管理器方便從高度圖來(lái)產(chǎn)生場(chǎng)景。(譯注:也就是說(shuō)有高度圖就用不了八叉樹了?倒……)
優(yōu)點(diǎn):
- 可以很快渲染高分辨率的地形
- 可以很方便地由高度圖和地形材質(zhì)產(chǎn)生地形
- 材質(zhì)可以使用shader
缺點(diǎn):
- 沒有分頁(yè)- 有hooks接口但是你需要添加它
具體描述地形管理器的文檔可以在這里找到。
自然場(chǎng)景管理器 (Nature Scene Manager:插件)
似乎沒人用,略。
分頁(yè)場(chǎng)景管理器(Paging Scene Manager:插件)
Paging Scene Manager 可以將場(chǎng)景分成多頁(yè)。只有哪些正在被使用的頁(yè)面才會(huì)顯示,隨意可以用在非常大的場(chǎng)景上。每個(gè)頁(yè)有自己的高度圖,并且可以使用不同材質(zhì)。(可以創(chuàng)建綠色平原上的雪山之類的場(chǎng)景)
優(yōu)點(diǎn):
- 可以處理比terrain and nature scene managers更大的場(chǎng)景
- 允許實(shí)時(shí)卸保存載地形
- 允許多個(gè)高度圖,每個(gè)高度圖允許多材質(zhì)
- 地圖工具 ( "Mapsplitter") 可以將大地圖和材質(zhì)分成頁(yè)
- 支持16 bits per height 的Raw 格式的高度圖
- 實(shí)時(shí)改變地圖和材質(zhì)
- Demo: http://tuan.kuranes.free.fr/Ogre.html
- Horizon Occlusion Visibility Real-time determination:比如山之后的物體不會(huì)被送到顯卡處理
- 支持八叉樹
缺點(diǎn):
- 需要安裝paging scene manager 插件
- 需要用地圖工具來(lái)產(chǎn)生分頁(yè)
- 更多的選擇也意味著更復(fù)雜
BSP 場(chǎng)景管理器
該場(chǎng)景管理器用來(lái)管理室內(nèi)場(chǎng)景。特別會(huì)優(yōu)化那種有交錯(cuò)的墻壁和走廊組成的場(chǎng)景。
為BSP場(chǎng)景管理器產(chǎn)生level的步驟簡(jiǎn)要如下:
- 可以用 各種level編輯工具來(lái)創(chuàng)建你的level,用.map格式保存
- 將.map格式編譯成Quake 3的.bsp格式,這種格式可以被BSP場(chǎng)景管理器讀取。(可以用q3map3來(lái)轉(zhuǎn)換)
優(yōu)點(diǎn):
- 可優(yōu)化室內(nèi)場(chǎng)景
- 很多level編輯工具可選擇
缺點(diǎn):
- 現(xiàn)在可能有一些GPU處理不了Quake 3的 .bsp 格式
- 一些人建議不要用Blender來(lái)創(chuàng)建level, 而是要導(dǎo)出為.scene格式
DotSceneOctree 場(chǎng)景管理器(插件)
DotSceneOctree 場(chǎng)景管理器可以令幾何體和mesh存在同一個(gè)文件中。
優(yōu)點(diǎn):
- 可以在一個(gè)文件中包括所有場(chǎng)景
- meshes可是是靜態(tài)或者動(dòng)態(tài)
- 支持八叉樹
Cons:
- 需要工具來(lái)建立八叉樹文件 (.bin)
- 不支持32 bit indices,所以大的mesh需要切開