SceneManagersFAQ
From Ogre Wiki
一個場景代表在虛擬世界中顯示的物品。場景可以包括靜態幾何體(比如地形或者室內),模型(比如樹、椅子等),光和攝像機。
場景有下面種類。室內場景:可能由走廊、有家具的屋子和掛著裝飾品的墻組成。室外場景:可能由山,樹木,微微搖動的草地,飄著云彩的天空組成。
Ogre提供了一套不同的場景管理器,每一種特別支持某種場景。
本文檔將列出Ogre提供的場景管理器和它們的優缺點。
[edit]
選擇一個場景管理器
你可以通過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場景管理
八叉樹場景管理器(Octree Scene Manager)
用八叉樹分割場景,對于多數場景效果良好,除了那些非常封閉的場景。
優點:
缺點:
地形場景管理器(Terrain Scene Manager )
terrain scene manager 是為非常小的包含靜態地形的場景所設計的。這個場景管理器方便從高度圖來產生場景。(譯注:也就是說有高度圖就用不了八叉樹了?倒……)
優點:
- 可以很快渲染高分辨率的地形
- 可以很方便地由高度圖和地形材質產生地形
- 材質可以使用shader
缺點:
具體描述地形管理器的文檔可以在這里找到。
自然場景管理器 (Nature Scene Manager:插件)
似乎沒人用,略。
分頁場景管理器(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 插件
- 需要用地圖工具來產生分頁
- 更多的選擇也意味著更復雜
BSP 場景管理器
該場景管理器用來管理室內場景。特別會優化那種有交錯的墻壁和走廊組成的場景。
為BSP場景管理器產生level的步驟簡要如下:
- 可以用 各種level編輯工具來創建你的level,用.map格式保存
- 將.map格式編譯成Quake 3的.bsp格式,這種格式可以被BSP場景管理器讀取。(可以用q3map3來轉換)
優點:
缺點:
- 現在可能有一些GPU處理不了Quake 3的 .bsp 格式
- 一些人建議不要用Blender來創建level, 而是要導出為.scene格式
DotSceneOctree 場景管理器(插件)
DotSceneOctree 場景管理器可以令幾何體和mesh存在同一個文件中。
優點:
- 可以在一個文件中包括所有場景
- meshes可是是靜態或者動態
- 支持八叉樹
Cons:
- 需要工具來建立八叉樹文件 (.bin)
- 不支持32 bit indices,所以大的mesh需要切開