楊 程,范 勇,劉 濤,陳念年
(1.西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010;2.華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,北京 102206)
三維視景仿真系統(tǒng)對于車輛動力學(xué)仿真系統(tǒng)、駕駛模擬系統(tǒng)的研制和使用具有非常重要的作用[1-2];目前軍用戰(zhàn)車的三維視景仿真系統(tǒng),一般有兩種開發(fā)模式:一種是基于專用商業(yè)化三維視景仿真開發(fā)平臺(如Multigen Creator/Vega Prime,Quest3D等)進(jìn)行二次開發(fā)[3],這種開發(fā)方式成本相當(dāng)高昂,內(nèi)部重要功能模塊接口一般都不對用戶開放,很難對系統(tǒng)功能進(jìn)行擴(kuò)展和增強(qiáng),限制了系統(tǒng)的適應(yīng)性和靈活性;另一種則是采用基于底層的3D圖形接口(OpenGL或DirectX 3D)[4],從最基礎(chǔ)的底層功能做起,逐步搭建實(shí)現(xiàn)整個(gè)三維視景渲染引擎,這種開發(fā)模式開發(fā)成本固然較低,然而開發(fā)難度極大,復(fù)雜性高,往往投入極大的人力成本,最終研制的視景仿真效果卻無法與前述專業(yè)級仿真平臺的產(chǎn)品相提并論,差距較大。因此,尋求一種在性能和價(jià)格間達(dá)到比較理想的平衡并且具備較低研制風(fēng)險(xiǎn)的戰(zhàn)車視景仿真系統(tǒng)研制手段就顯得很有意義。
面向?qū)ο蟮膱D像渲染引擎OGRE(Objecte-oriented Graphics Rendering Engine),開源框架的出現(xiàn)為實(shí)現(xiàn)這一技術(shù)目標(biāo)提供了可能。目前最新版本(1.7.1版)的OGRE不但可適應(yīng)于商業(yè)游戲娛樂開發(fā),也可應(yīng)用于工業(yè)或國防領(lǐng)域內(nèi)的三維仿真[5]。國內(nèi)已有過將OGRE同ODE物理引擎結(jié)合起來應(yīng)用于民用汽車模擬器研制的成功范例[6],但應(yīng)用于戰(zhàn)車視景仿真的文獻(xiàn)還未見有過。本文所做的工作正是基于OGRE基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了一套戰(zhàn)車視景仿真軟件系統(tǒng)。
戰(zhàn)車三維視景仿真系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
系統(tǒng)主要的功能子系統(tǒng)分別為:
1)3D渲染引擎子系統(tǒng):在OGRE基礎(chǔ)之上進(jìn)行開發(fā)實(shí)現(xiàn),3D場景的實(shí)時(shí)渲染,材質(zhì)和燈光,攝像機(jī)運(yùn)動,以及動畫管理都在本子系統(tǒng)實(shí)現(xiàn)。
2)人機(jī)界面交互子系統(tǒng):作為渲染引擎的外容器框架,給用戶提供人機(jī)交互的手段,用戶可以通過鍵盤,鼠標(biāo),游戲桿對戰(zhàn)車進(jìn)行控制操縱,系統(tǒng)的參數(shù)設(shè)置也通過本子系統(tǒng)進(jìn)行;既支持第一人稱視角的三維虛擬現(xiàn)實(shí)操作方式,也支持傳統(tǒng)的Windows GUI(菜單、對話框)交互操作方式。
3)模型導(dǎo)入管理子系統(tǒng):提供導(dǎo)入和管理系統(tǒng)所需各類數(shù)據(jù)的能力,既包括真實(shí)高程數(shù)據(jù)格式的地形模型數(shù)據(jù),也包括3D場景內(nèi)的實(shí)體模型數(shù)據(jù),如戰(zhàn)車、建筑物、植被和天空等。
4)場景漫游控制子系統(tǒng):支持3D場景內(nèi)自由漫游的控制能力,提供多視角切換能力,標(biāo)準(zhǔn)設(shè)置條件下支持第一視角、第三視角、攻擊視角以及攝像機(jī)自由視角等多個(gè)操作視角。
5)碰撞檢測處理子系統(tǒng):提供具備真實(shí)物理動力學(xué)特性的實(shí)體碰撞檢測能力,包括運(yùn)動戰(zhàn)車與地面(物)之間,發(fā)射炮彈與地面(物)的面片級精細(xì)碰撞檢測。
6)戰(zhàn)車虛擬儀表子系統(tǒng):支持以虛擬儀表方式對戰(zhàn)車物理運(yùn)動參數(shù)的實(shí)時(shí)檢測能力,該子系統(tǒng)同樣也與物理動力學(xué)引擎進(jìn)行整合,為真實(shí)車體狀態(tài)仿真或測量提供了入口支持。
7)粒子聲音特效子系統(tǒng):借助OGRE強(qiáng)大的粒子生成腳本系統(tǒng),支持包括煙霧、火焰、云霧和流體等多種視景粒子效果;通過FMOD插件實(shí)現(xiàn)了聲音特效的集成,提高了系統(tǒng)的仿真度和真實(shí)沉浸感。
地形表面的渲染繪制是三維視景仿真系統(tǒng)的重要環(huán)節(jié)。依賴于給定區(qū)域的數(shù)字高程模型(Digital Elevation Model, DEM)來構(gòu)造地形,在DEM基礎(chǔ)上直接建立的網(wǎng)格模型通常包含大量的三角形,往往不能滿足對交互顯示的實(shí)時(shí)性要求[7-8]。為確保實(shí)時(shí)渲染的效率,對于地形的處理有種方法,基于連續(xù)層次細(xì)節(jié)(LOD)技術(shù)是一種比較有效的技術(shù)。戰(zhàn)車三維視景仿真系統(tǒng)利用地形編輯軟件FreeWorld3D構(gòu)造具有不同細(xì)節(jié)層次水平的地形網(wǎng)格模型,導(dǎo)出為OGRE能夠使用的*.raw文件(保存地形高程數(shù)據(jù))及與其匹配的*.material文件(保存地表紋理)。通過模型導(dǎo)入管理子系統(tǒng)將地形數(shù)據(jù)文件在運(yùn)行時(shí)載入內(nèi)存,OGRE本身直接提供對模型的LOD處理能力,也能處理光照和紋理等渲染細(xì)節(jié)。
為便于用戶對視景環(huán)境與實(shí)體進(jìn)行全方位觀察與感知,視景仿真系統(tǒng)一般必須提供多視角切換和場景自由漫游的能力。戰(zhàn)車三維視景仿真系統(tǒng)實(shí)現(xiàn)了第一視角、第三視角、攻擊視角以及攝像機(jī)自由視角等多個(gè)操作視角。多個(gè)視角由場景 漫游控制子系統(tǒng)統(tǒng)一管理,具體做法是采用將攝像機(jī)實(shí)體掛接在場景節(jié)點(diǎn)上,通過控制操作場景節(jié)點(diǎn)的平移、旋轉(zhuǎn),間接實(shí)現(xiàn)對攝像機(jī)的控制。將第一視角、第三視角、攻擊視角以及自由視角等多個(gè)攝像機(jī)實(shí)體掛接在坦克炮塔場景節(jié)點(diǎn)上,即作為炮塔場景節(jié)點(diǎn)的子節(jié)點(diǎn),跟隨坦克炮塔的移動而移動。
對于存在運(yùn)動實(shí)體的三維場景,具備符合物理動力學(xué)規(guī)律的碰撞檢測機(jī)制使系統(tǒng)不但具備很強(qiáng)的真實(shí)感,而且可被應(yīng)用于真實(shí)車輛運(yùn)行或動力學(xué)仿真之中。OGRE自身就提供基于AABB的包圍盒方式碰撞檢測機(jī)制[9],對于檢測要求不高的情形,這種方式也已足夠,然而當(dāng)對較復(fù)雜外形實(shí)體間進(jìn)行碰撞檢測時(shí),這種方式就顯得過于粗放,誤差較大,帶來的失真感也很大,容易出現(xiàn)物體的交叉滲入或不合理阻隔,為此,三維視景系統(tǒng)需要一種基于面片級的精細(xì)碰撞檢測機(jī)制。
開源物理動力學(xué)引擎ODE(Open Dynamic Engine) 是一個(gè)免費(fèi)的具有工業(yè)品質(zhì)的剛體動力學(xué)的庫,其內(nèi)部封裝的第三方庫OPCODE(Optimized Collision Detection)能夠?qū)崿F(xiàn)精確到面片級別的碰撞檢測,可以滿足上述對碰撞檢測精確程度的要求。ODE物理引擎是戰(zhàn)車三維視景仿真系統(tǒng)的理想選擇。
在系統(tǒng)實(shí)現(xiàn)中,若將實(shí)體綁定在場景節(jié)點(diǎn)上來進(jìn)行控制,用戶無法直接對場景的實(shí)體進(jìn)行操作,即便通過射線查詢也只能獲得射線穿過的實(shí)體質(zhì)心坐標(biāo),無法得到射線在實(shí)體物面穿入點(diǎn)的坐標(biāo)。因此依靠OGRE無法獲得軌跡與地面碰撞點(diǎn)的精確坐標(biāo)值,對于火炮彈丸的射擊著地,就無法得到真實(shí)的模擬效果。借助開源第三方庫OGREODE,便能夠在利用OGRE開發(fā)系統(tǒng)時(shí),使用ODE提供的剛體動力學(xué)計(jì)算模型,通過將整個(gè)場景中參與碰撞檢測的所有物理實(shí)體放置在同一個(gè)預(yù)定義的剛體碰撞空間中,系統(tǒng)按照預(yù)先定義的各個(gè)碰撞空間,僅對屬于同一個(gè)碰撞空間的物理實(shí)體進(jìn)行碰撞檢測處理,檢測的過程涉及到所有物理實(shí)體的全部三角面片,這樣不僅提高了碰撞檢測的執(zhí)行效率,而且實(shí)現(xiàn)了精細(xì)到面片級別的檢測,能夠獲得碰撞發(fā)生位置的精確坐標(biāo)值。當(dāng)碰撞發(fā)生時(shí),發(fā)生碰撞的剛體將返回一個(gè)碰撞點(diǎn)信息給碰撞檢測回調(diào)函數(shù),其中包含了碰撞發(fā)生的精確的空間坐標(biāo)值數(shù)據(jù)。戰(zhàn)車三維視景仿真系統(tǒng)依此實(shí)現(xiàn)了坦克炮彈擊發(fā)墜地的精細(xì)碰撞檢測[10]。
為進(jìn)一步逼真模擬真實(shí)的戰(zhàn)場環(huán)境,不僅需要有高山、峽谷等地貌地形,還需要在地表設(shè)置大量的樹木草叢等植被元素。然而,實(shí)時(shí)渲染大量的植被仍是圖形學(xué)領(lǐng)域的一大挑戰(zhàn)。目前較理想的一種解決方法是為每棵樹自動生成多細(xì)節(jié)層次的LOD模型,然后根據(jù)樹木距離視點(diǎn)的距離選擇對不同細(xì)節(jié)層次的樹木進(jìn)行渲染[11-12]?;贠GRE的第三方庫PagedGeometry通過引入LOD的思想實(shí)現(xiàn)了大規(guī)模植被渲染功能。它對大區(qū)域海量網(wǎng)格的渲染提供優(yōu)化策略,非常適合于稠密的森林和室外場景渲染。通過對場景中所有的幾何實(shí)體進(jìn)行分頁管理,只有當(dāng)實(shí)體出現(xiàn)在攝像機(jī)視錐體內(nèi)部,需要在顯示設(shè)備上渲染時(shí),才將其載入內(nèi)存。這種處理方式同單獨(dú)、逐一的處理場景中每個(gè)mesh實(shí)體的方法相比較渲染效率提高了100多倍[13]。這使得在場景地形無限大時(shí),進(jìn)行草本植物渲染仍然能夠獲得很高的效率。戰(zhàn)車三維視景仿真系統(tǒng)將PagedGeometry成功地應(yīng)用于戰(zhàn)車仿真視景中廣闊的地形地表之上,實(shí)現(xiàn)了大規(guī)模草本植物的分頁調(diào)度及實(shí)時(shí)渲染。
具備強(qiáng)烈真實(shí)感與沉浸感的仿真系統(tǒng),視覺特效與聲音特效是必不可少的。如,坦克開火時(shí)的煙霧特效,炮彈擊中物體發(fā)生爆炸時(shí)的光與煙,自然環(huán)境中存在的雨雪天氣等。借助于OGRE提供的強(qiáng)大的粒子腳本系統(tǒng),足以實(shí)現(xiàn)多種視覺特效。戰(zhàn)車三維視景仿真系統(tǒng)利用OGRE提供的粒子系統(tǒng)實(shí)現(xiàn)了幾種典型的粒子特效。具體的做法如下:首先編寫代表爆炸粒子、白色煙霧粒子和灰色煙霧粒子的粒子腳本“* .particle”,并設(shè)定各個(gè)粒子系統(tǒng)的作用范圍、粒子數(shù)量、發(fā)射周期、生命周期以及粒子運(yùn)動方向等參數(shù);然后在坦克炮彈發(fā)射場景節(jié)點(diǎn)上綁定這三個(gè)粒子系統(tǒng),并設(shè)定此場景節(jié)點(diǎn)初始為不可見;當(dāng)碰撞發(fā)生時(shí),迅速將粒子系統(tǒng)設(shè)為可見即實(shí)現(xiàn)炮彈爆炸的粒子特效。炮彈發(fā)射時(shí)的煙霧特效,以及雨雪等天氣特效的實(shí)現(xiàn)方式與此類似。
作為一款圖形渲染引擎,OGRE并未提供聲音引擎供用戶使用。為模擬戰(zhàn)車視景仿真中的聲音效果,本系統(tǒng)中采用簡單通用的FMOD音頻引擎來處理場景中的聲音元素。FMOD引擎具有讀取聲音文件,背景播放,混音和設(shè)置各種環(huán)境音效的功能。本系統(tǒng)中對坦克引擎聲音的播放使用了FMOD中的3D Sound。在創(chuàng)建Sound對象時(shí)給出FMOD_3D屬性,表明是3D Sound。然后在設(shè)定聲音屬性時(shí),使用坦克節(jié)點(diǎn)的位置作為聲源的位置,這樣引擎發(fā)聲就跟隨坦克移動了。坦克開火時(shí)的聲音、炮彈爆炸的聲音以及雨雪天氣里的雷聲等均依此方法實(shí)現(xiàn)。
測試平臺系統(tǒng)的硬件配置為:Pentuim(R) Dual-Core E5200,2.0G RAM,Nvidia Geforce GTS 250;軟件環(huán)境為:Windows XP,VS2008,OGRE,DirectX9.0C。
圖2和圖3分別顯示了以第1人稱和第3人稱視角進(jìn)行觀測的戰(zhàn)車系統(tǒng),同時(shí)也可以看到地面大規(guī)模草本植物的生成效果。
圖4展示了戰(zhàn)車發(fā)射炮彈時(shí)彈丸墜落點(diǎn)的碰撞檢測與粒子效果,結(jié)合了ODE的OGRE引擎能夠在墜地點(diǎn)精確地引發(fā)爆炸粒子效果,系統(tǒng)對于煙霧、云霧以及流體也能有效實(shí)現(xiàn)。
用戶可以通過鍵盤和鼠標(biāo)對戰(zhàn)車的運(yùn)動、轉(zhuǎn)向和加速等動力特性進(jìn)行操控,整個(gè)系統(tǒng)運(yùn)行穩(wěn)定可靠,在所選擇的測試平臺環(huán)境下以分辨率1280×1024運(yùn)行時(shí)圖像刷新幀率能達(dá)到60 FPS的水平,即便加入全視場大規(guī)模雨雪天氣等粒子效應(yīng)時(shí),也能保持在30 FPS以上,確保了系統(tǒng)的流暢運(yùn)行。
通過在開源渲染引擎OGRE基礎(chǔ)上采用插件集成開發(fā)的模式,本文設(shè)計(jì)的戰(zhàn)車三維視景仿真系統(tǒng)能夠載入渲染大范圍真實(shí)地貌地形(具備LOD處理能力),可實(shí)現(xiàn)符合真實(shí)物理動力學(xué)規(guī)律的戰(zhàn)車運(yùn)動及碰撞檢測,也能在場景內(nèi)實(shí)現(xiàn)大規(guī)模植被渲染,同時(shí)還能實(shí)現(xiàn)多種粒子聲音特效,外部數(shù)據(jù)接口使系統(tǒng)能夠滿足實(shí)時(shí)運(yùn)動控制與動力學(xué)仿真的需求,在一定程度上能夠克服傳統(tǒng)的戰(zhàn)車視景仿真系統(tǒng)研制所面臨的困難和不足,為國產(chǎn)戰(zhàn)車模擬器以及相關(guān)研制領(lǐng)域提供了一種新的技術(shù)思路。
參考文獻(xiàn)(References)
[1] 居乃鵕. 裝甲車輛動力學(xué)分析與仿真[M].北京:國防工業(yè)出版社,2002:383-393.
JU Nai-jun. Dynamic analysis and simulation of armored vehicles[M]. Beijing:National Defense Industry Press,2002:383-393. (in Chinese)
[2] 劉魯,欒立秋,李艦,等. 自行高炮武器系統(tǒng)三維視景仿真與實(shí)現(xiàn)[J]. 火炮發(fā)射與控制學(xué)報(bào),2007,(4):34-38.
LIU Lu,LUAN Li-qiu,LI Jian,et al. 3D scene simulation and realization of SPAA gun weapon system based on OpenGVS[J]. Journal of Gun Launch & Control,2007,(4):34-38. (in Chinese)
[3] 張德峰,王華兵,薛原,等. 基于VegePrime的視景仿真技術(shù)的研究與應(yīng)用[J]. 計(jì)算機(jī)仿真,2006,23(7):191-195.
ZHANG De-feng,WANG Hua-bing,XUE Yuan,et al. Research and application of scene simulation technique based on VegaPrime[J]. Computer Simulation,2006,23(7):191-195. (in Chinese)
[4] 褚彥軍. 基于OpenGL的海洋戰(zhàn)場視景仿真系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(5):1216-1218.
ZHU Yan-jun. Research and development of virtual ocean battlefield simulation system based on OpenGL[J]. Computer Engineering and Design,2009,30(5):1216-1218. (in Chinese)
[5] Steve Streeting. OGRE Tutorials[EB/OL]. http://www.Ogre3d.org/wiki/index/php/OGRE_ Tutorials. 2009-12-23.
[6] 高嵩. 基于OGRE和ODE的駕駛模擬系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 武漢:武漢理工大學(xué),2006.
GAO Song. The design and implement of a vehicle driving simulator based on OGRE and ODE[D]. Wuhan:Wuhan University of Technology,2006.(in Chinese)
[7] FU Hui,WANG Quan-min. Dynamic terrain visualization based on ROAM and OGRE[J]. 系統(tǒng)仿真技術(shù),2009,5(1):55-59.
FU Hui,WANG Quanmin.Dynamic Terrain Visualization Based on ROAM and OGRE[J]. System Simulation Technology,2009,5(1):55-59.(in Chinese)
[8] 王超,朱竟夫,項(xiàng)王. 坦克對抗射擊系統(tǒng)三維地形仿真[J]. 火炮發(fā)射與控制學(xué)報(bào),2006,(增刊):58-61.
WANG Chao,ZHU Jing-fu,XIANG Wang. 3D terrain simulation for tank confrontation fire system[J]. Journal of Gun Launch & Control,2006,(S):58-61. (in Chinese)
[9] 魏迎梅. 虛擬環(huán)境中碰撞檢測問題的研究[D].湖南:國防科技大學(xué),2000.
WEI Yin-mei. Research on collision detection in virtual evironment[D]. Hunan:National Defense University of Technology,2000. (in Chinese)
[10] LUO Feng,LIU Chu,SUN Zechang. Intelligent vehicle simulation and debugging environment based on physics engine[J].IEEE,2009.
[11] 陳世紅,王海. 林木場景漫游系統(tǒng)的研究與實(shí)現(xiàn)[J]中國圖像圖形學(xué)報(bào),2009,14(6):1212-1216.
CHEN Shi-hong,WANG Hai. Research and implementation of forest scene walkthrough system[J]. Journal of Image and Graphics,2009,14(6):1212-1216. (in Chinese)
[12] 凌飛. 圖形引擎中大規(guī)模草本植被渲染研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2009.
LIN Fei. Graphics engine rendering study of large-scale herbaceous vegetation[D]. Chengdu:University of electronic science and technology of china,2009.(in Chinese)
[13] Steve Streeting.OGRETutorials[EB/OL]. http://www.ogre3d.org/tikiwiki/PagedGeometry Engine.