??? 摘 要:虛擬某型導(dǎo)彈完整發(fā)射過程,,在通用的計(jì)算機(jī)平臺上,對開發(fā)導(dǎo)彈發(fā)射環(huán)境視景仿真系統(tǒng)進(jìn)行了研究,。系統(tǒng)設(shè)計(jì)包括場景的生成和功能效果的實(shí)現(xiàn),。著重介紹了系統(tǒng)的組成及在VC++6.0平臺上利用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)爭不可缺少的武器裝備。而在真實(shí)裝備上進(jìn)行操作訓(xùn)練,,耗資太大,受到場地和氣候的影響,,而且有些特殊情況(如災(zāi)難后果,、緊急自毀等)難以實(shí)現(xiàn)。視景仿真[1]是仿真動(dòng)畫的高級階段,,也是虛擬現(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),便于操作號手認(rèn)識導(dǎo)彈,、快速掌握各個(gè)設(shè)備機(jī)構(gòu)的名稱與作用,、熟悉操作方法和操作規(guī)程,使武器裝備的訓(xùn)練既不需要消耗大量的人力,、物力,、財(cái)力資源,又能克服實(shí)裝訓(xùn)練受時(shí)間,、場地,、天氣因素制約的不足。導(dǎo)彈武器發(fā)射環(huán)境視景仿真系統(tǒng),,對于強(qiáng)化操作號手素質(zhì),、提高部隊(duì)?wèi)?zhàn)斗力具有十分明顯的作用。
1 仿真系統(tǒng)的組成
??? 導(dǎo)彈發(fā)射環(huán)境是指導(dǎo)彈發(fā)射過程及其背景,,根據(jù)不同的導(dǎo)彈武器型號發(fā)射方式不同,。本文設(shè)計(jì)視景仿真系統(tǒng)模擬導(dǎo)彈部隊(duì)在接受上級訓(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ā)射場地環(huán)境,、導(dǎo)彈武器系統(tǒng)和導(dǎo)彈模型,、車輛模型運(yùn)動(dòng)特征、導(dǎo)彈起豎和發(fā)射效果,、聲音輸出等,,具有隨發(fā)射車行駛自動(dòng)漫游和多視點(diǎn)觀察功能以及良好的實(shí)時(shí)交互效果。因此,,需要從場景生成和功能效果兩個(gè)方面進(jìn)行技術(shù)實(shí)現(xiàn),。其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
??? 場景生成是指采用虛擬現(xiàn)實(shí)技術(shù)產(chǎn)生模擬的背景環(huán)境,,其中天空和地形是必要的背景元素,,模型控制包括武器裝備實(shí)體模型的建立、導(dǎo)入,、轉(zhuǎn)換和顯示等,;在功能效果的實(shí)現(xiàn)方面,三維動(dòng)畫是指在虛擬場景下車輛的行進(jìn)與停止,、地面設(shè)備的展開,、導(dǎo)彈的起豎發(fā)射以及尾罩的側(cè)推等。視點(diǎn)變換實(shí)現(xiàn)從多視點(diǎn),、多角度對整個(gè)訓(xùn)練過程進(jìn)行觀察,,特殊效果主要有爆炸、火焰,、煙霧等效果的模擬,,音響技術(shù)是場景中各種聲音的再現(xiàn)技術(shù),人機(jī)交互技術(shù)是用鼠標(biāo)和鍵盤控制操作仿真軟件,,實(shí)現(xiàn)播放和停止,、拾取和反饋。
2 實(shí)現(xiàn)子模塊功能的關(guān)鍵技術(shù)[3]
??? 在Windows平臺上,,該視景系統(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ù)庫,,很容易實(shí)現(xiàn)模型控制、視點(diǎn)變換,、著色,、光照、紋理映射,、交互操作和動(dòng)畫等,;3DS MAX建模軟件易用性強(qiáng),渲染方便,,尤其表現(xiàn)為建立模型技術(shù)能力強(qiáng)(主要包括:細(xì)分曲面技術(shù),、柔性選擇、曲面工具和NURBS技術(shù)等) ,;DirectSound是DirectX中用來控制聲音的裝置以及各音效處理的組件,速度快,、可控性強(qiáng),,調(diào)用DirectX聲音處理函數(shù),可以在設(shè)計(jì)視景系統(tǒng)時(shí)產(chǎn)生實(shí)時(shí)聲音效果,。
2.1 場景生成
??? 車載機(jī)動(dòng)發(fā)射導(dǎo)彈其發(fā)射環(huán)境是戶外露天環(huán)境,,天空和地形是導(dǎo)彈武器發(fā)射仿真系統(tǒng)的必要背景元素,其模型構(gòu)建是調(diào)用OpenGL函數(shù)庫建模,;對于導(dǎo)彈及發(fā)射車輛等實(shí)體,,用3DS MAX建立其基本模型、OpenGL加載實(shí)體模型的3DS文件,,建模效率高,,并且能夠?qū)崿F(xiàn)人機(jī)交互。
2.1.1 天空背景
??? 用OpenGL生成天空背景,,通常有3種方法:(1)用一種接近天空的淡藍(lán)色清除背景,;(2)繪制一個(gè)立方體并對其進(jìn)行紋理貼圖的“天空盒”(SkyBox)方法;(3)半球形天空模型,。對于戶外天空背景,,用藍(lá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 地形背景
??? 完成地形的生成和不同的地貌特征(如山,、平地、公路,、場坪等)的生成,。地形模型的繪制主要有兩種方式:一是根據(jù)地形圖形數(shù)據(jù)的精確描述,來進(jìn)行真實(shí)地形的仿真,;二是模擬自然場景中的地形,。模擬地形既能滿足本文設(shè)計(jì)的需要,同時(shí)應(yīng)用分形理論中點(diǎn)位移方法,,用盡量少的數(shù)據(jù)來實(shí)現(xiàn)真實(shí)感虛擬地形,,既經(jīng)濟(jì)又實(shí)用。因此該視景系統(tǒng)采用后者,,并選用了D-S算法,。該算法計(jì)算簡單、運(yùn)算速度快,,可以不斷遞歸生成任意分辨率的細(xì)化網(wǎng)格,,同時(shí)也可以保留已經(jīng)存在的地形測量數(shù)據(jù)。在地形模型基礎(chǔ)上,,映射2D紋理圖形,,用以提升地形的真實(shí)性,獲得發(fā)射環(huán)境所需的山,、平地,、公路、場坪等效果,。廣告牌技術(shù)(Billboard) 實(shí)現(xiàn)對樹木模擬的快速高效,。
2.1.3 模型控制
??? 導(dǎo)彈武器系統(tǒng)、導(dǎo)彈是該視景仿真系統(tǒng)必備的基本實(shí)體模型,。用3DS MAX對其建模后生成的模型導(dǎo)入OpenGL程序再對其進(jìn)行控制是一種比較理想的方法,。3DS文件是由許多塊(chunk)構(gòu)成(大塊中嵌套子塊),一個(gè)塊由塊信息和塊數(shù)據(jù)組成,。而塊信息又由塊的ID和塊的長度組成,。完整讀取實(shí)體模型3DS文件,,就要讀入這些塊中包含的模型頂點(diǎn)信息、三角面信息,、紋理信息和三角面的材質(zhì)信息等,。在MFC工程中建立虛擬模型類,采用遞歸方式用OpenGL命令調(diào)用3DS文件嵌套的塊結(jié)構(gòu),,而返回上一級(子塊讀完,,返回父塊)的條件是當(dāng)前已經(jīng)讀入的塊字節(jié)數(shù)等于塊長度,從父塊轉(zhuǎn)向讀入其子塊則可用switch( )語句實(shí)現(xiàn),。
2.2 功能效果的實(shí)現(xiàn)
??? 功能效果的實(shí)現(xiàn)主要完成靜態(tài)場景生成,,如系統(tǒng)的漫游、不同視角觀察,、導(dǎo)彈發(fā)射車的行駛,、導(dǎo)彈起豎和起飛、尾罩側(cè)推以及尾焰的產(chǎn)生等,。
??? (1)三維動(dòng)畫
??? 在系統(tǒ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ū),,前臺緩沖區(qū)進(jìn)行圖形顯示,,后臺緩沖區(qū)執(zhí)行繪制命令,。場景的繪制命令首先被后臺調(diào)用,當(dāng)完整的畫面在后臺視頻中畫出以后,,執(zhí)行SwapBuffers( )函數(shù),,成為可見視頻緩存。通過設(shè)定OpenGL中的平移命令glTranslate( )和旋轉(zhuǎn)命令glRotate( )命令參數(shù)來獲得動(dòng)畫效果,。這樣通過矩陣變換,,完成后臺繪制,前臺顯示,,兩個(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è)定,,確定視口的位置和大?。蝗缓笥胓luPerspective( )函數(shù)來定義模型坐標(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è)相對視點(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)場錄音,得到導(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)良的平臺,,更加直觀地顯示了導(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)的,。用若干形狀簡單且賦予了生命的微小粒子作為基本元素,而把物體定義為眾多不規(guī)則,、隨機(jī)分布的粒子,,隨著時(shí)間的推移,由于每個(gè)粒子具有獨(dú)立的生命周期,,通過粒子參數(shù)進(jìn)行隨機(jī)過程的控制,,舊的粒子不斷消失,新的粒子不斷出現(xiàn),,并且通過賦予粒子紋理來達(dá)到模擬尾焰的效果,。用粒子系統(tǒng)實(shí)現(xiàn)的尾焰逼真度高,。
3 優(yōu)化措施
??? 整個(gè)視景仿真系統(tǒng)搭建起來后,,應(yīng)用OpenGL光照、材質(zhì),、紋理映射以及特殊效果技術(shù),,生成逼真形象的導(dǎo)彈發(fā)射環(huán)境。但整個(gè)系統(tǒng)需要處理的數(shù)據(jù)多,,運(yùn)算量大,,要確保軟件在普通PC機(jī)上流暢運(yùn)行,真正達(dá)到能夠跨平臺使用,,采取優(yōu)化措施解決圖像真實(shí)感與實(shí)時(shí)性的問題是很有必要的,。具體優(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)實(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)火過程仿真,,場景真實(shí),,符合該導(dǎo)彈發(fā)射的實(shí)際。同時(shí),,效果流暢,,人機(jī)交互自然,再配以音響產(chǎn)生實(shí)時(shí)音效,,有一種身臨其境的感覺,,更增加了直觀效果。導(dǎo)彈武器發(fā)射環(huán)境視景仿真系統(tǒng)使得導(dǎo)彈實(shí)裝操作,、訓(xùn)練和觀摩簡單易行,,實(shí)施方便。
??? 本文在計(jì)算機(jī)軟硬件平臺上,,應(yīng)用虛擬仿真技術(shù),,構(gòu)建了導(dǎo)彈發(fā)射環(huán)境視景仿真系統(tǒng)。虛擬視景系統(tǒng)具有高效性,、可控性,、無破壞性,、使用靈活性、系統(tǒng)運(yùn)轉(zhuǎn)費(fèi)用低等特點(diǎn),,能夠突破傳統(tǒng)訓(xùn)練方式的局限,,既對號手進(jìn)行導(dǎo)彈操作模擬訓(xùn)練,取代實(shí)彈訓(xùn)練中的部分科目和內(nèi)容,,又改變了傳統(tǒng)的人教人,、師帶徒的落后教學(xué)方式,提高了訓(xùn)練質(zhì)量,,同時(shí),,對下一步導(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高級編程與可視化開發(fā)系統(tǒng)開發(fā)篇(第2版). 北京:中國水利水電出版社. 2007.
[4]?吳賓,畢麗蘊(yùn). OpenGL編程實(shí)例與技巧. 北京:人民郵電出版社,,1999.
[5]?WrightR S,Lipchak J B. OpenGL超級寶典(第2版).徐波,,譯. 北京:人民郵電出版社,2005.