摘要:在游戲以及虛擬現(xiàn)實中,需要創(chuàng)建大量的虛擬場景,該文利用3D建模工具創(chuàng)建場景模型,通過對模型的轉換,利用OGRE圖形引擎對模型進行實時渲染,提供了高性能的圖形表現(xiàn)。
關鍵詞:面向對象圖形引擎;虛擬場景;虛擬現(xiàn)實
中圖分類號: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 引言
在游戲或者虛擬現(xiàn)實中,都需要創(chuàng)建渲染逼真的虛擬場景,面向對象的圖形渲染引擎(Object Oriented Graphics Rendering Engine,OGRE)在場景的渲染方面提供了高效的性能。OGRE是用C++開發(fā)的面向對象且使用靈活的3D引擎,它的目的是讓開發(fā)者能更方便和直接地開發(fā)基于3D硬件設備的應用程序或游戲。引擎中的類庫對更底層的系統(tǒng)庫(Direct3D和OpenGL)的全部使用細節(jié)進行了抽象,并提供了基于現(xiàn)實世界對象的接口和其它類。OGRE系統(tǒng)主要包括:渲染系統(tǒng)和渲染插件、材質系統(tǒng)、實體管理系統(tǒng)、圖形界面系統(tǒng)、紋理和圖片解碼器、文件系統(tǒng)和文件解碼器、場景管理插件、粒子系統(tǒng)、日志系統(tǒng)等等。而最后所有的系統(tǒng)全部歸一個OGRE: Root管理[1-3]。
本文利用OGRE創(chuàng)建了一個虛擬場景,提供了對場景的實時漫游操作。
2 虛擬場景模型的創(chuàng)建
無論是游戲還是虛擬現(xiàn)實,為了表現(xiàn)其逼真性,虛擬場景大多比較復雜,一般虛擬場景不會實時創(chuàng)建,虛擬場景的創(chuàng)建大多由3D建模工具生成,然后對場景實時渲染輸出。目前創(chuàng)建虛擬場景模型比較常用的3D建模工具有3DS Max,Maya,XSI等。本文采用3DS Max創(chuàng)建了一個建筑模型。為了便于在編寫代碼時引用場景模型中的各個實體對象,需要對實體對象按規(guī)則命名。
3 模型格式的轉換
在OGRE中不能直接使用3DS Max創(chuàng)建的模型,需要把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文件為場景中創(chuàng)建的對象的網(wǎng)格數(shù)據(jù)。
.material文件為場景對象所使用的材質數(shù)據(jù)。
4 場景管理器
由3D建模工具創(chuàng)建的模型經(jīng)過轉換后,在OGRE中一般使用場景圖形來管理可渲染對象,場景圖形可用來快速檢索查詢可渲染對象,有的時候場景圖形也用于碰撞檢測。在OGRE中使用場景圖形組織管理場景中包圍物體的多邊形,該場景圖形用SceneManager類實現(xiàn)。一般來說,一個場景管理器主要負責:創(chuàng)建存放可移動實體對象、燈光、攝相機等,并且能以圖遍歷方式高效訪問存取它們;裝載集成幾何體,幾何體和可移動實體對象不同,它一般不能移動;實現(xiàn)場景查詢,例如哪些對象包含在以某個點為中心的球體中;裁剪不可見對象,把可見對象放到渲染隊列中渲染;組織并按距離遞增的次序排序非平行光;設置場景中陰影的渲染;設置場景中其它對象,例如背景和天光的渲染等。(如1)
5 虛擬場景的構建
以下是創(chuàng)建虛擬場景的基本步驟,執(zhí)行結果見圖2。
1)創(chuàng)建scene manager;2)取得root節(jié)點;3)載入資源;4)創(chuàng)建渲染紋理;5)解析子元素;6)設置默認燈光;7)載入實例化幾何體;8)為瀏覽跟蹤對象做準備工作;9)為渲染紋理做準備工作。
6 結束語
本文利用OGRE圖形引擎構建了一個虛擬場景,通過使用OGRE引擎,一方面使開發(fā)成本顯著降低,另一方面仍然具有高性能的圖形模擬表現(xiàn),另外由于使用的引擎是開放源代碼的,因此系統(tǒng)也具有很高的代碼安全性。
參考文獻:
[1] 高嵩,陳先橋,楊菊.基于OGRE和ODE的駕駛模擬系統(tǒng)的設計與實現(xiàn)[J].交通與計算機,2006,24(1):101-104.
[2] 陳天洲,陳學亮,施青松.基于多核平臺優(yōu)化的OGRE 3D渲染引擎[C].第三屆和諧人機環(huán)境聯(lián)合學術會議(HHME2007)第3屆全國普適計算學術會議(PCC2007),2007.
[3] 張民.基于HLA的OGRE引擎的實現(xiàn)及應用研究[J].電子科技大學學報,2007,36(1):112-115.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文