陳喜春
摘 要: 由于商業(yè)仿真軟件的高昂費(fèi)用以及源碼的不開放,許多軍事仿真已轉(zhuǎn)而使用開源仿真軟件。Delta3D是一款由美軍開發(fā)的全功能游戲與仿真引擎,通過(guò)對(duì)底層模塊進(jìn)行隱藏封裝,將多個(gè)相關(guān)功能模塊整合在一起形成一個(gè)使用更加方便的高級(jí)API函數(shù)庫(kù),目前在軍用仿真領(lǐng)域已經(jīng)較有影響。文章介紹了Delta3D的模塊組成,應(yīng)用程序開發(fā)的基本框架,以及與相關(guān)仿真軟件的配合使用,并就開發(fā)過(guò)程中的相關(guān)問題給出了建議。
關(guān)鍵詞: Delta3D; 仿真引擎; 開源軟件; 軍事仿真
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)02-33-03
0 引言
目前,作戰(zhàn)實(shí)驗(yàn)中大量采用了3D圖形技術(shù)。在游戲和仿真領(lǐng)域,從技術(shù)實(shí)現(xiàn)上可將3D圖形技術(shù)分為基礎(chǔ)層、中間層和應(yīng)用層三個(gè)層次?;A(chǔ)層主要是3D加速硬件和廠商提供的基本的API函數(shù)接口;中間層則是根據(jù)游戲和仿真各自不同的需求編寫的公共引擎或軟件(在游戲領(lǐng)域多稱之為游戲引擎,仿真領(lǐng)域則稱之為仿真軟件或仿真環(huán)境);應(yīng)用層則是具體的游戲產(chǎn)品或仿真應(yīng)用。
一個(gè)良好的仿真引擎是仿真應(yīng)用研發(fā)的基礎(chǔ),在一個(gè)相對(duì)成熟的仿真引擎基礎(chǔ)上,作戰(zhàn)實(shí)驗(yàn)系統(tǒng)研發(fā)人員能夠根據(jù)需求較快地開發(fā)出相應(yīng)的作戰(zhàn)仿真軟件,仿真軟件廠商也能很快地為客戶建立各種仿真應(yīng)用。
目前仿真軟件中有大量的商業(yè)化軟件,如Id Software公司的Quake、Quake II和Quake III引擎,Epic Megagames公司(即現(xiàn)在的Epic游戲公司)的Unreal Tournament引擎,Monolith公司的LithTech引擎,但這些軟件價(jià)格昂貴,且源碼不開放,對(duì)作戰(zhàn)實(shí)驗(yàn)這種需要從底層保證其結(jié)果可靠性的應(yīng)用來(lái)說(shuō),造成很大困難。
美軍較早意識(shí)到了這種困難,他們積極轉(zhuǎn)向開源軟件。Delta3D是一款由美國(guó)海軍研究生院(Naval Postgraduate School)開發(fā)的全功能游戲與仿真引擎,得到美國(guó)軍方巨大的支持與豐厚的投資[1]。該引擎應(yīng)用領(lǐng)域極為廣泛,在培訓(xùn)、教育、娛樂行業(yè)和科學(xué)計(jì)算可視化領(lǐng)域等方面建模與仿真軟件的開發(fā)中都得到了廣泛的應(yīng)用。它的標(biāo)準(zhǔn)化設(shè)計(jì)把一些知名開源軟件和引擎如Open Scene Graph(OSG),Open Dynamics Engine (ODE),Character Animation Library(CAL3D),以及Open AL等融為一體。Delta3D通過(guò)對(duì)這些底層模塊進(jìn)行隱藏封裝、整合在一起,從而形成了一個(gè)使用更加方便的高級(jí)API函數(shù)庫(kù),使得開發(fā)者在必要的時(shí)候能夠使用底層函數(shù)進(jìn)行二次開發(fā)。
本文將對(duì)開源軟件Delta3D的模塊組成、開發(fā)方法以及與相關(guān)仿真軟件的配合使用進(jìn)行介紹。
1 Delta3D功能模塊介紹
Delta3D在軟件系列中,處于中間層(Middle layer)的位置上。Delta3D主要目標(biāo)是提供一套簡(jiǎn)單可行的API函數(shù)庫(kù),構(gòu)成搭建任何可視化軟件的基本要素。
Delta3D是一個(gè)開放源碼的引擎,研發(fā)開始于2002年4月,集成了現(xiàn)有最先進(jìn)的開源軟件(Open Source projects),并經(jīng)過(guò)全球Delta3D關(guān)注者的增補(bǔ)與完善,相對(duì)于購(gòu)買一款價(jià)格很高又不開放源代碼的引擎具有很大的優(yōu)勢(shì),使用Delta3d可以任意修改代碼并且定制所需的功能,這是不開放源代碼的商業(yè)引擎無(wú)法做到的[2]。
2 Delta3D應(yīng)用程序的基本框架
2.1 Delta3D中的基本概念
在Delta3D的開發(fā)中,有幾個(gè)重要概念,如游戲管理器(Game Manager),游戲角色(Game Actor),游戲組件(Game Component),以及游戲消息(Game Message)。
Delta3D提供仿真應(yīng)用程序的基本要素,如場(chǎng)景管理,物理系統(tǒng),立體音效,對(duì)象加載,動(dòng)態(tài)角色庫(kù),環(huán)境特效,光照,地形支持,相機(jī),以及角色動(dòng)畫。
在應(yīng)用程序中,游戲管理器負(fù)責(zé)管理整個(gè)應(yīng)用程序虛擬世界中存在的所有要素以及角色或組件之間的交互,游戲管理器擁有所有的游戲角色,普通角色,組件以及消息。游戲管理器的主要任務(wù)是:管理消息;維護(hù)系統(tǒng)內(nèi)部的所有的角色,包括游戲角色以及普通角色;提供游戲管理組件功能。
普通角色或者稱之為非游戲角色一般指那些游戲世界中靜態(tài)的物體,比如:房子、不移動(dòng)的燈光、樹木、地形等,游戲角色指那些具有生命的角色。
在Delta3D中,一個(gè)很重要的概念是角色代理。游戲管理器只識(shí)別游戲角色代理,不直接識(shí)別游戲角色。因此游戲角色只能夠通過(guò)角色代理與游戲管理器發(fā)生關(guān)系。游戲消息是角色和組件之間互相通信的內(nèi)容。消息通常用來(lái)發(fā)送數(shù)據(jù)(比如屬性變化)或者行為(請(qǐng)求或命令)。圖2展示了消息在游戲角色,游戲管理器以及組件之間的流向。
2.2 基本程序框架[3-4]
程序的邏輯順序依次是:創(chuàng)建新的dtABC::Application對(duì)象,加載實(shí)體對(duì)象,向場(chǎng)景中添加實(shí)體對(duì)象,設(shè)置實(shí)體對(duì)象在三維場(chǎng)景中的位置,設(shè)置攝象機(jī),最后進(jìn)入仿真循環(huán)。
較復(fù)雜的仿真程序主要是在仿真推進(jìn)中需要將對(duì)象的屬性進(jìn)行更新,所以需要管理的對(duì)象數(shù)量、復(fù)雜程度會(huì)大大增加。
3 與相關(guān)仿真軟件的配合使用
Delta3D是一套復(fù)雜的軟件,它不僅僅實(shí)現(xiàn)了仿真程序框架,而且將其他一些開源項(xiàng)目進(jìn)行了集成,從而可以實(shí)現(xiàn)更復(fù)雜的功能。
3.1 網(wǎng)絡(luò)模塊
如今分布式仿真大行其道,仿真程序的網(wǎng)絡(luò)功能是不可或缺的。HLA是如今仿真開發(fā)的標(biāo)準(zhǔn)架構(gòu),Delta3D也對(duì)HLA提供了支持。Delta3D提供了HLA組件作為一個(gè)消息翻譯器(Game Translator),游戲管理器(Game Manager)對(duì)消息的處理首先要經(jīng)過(guò)消息翻譯器的處理,然后按照HLA架構(gòu)的要求由rti軟件進(jìn)行收發(fā)。HLA組件對(duì)rti函數(shù)進(jìn)行了封裝,使用起來(lái)比直接調(diào)用rti函數(shù)要大大簡(jiǎn)化。rti軟件同樣有開源版本,與Delta3D配合使用時(shí),推薦使用CERTI。
除HLA外,Delta3D還可以使用另外的網(wǎng)絡(luò)通信機(jī)制,如使用開源的GNE庫(kù)(Game Networking Engine,游戲網(wǎng)絡(luò)引擎)。GNE庫(kù)是一個(gè)可移植的多線程網(wǎng)絡(luò)函數(shù)庫(kù),它為常用的網(wǎng)絡(luò)程序開發(fā)提供了一套框架,開發(fā)人員可以直接在這個(gè)框架之上添加代碼。
3.2 物理引擎
物理引擎主要包含游戲世界中的物體之間、物體和場(chǎng)景之間發(fā)生碰撞后的力學(xué)模擬,以及發(fā)生碰撞后的物體骨骼運(yùn)動(dòng)的力學(xué)模擬。Delta3D中對(duì)物理引擎的封裝也有幾種不同的實(shí)現(xiàn)方式[5],第一是在dtCore中對(duì)ODE(開放動(dòng)力學(xué)引擎)的封裝,第二通過(guò)dtPhysics使用PAL(physics abstract layer)對(duì)三種物理引擎Bullet、ODE、Phys的封裝。
在Delta3D中應(yīng)用ODE的時(shí)候,可以使用Scene類調(diào)用ODEController,通過(guò)ODEController中配置ODESpaceWrap,進(jìn)行碰撞檢測(cè)設(shè)置。
3.3 人工智能
在娛樂游戲或者軍事仿真中,都會(huì)涉及到路徑尋找、避障等問題。Delta3D提供了dtAI模塊,通過(guò)AIutility工具可以在場(chǎng)景上編輯路點(diǎn)(WayPoint),然后提供包括A*算法在內(nèi)的一些標(biāo)準(zhǔn)程序,實(shí)現(xiàn)AI功能。當(dāng)然,人工智能也有很多第三方庫(kù),如NavMesh,采取導(dǎo)航網(wǎng)的方法來(lái)進(jìn)行路徑選擇,同樣可以集成到Delta3D應(yīng)用中。
4 結(jié)束語(yǔ)
本文分析了開源軟件在仿真領(lǐng)域得到重視的原因,并介紹了一種得到廣泛應(yīng)用的開源軟件Delta3D。Delta3D集成了大量的其他開源項(xiàng)目,并開發(fā)了一個(gè)易于使用的應(yīng)用程序編程接口,它的開放性、易用性將會(huì)為它的未來(lái)發(fā)展帶來(lái)廣泛的空間。
參考文獻(xiàn):
[1] Delta3D Homepage[EB/OL].http://www.delta3d.org/index.php,2013-10-10.
[2] Delta3D Tutorials[EB/OL]. http://www.delta3d.org/article.php?story=20050720155458456&topic=tutorials,2013-10-10.
[3] Delta3D Forum[EB/OL]. http://www.delta3d. org/forum/index.php,2013-10-10.
[4] 楊化斌,于振華,林中等.Open Scene Graph3.0三維視景仿真技術(shù)開發(fā)詳解[M].國(guó)防工業(yè)出版社,2012.
[5] Delta3D Tutorials in the Wiki[EB/OL]. http://sourceforge.net/apps/mediawiki/delta3d/index.php?title=Tutorials,2013-10-10.