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