??? 摘 要:虛擬某型導(dǎo)彈完整發(fā)射過程,在通用的計算機(jī)平臺上,對開發(fā)導(dǎo)彈發(fā)射環(huán)境視景仿真系統(tǒng)進(jìn)行了研究。系統(tǒng)設(shè)計包括場景的生成和功能效果的實現(xiàn)。著重介紹了系統(tǒng)的組成及在VC++6.0平臺上利用OpenGL和DirectSound實現(xiàn)子模塊的關(guān)鍵技術(shù),提出了幾項優(yōu)化措施解決圖像真實感與實時性的問題,最后討論了該視景仿真系統(tǒng)的現(xiàn)實意義。
??? 關(guān)鍵詞:虛擬訓(xùn)練;視景仿真;導(dǎo)彈;OpenGL;建模
?
??? 導(dǎo)彈武器是打擊敵縱深目標(biāo)的重要武器系統(tǒng),是現(xiàn)代戰(zhàn)爭不可缺少的武器裝備。而在真實裝備上進(jìn)行操作訓(xùn)練,耗資太大,受到場地和氣候的影響,而且有些特殊情況(如災(zāi)難后果、緊急自毀等)難以實現(xiàn)。視景仿真[1]是仿真動畫的高級階段,也是虛擬現(xiàn)實技術(shù)的最重要表現(xiàn)形式,它產(chǎn)生身臨其境的交互式仿真環(huán)境,實現(xiàn)用戶與虛擬環(huán)境直接進(jìn)行自然交互。將視景仿真技術(shù)應(yīng)用于導(dǎo)彈武器裝備訓(xùn)練,開發(fā)虛擬訓(xùn)練[2]和演示系統(tǒng),能夠?qū)ψ鲬?zhàn)裝備的訓(xùn)練操作給出良好的實時顯示,給人以強(qiáng)烈的視覺沖擊,同時虛擬操作具有可重復(fù)操作、經(jīng)濟(jì)、高效、安全等優(yōu)點,便于操作號手認(rèn)識導(dǎo)彈、快速掌握各個設(shè)備機(jī)構(gòu)的名稱與作用、熟悉操作方法和操作規(guī)程,使武器裝備的訓(xùn)練既不需要消耗大量的人力、物力、財力資源,又能克服實裝訓(xùn)練受時間、場地、天氣因素制約的不足。導(dǎo)彈武器發(fā)射環(huán)境視景仿真系統(tǒng),對于強(qiáng)化操作號手素質(zhì)、提高部隊?wèi)?zhàn)斗力具有十分明顯的作用。
1 仿真系統(tǒng)的組成
??? 導(dǎo)彈發(fā)射環(huán)境是指導(dǎo)彈發(fā)射過程及其背景,根據(jù)不同的導(dǎo)彈武器型號發(fā)射方式不同。本文設(shè)計視景仿真系統(tǒng)模擬導(dǎo)彈部隊在接受上級訓(xùn)練任務(wù)和發(fā)射命令后,某型陸基車載機(jī)動垂直發(fā)射導(dǎo)彈從發(fā)射車輛占領(lǐng)發(fā)射陣地、地面設(shè)備展開到導(dǎo)彈按預(yù)定程序完成起豎發(fā)射全過程。用戶通過計算機(jī)鼠標(biāo)、鍵盤操作,顯示器實時顯示輸出發(fā)射進(jìn)程,音響設(shè)備輸出聲音效果。根據(jù)導(dǎo)彈發(fā)射的實際,該系統(tǒng)需構(gòu)建發(fā)射場地環(huán)境、導(dǎo)彈武器系統(tǒng)和導(dǎo)彈模型、車輛模型運動特征、導(dǎo)彈起豎和發(fā)射效果、聲音輸出等,具有隨發(fā)射車行駛自動漫游和多視點觀察功能以及良好的實時交互效果。因此,需要從場景生成和功能效果兩個方面進(jìn)行技術(shù)實現(xiàn)。其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
??? 場景生成是指采用虛擬現(xiàn)實技術(shù)產(chǎn)生模擬的背景環(huán)境,其中天空和地形是必要的背景元素,模型控制包括武器裝備實體模型的建立、導(dǎo)入、轉(zhuǎn)換和顯示等;在功能效果的實現(xiàn)方面,三維動畫是指在虛擬場景下車輛的行進(jìn)與停止、地面設(shè)備的展開、導(dǎo)彈的起豎發(fā)射以及尾罩的側(cè)推等。視點變換實現(xiàn)從多視點、多角度對整個訓(xùn)練過程進(jìn)行觀察,特殊效果主要有爆炸、火焰、煙霧等效果的模擬,音響技術(shù)是場景中各種聲音的再現(xiàn)技術(shù),人機(jī)交互技術(shù)是用鼠標(biāo)和鍵盤控制操作仿真軟件,實現(xiàn)播放和停止、拾取和反饋。
2 實現(xiàn)子模塊功能的關(guān)鍵技術(shù)[3]
??? 在Windows平臺上,該視景系統(tǒng)基于Visual C++ 6.0和OpenGL[4-5],并結(jié)合3DS MAX建模軟件、DirectSound編程設(shè)計綜合進(jìn)行。其中,Visual C++6.0作為功能強(qiáng)大的軟件開發(fā)工具,MFC為系統(tǒng)開發(fā)提供邏輯結(jié)構(gòu);作為應(yīng)用程序編程接口,OpenGL提供函數(shù)庫,很容易實現(xiàn)模型控制、視點變換、著色、光照、紋理映射、交互操作和動畫等;3DS MAX建模軟件易用性強(qiáng),渲染方便,尤其表現(xiàn)為建立模型技術(shù)能力強(qiáng)(主要包括:細(xì)分曲面技術(shù)、柔性選擇、曲面工具和NURBS技術(shù)等) ;DirectSound是DirectX中用來控制聲音的裝置以及各音效處理的組件,速度快、可控性強(qiáng),調(diào)用DirectX聲音處理函數(shù),可以在設(shè)計視景系統(tǒng)時產(chǎn)生實時聲音效果。
2.1 場景生成
??? 車載機(jī)動發(fā)射導(dǎo)彈其發(fā)射環(huán)境是戶外露天環(huán)境,天空和地形是導(dǎo)彈武器發(fā)射仿真系統(tǒng)的必要背景元素,其模型構(gòu)建是調(diào)用OpenGL函數(shù)庫建模;對于導(dǎo)彈及發(fā)射車輛等實體,用3DS MAX建立其基本模型、OpenGL加載實體模型的3DS文件,建模效率高,并且能夠?qū)崿F(xiàn)人機(jī)交互。
2.1.1 天空背景
??? 用OpenGL生成天空背景,通常有3種方法:(1)用一種接近天空的淡藍(lán)色清除背景;(2)繪制一個立方體并對其進(jìn)行紋理貼圖的“天空盒”(SkyBox)方法;(3)半球形天空模型。對于戶外天空背景,用藍(lán)色清除背景的簡易天空模型和“天空盒”模型簡單而顯得真實感不強(qiáng)。地球是球形的,半球形天空模型效果符合真實世界的天空,能夠仿真出符合真實世界的天空效果。因此本文采用半球形天空模型。利用數(shù)學(xué)中的球面方程:
???
??? 式中,K為球面上任意一點,x﹑y、z為該點坐標(biāo),r為球的半徑。化為參數(shù)方程F(r,φ,θ):
???
??? 由式(2)求得球面上各個點的坐標(biāo)后,利用OpenGL技術(shù)中的三角形帶(GL_TRIANGLE_STRIP)繪制天空框架。再應(yīng)用紋理映射技術(shù),映射出具有真實效果的3D天空云圖。
2.1.2 地形背景
??? 完成地形的生成和不同的地貌特征(如山、平地、公路、場坪等)的生成。地形模型的繪制主要有兩種方式:一是根據(jù)地形圖形數(shù)據(jù)的精確描述,來進(jìn)行真實地形的仿真;二是模擬自然場景中的地形。模擬地形既能滿足本文設(shè)計的需要,同時應(yīng)用分形理論中點位移方法,用盡量少的數(shù)據(jù)來實現(xiàn)真實感虛擬地形,既經(jīng)濟(jì)又實用。因此該視景系統(tǒng)采用后者,并選用了D-S算法。該算法計算簡單、運算速度快,可以不斷遞歸生成任意分辨率的細(xì)化網(wǎng)格,同時也可以保留已經(jīng)存在的地形測量數(shù)據(jù)。在地形模型基礎(chǔ)上,映射2D紋理圖形,用以提升地形的真實性,獲得發(fā)射環(huán)境所需的山、平地、公路、場坪等效果。廣告牌技術(shù)(Billboard) 實現(xiàn)對樹木模擬的快速高效。
2.1.3 模型控制
??? 導(dǎo)彈武器系統(tǒng)、導(dǎo)彈是該視景仿真系統(tǒng)必備的基本實體模型。用3DS MAX對其建模后生成的模型導(dǎo)入OpenGL程序再對其進(jìn)行控制是一種比較理想的方法。3DS文件是由許多塊(chunk)構(gòu)成(大塊中嵌套子塊),一個塊由塊信息和塊數(shù)據(jù)組成。而塊信息又由塊的ID和塊的長度組成。完整讀取實體模型3DS文件,就要讀入這些塊中包含的模型頂點信息、三角面信息、紋理信息和三角面的材質(zhì)信息等。在MFC工程中建立虛擬模型類,采用遞歸方式用OpenGL命令調(diào)用3DS文件嵌套的塊結(jié)構(gòu),而返回上一級(子塊讀完,返回父塊)的條件是當(dāng)前已經(jīng)讀入的塊字節(jié)數(shù)等于塊長度,從父塊轉(zhuǎn)向讀入其子塊則可用switch( )語句實現(xiàn)。
2.2 功能效果的實現(xiàn)
??? 功能效果的實現(xiàn)主要完成靜態(tài)場景生成,如系統(tǒng)的漫游、不同視角觀察、導(dǎo)彈發(fā)射車的行駛、導(dǎo)彈起豎和起飛、尾罩側(cè)推以及尾焰的產(chǎn)生等。
??? (1)三維動畫
??? 在系統(tǒng)場景中,三維動畫主要包括發(fā)射車輛沿公路平面行進(jìn)與停止、地面設(shè)備的展開、導(dǎo)彈沿定點起豎到垂直狀態(tài)和以給定初始速度彈射到一定高度尾罩側(cè)推導(dǎo)彈點火。先調(diào)用glutInitDisplayMode(…|GLUT_DOUBLE)函數(shù),啟用雙緩存,分配兩個顏色緩沖區(qū),前臺緩沖區(qū)進(jìn)行圖形顯示,后臺緩沖區(qū)執(zhí)行繪制命令。場景的繪制命令首先被后臺調(diào)用,當(dāng)完整的畫面在后臺視頻中畫出以后,執(zhí)行SwapBuffers( )函數(shù),成為可見視頻緩存。通過設(shè)定OpenGL中的平移命令glTranslate( )和旋轉(zhuǎn)命令glRotate( )命令參數(shù)來獲得動畫效果。這樣通過矩陣變換,完成后臺繪制,前臺顯示,兩個緩存區(qū)不斷循環(huán)往復(fù),最后得到連續(xù)的畫面。
??? (2)視點變換
??? 在導(dǎo)彈發(fā)射過程中,單一的視點并不能滿足觀察者的要求。視點設(shè)置有兩方面的含義:一是隨著車輛行駛自動漫游,觀察占領(lǐng)陣地過程;二是從不同的角度觀察地面設(shè)備展開、導(dǎo)彈起豎彈射。首先,調(diào)用OpenGL函數(shù)gluViewport( )進(jìn)行視口設(shè)定,確定視口的位置和大??;然后用gluPerspective( )函數(shù)來定義模型坐標(biāo)系中可視錐體的大小和遠(yuǎn)近。gluPerspective( )函數(shù)具有裁剪功能,在視區(qū)錐體里面的物體被投影,而不在這個視區(qū)錐體里面的都被其視區(qū)的6個面裁剪掉。然后在取景變換中采用gluLookAt( )函數(shù)設(shè)置視點變換。起豎發(fā)射時系統(tǒng)設(shè)計了2個相對視點,通過鍵盤切換,分別用以觀察導(dǎo)彈起豎發(fā)射時的側(cè)視圖(發(fā)射車右側(cè))和尾視圖(發(fā)射車后面)。
??? (3)音響仿真
??? 一個完整的仿真系統(tǒng),不僅要有圖像,還要有聲音,這樣才能產(chǎn)生視聽效果,達(dá)到身臨其境的感覺。音響仿真提供聽覺信息,利用計算機(jī)多媒體技術(shù),仿真生成導(dǎo)彈在運輸、起豎及發(fā)射時的逼真音效,這些音效包括發(fā)射車輛聲音信息(如發(fā)動機(jī)的轟鳴聲、喇叭聲)、導(dǎo)彈起豎的聲音、發(fā)電機(jī)的聲音及點火發(fā)射時的音效等。音響仿真過程包括數(shù)字聲音的獲取、質(zhì)量處理和效果回放。通過現(xiàn)場錄音,得到導(dǎo)彈武器發(fā)射過程中各種情況下的聲音,再經(jīng)過采樣和濾波處理后,形成逼真地體現(xiàn)系統(tǒng)聲音效果的wave文件。調(diào)用DirectSound提供的強(qiáng)大聲音處理API函數(shù),在應(yīng)用程序中加載聲音文件,并在程序運行的不同時期將聲音釋放。
??? (4)交互技術(shù)
??? 本文所設(shè)計的導(dǎo)彈武器發(fā)射環(huán)境視景仿真系統(tǒng)中交互技術(shù)包括鍵盤交互和鼠標(biāo)交互。鍵盤交互是指利用MFC程序框架提供的消息處理函數(shù)接收鍵盤動作、修改控制變量進(jìn)行啟動、復(fù)位、暫停、繼續(xù)、終止等控制,在所定義TimeFunction( )函數(shù)中,設(shè)置鍵盤變量實現(xiàn)動畫控制。鼠標(biāo)交互包括拾取(Pick)和反饋(FeedBack)兩個過程,鼠標(biāo)左鍵單擊屏幕上武器系統(tǒng)某些重要功能儀器,屏幕上文字顯示該儀器的名稱、作用,以及操作方式。交互技術(shù)為軟件操作者提供了一個優(yōu)良的平臺,更加直觀地顯示了導(dǎo)彈武器發(fā)射細(xì)節(jié),完善交互程序代碼,也為下一步開發(fā)導(dǎo)彈武器虛擬訓(xùn)練系統(tǒng)提供了借鑒。
??? (5)特殊效果
??? 特殊效果包括導(dǎo)彈發(fā)射時產(chǎn)生煙霧和尾焰效果。煙霧效果的模擬由一組圖片經(jīng)透明處理后再與背景進(jìn)行融合,通過控制圖片的位置和融合參數(shù),可實現(xiàn)煙霧的漂移和淡化效果。尾焰效果的模擬則是采用粒子系統(tǒng),通過產(chǎn)生具有獨立的生命周期和屬性同時集合內(nèi)部具有相同或相似行為規(guī)律的基本粒子實現(xiàn)的。用若干形狀簡單且賦予了生命的微小粒子作為基本元素,而把物體定義為眾多不規(guī)則、隨機(jī)分布的粒子,隨著時間的推移,由于每個粒子具有獨立的生命周期,通過粒子參數(shù)進(jìn)行隨機(jī)過程的控制,舊的粒子不斷消失,新的粒子不斷出現(xiàn),并且通過賦予粒子紋理來達(dá)到模擬尾焰的效果。用粒子系統(tǒng)實現(xiàn)的尾焰逼真度高。
3 優(yōu)化措施
??? 整個視景仿真系統(tǒng)搭建起來后,應(yīng)用OpenGL光照、材質(zhì)、紋理映射以及特殊效果技術(shù),生成逼真形象的導(dǎo)彈發(fā)射環(huán)境。但整個系統(tǒng)需要處理的數(shù)據(jù)多,運算量大,要確保軟件在普通PC機(jī)上流暢運行,真正達(dá)到能夠跨平臺使用,采取優(yōu)化措施解決圖像真實感與實時性的問題是很有必要的。具體優(yōu)化措施如下:
??? (1)啟用雙緩存,前臺管理圖形顯示,后臺執(zhí)行繪制命令。
??? (2)開啟OpenGL消隱功能,不繪制背面和被遮擋的部分。
??? (3)調(diào)用顯示列表依次執(zhí)行列表中所列的函數(shù)語句。顯示列表是將一些OpenGL的復(fù)合操作預(yù)處理后存儲在內(nèi)存中,程序執(zhí)行過程中直接調(diào)用內(nèi)存中做過預(yù)處理的該復(fù)合操作,從而優(yōu)化程序性能。
??? (4)采用層次細(xì)節(jié)(LOD)技術(shù)后,遠(yuǎn)處的場景相對模糊,近處的清晰自然,符合現(xiàn)實情況,同時也減少了計算量,提高了渲染速度。
4? 仿真結(jié)果
??? 在3DS MAX中建立基本實體模型,在VC++和OpenGL開發(fā)環(huán)境中實現(xiàn)事件流程的仿真控制,開發(fā)周期短,效率高,并可以取得較好的仿真效果。根據(jù)以上方法生成的虛擬導(dǎo)彈發(fā)射環(huán)境視景系統(tǒng),實現(xiàn)在虛擬環(huán)境下導(dǎo)彈以車載方式運送到發(fā)射陣地、導(dǎo)彈起豎彈射、尾罩側(cè)推和點火過程仿真,場景真實,符合該導(dǎo)彈發(fā)射的實際。同時,效果流暢,人機(jī)交互自然,再配以音響產(chǎn)生實時音效,有一種身臨其境的感覺,更增加了直觀效果。導(dǎo)彈武器發(fā)射環(huán)境視景仿真系統(tǒng)使得導(dǎo)彈實裝操作、訓(xùn)練和觀摩簡單易行,實施方便。
??? 本文在計算機(jī)軟硬件平臺上,應(yīng)用虛擬仿真技術(shù),構(gòu)建了導(dǎo)彈發(fā)射環(huán)境視景仿真系統(tǒng)。虛擬視景系統(tǒng)具有高效性、可控性、無破壞性、使用靈活性、系統(tǒng)運轉(zhuǎn)費用低等特點,能夠突破傳統(tǒng)訓(xùn)練方式的局限,既對號手進(jìn)行導(dǎo)彈操作模擬訓(xùn)練,取代實彈訓(xùn)練中的部分科目和內(nèi)容,又改變了傳統(tǒng)的人教人、師帶徒的落后教學(xué)方式,提高了訓(xùn)練質(zhì)量,同時,對下一步導(dǎo)彈虛擬訓(xùn)練系統(tǒng)的開發(fā)具有很好的借鑒意義。虛擬導(dǎo)彈訓(xùn)練系統(tǒng)的開發(fā)應(yīng)用為導(dǎo)彈部隊提高和掌握導(dǎo)彈武器系統(tǒng)操作、迅速形成戰(zhàn)斗力提供了新的方法。
參考文獻(xiàn)
[1] 吳家鑄,劉華峰,程志全,等. 視景仿真技術(shù)用度應(yīng)用. 西安:西安電子科技大學(xué), 2001.
[2]?劉玉海,李瑞,張錫恩. 導(dǎo)彈虛擬操作訓(xùn)練系統(tǒng)的設(shè)計與實現(xiàn). 飛航導(dǎo)彈,2002, (8).
[3]?和平鴿工作室. OpenGL高級編程與可視化開發(fā)系統(tǒng)開發(fā)篇(第2版). 北京:中國水利水電出版社. 2007.
[4]?吳賓,畢麗蘊(yùn). OpenGL編程實例與技巧. 北京:人民郵電出版社,1999.
[5]?WrightR S,Lipchak J B. OpenGL超級寶典(第2版).徐波,譯. 北京:人民郵電出版社,2005.