摘要:在游戲以及虛擬現實中,需要創建大量的虛擬場景,該文利用3D建模工具創建場景模型,通過對模型的轉換,利用OGRE圖形引擎對模型進行實時渲染,提供了高性能的圖形表現。
關鍵詞:面向對象圖形引擎;虛擬場景;虛擬現實
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)30-0720-02
The Construction of the Virtual Scene Based on OGRE
KE Jian, REN Ping
(Department of Computer Engineering,Suzhou Vocational University, Jiangsu 215104, China)
Abstract: A large number of virtual scenes need to be constructed in games and virtual reality. This paper constructs scene models by 3d modeling tools, converts 3ds max models into OGRE models, renders models by OGRE in real time, finally provides high performance graphic effects.
Key words: OGRE; virtual scene; virtual reality
1 引言
在游戲或者虛擬現實中,都需要創建渲染逼真的虛擬場景,面向對象的圖形渲染引擎(Object Oriented Graphics Rendering Engine,OGRE)在場景的渲染方面提供了高效的性能。OGRE是用C++開發的面向對象且使用靈活的3D引擎,它的目的是讓開發者能更方便和直接地開發基于3D硬件設備的應用程序或游戲。引擎中的類庫對更底層的系統庫(Direct3D和OpenGL)的全部使用細節進行了抽象,并提供了基于現實世界對象的接口和其它類。OGRE系統主要包括:渲染系統和渲染插件、材質系統、實體管理系統、圖形界面系統、紋理和圖片解碼器、文件系統和文件解碼器、場景管理插件、粒子系統、日志系統等等。而最后所有的系統全部歸一個OGRE: Root管理[1-3]。
本文利用OGRE創建了一個虛擬場景,提供了對場景的實時漫游操作。
2 虛擬場景模型的創建
無論是游戲還是虛擬現實,為了表現其逼真性,虛擬場景大多比較復雜,一般虛擬場景不會實時創建,虛擬場景的創建大多由3D建模工具生成,然后對場景實時渲染輸出。目前創建虛擬場景模型比較常用的3D建模工具有3DS Max,Maya,XSI等。本文采用3DS Max創建了一個建筑模型。為了便于在編寫代碼時引用場景模型中的各個實體對象,需要對實體對象按規則命名。
3 模型格式的轉換
在OGRE中不能直接使用3DS Max創建的模型,需要把3DS Max文件格式轉換成OGRE支持的格式。轉換后的場景一般由一個.scene文件、多個mesh文件、一個material構成,其中.scene文件對場景中的對象以XML格式進行組織管理,格式如下:
<scene formatVersion=\"1.0\" upAxis=\"y\" unitsPerMeter=\"39.3701\" >
<environment>
<colourAmbient r=\"0\" g=\"0\" b=\"0\" />
<colourBackground r=\"0\" g=\"0.541176\" b=\"0.921569\" />
</environment>
<nodes>
<node name=\"Box116\">
<scale x=\"0.303898\" y=\"1.11268\" z=\"0.578813\" />
<position x=\"-42.5661\" y=\"-72.522\" z=\"153.698\" />
<rotation qx=\"-4.37114e-008\" qy=\"0\" qz=\"0\" qw=\"1\" />
<entity name=\"Box116\" id=\"17454\" meshFile=\"Box116.mesh\" castShadows=\"true\" receiveShadows=\"true\">
<subentities>
<subentity index=\"0\" materialName=\"1\" />
</subentities>
</entity>
</node>
<node name=\"Box3267\">
<scale x=\"0.303898\" y=\"1.11268\" z=\"0.578813\" />
<position x=\"13.3861\" y=\"-72.522\" z=\"153.698\" />
<rotation qx=\"-4.37114e-008\" qy=\"0\" qz=\"0\" qw=\"1\" />
<entity name=\"Box3267\" id=\"17455\" meshFile=\"Box3267.mesh\" castShadows=\"true\" receiveShadows=\"true\">
<subentities>
<subentity index=\"0\" materialName=\"1\" />
</subentities>
</entity>
</node>
……
</nodes>
</scene>
.mesh文件為場景中創建的對象的網格數據。
.material文件為場景對象所使用的材質數據。
4 場景管理器
由3D建模工具創建的模型經過轉換后,在OGRE中一般使用場景圖形來管理可渲染對象,場景圖形可用來快速檢索查詢可渲染對象,有的時候場景圖形也用于碰撞檢測。在OGRE中使用場景圖形組織管理場景中包圍物體的多邊形,該場景圖形用SceneManager類實現。一般來說,一個場景管理器主要負責:創建存放可移動實體對象、燈光、攝相機等,并且能以圖遍歷方式高效訪問存取它們;裝載集成幾何體,幾何體和可移動實體對象不同,它一般不能移動;實現場景查詢,例如哪些對象包含在以某個點為中心的球體中;裁剪不可見對象,把可見對象放到渲染隊列中渲染;組織并按距離遞增的次序排序非平行光;設置場景中陰影的渲染;設置場景中其它對象,例如背景和天光的渲染等。(如1)
5 虛擬場景的構建
以下是創建虛擬場景的基本步驟,執行結果見圖2。
1)創建scene manager;2)取得root節點;3)載入資源;4)創建渲染紋理;5)解析子元素;6)設置默認燈光;7)載入實例化幾何體;8)為瀏覽跟蹤對象做準備工作;9)為渲染紋理做準備工作。
6 結束語
本文利用OGRE圖形引擎構建了一個虛擬場景,通過使用OGRE引擎,一方面使開發成本顯著降低,另一方面仍然具有高性能的圖形模擬表現,另外由于使用的引擎是開放源代碼的,因此系統也具有很高的代碼安全性。
參考文獻:
[1] 高嵩,陳先橋,楊菊.基于OGRE和ODE的駕駛模擬系統的設計與實現[J].交通與計算機,2006,24(1):101-104.
[2] 陳天洲,陳學亮,施青松.基于多核平臺優化的OGRE 3D渲染引擎[C].第三屆和諧人機環境聯合學術會議(HHME2007)第3屆全國普適計算學術會議(PCC2007),2007.
[3] 張民.基于HLA的OGRE引擎的實現及應用研究[J].電子科技大學學報,2007,36(1):112-115.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文