劉娜 江南機(jī)電設(shè)計(jì)研究所
虛擬現(xiàn)實(shí)技術(shù)可利用計(jì)算機(jī)建立模型來描述人、物、環(huán)境及其相互關(guān)系,創(chuàng)造一個(gè)讓人如同體驗(yàn)真實(shí)場(chǎng)景的三維虛擬世界,在游戲開發(fā)、軍事仿真等領(lǐng)域得到廣泛應(yīng)用。OpenGL 作為一種開發(fā)可視化仿真系統(tǒng)的圖形API,提供了嚴(yán)格遵循計(jì)算機(jī)圖形學(xué)原理設(shè)計(jì)的點(diǎn)、線、多邊形等基本圖形函數(shù)以及圖形變換、紋理映射、動(dòng)畫顯示等圖形操作函數(shù),具有很強(qiáng)的二次開發(fā)功能。
本文在Visual C++平臺(tái)上利用OpenGL函數(shù)庫建立了導(dǎo)彈飛行視景仿真模型,根據(jù)輸入的導(dǎo)彈飛行數(shù)據(jù)參數(shù),可對(duì)導(dǎo)彈飛行彈道進(jìn)行可視化仿真,對(duì)所規(guī)劃的彈道進(jìn)行可行性驗(yàn)證。
高品質(zhì)的三維實(shí)體模型是形成逼真的視景仿真效果的關(guān)鍵條件。OpenGL提供了一系列繪制基本圖元的函數(shù),然后利用繪制的基本圖元按照一定的空間位置組合形成復(fù)雜的幾何物體。采用這種方法對(duì)于形狀簡(jiǎn)單的物體較為容易,且可將繪制模型形成的代碼進(jìn)行封裝,重復(fù)使用,提高建模效率,本文中的導(dǎo)彈模型就是采用此方法建立的。根據(jù)導(dǎo)彈結(jié)構(gòu)特點(diǎn),把導(dǎo)彈分為彈頭、彈身、舵翼等部分。
對(duì)于如飛機(jī)等形狀復(fù)雜的目標(biāo)物體,單純利用上述基本圖元組合方法,編程復(fù)雜,圖形顯示實(shí)時(shí)性不能保證。本文對(duì)于目標(biāo)的外形的建立是通過3ds max實(shí)現(xiàn)的,利用轉(zhuǎn)換軟件將其轉(zhuǎn)換為OpenGL可讀取的文件格式,采用三角形近似逼近的方法繪制目標(biāo)。
導(dǎo)彈與目標(biāo)的飛行過程模擬是通過保持視點(diǎn)坐標(biāo)不變,移動(dòng)、旋轉(zhuǎn)以及縮放導(dǎo)彈及目標(biāo)模型等方式實(shí)現(xiàn)的。首先確認(rèn)視點(diǎn)坐標(biāo)位置,通過gluLookAt()函數(shù)定義了仿真視點(diǎn)的位置,通過讀取事先開發(fā)的導(dǎo)彈模擬程序的計(jì)算文件獲取導(dǎo)彈與目標(biāo)的位置信息,并利用OpenGL提供的glTranslatef將導(dǎo)彈與目標(biāo)更新的位置坐標(biāo)變化轉(zhuǎn)換到視圖界面中對(duì)應(yīng)的(x,y,z)位置,實(shí)現(xiàn)導(dǎo)彈與目標(biāo)在視景仿真過程中沿著x軸、y軸、z軸平移動(dòng)作,通過glRotatef函數(shù)設(shè)置導(dǎo)彈與目標(biāo)在飛行過程中旋轉(zhuǎn)變換;通過glScale 實(shí)現(xiàn)導(dǎo)彈與目標(biāo)沿著x,y,z軸縮放操作。
環(huán)境仿真效果對(duì)視景仿真的逼真性和實(shí)際的仿真顯示效果具有重要影響,場(chǎng)景仿真越接近真實(shí)環(huán)境,對(duì)圖形處理的要求就越高。
1)地形繪制
地形作為自然界中復(fù)雜程度最高的景物,其模擬繪制方法廣受關(guān)注,地形生成可分真實(shí)地形與模擬地形可視化兩類,而本導(dǎo)彈飛行視景仿真對(duì)地形背景要求只需滿足基本感官效果,不必達(dá)到真實(shí)地形的逼真程度,因此,本系統(tǒng)采用了隨機(jī)高程數(shù)據(jù)生成方法來模擬地形。隨機(jī)高程三維地形模擬方法是將三維地形中的地平面分解為網(wǎng)格,根據(jù)網(wǎng)格頂點(diǎn) ( x , z),利用計(jì)算機(jī)生成的隨機(jī)特征點(diǎn)作為地形高度y值,同時(shí)在不同高度值間采用多階曲線擬合方法使形成的地形比較平滑,最后對(duì)地形網(wǎng)格進(jìn)行多重紋理貼圖,形成具有較高逼真性的三維地形。在三維地形繪制中,通過建立頂點(diǎn)位置數(shù)組、顏色數(shù)組及紋理坐標(biāo)數(shù)組方法,減少函數(shù)的調(diào)用及頂點(diǎn)傳遞次數(shù),提高視景顯示的流暢性。
2)天空背景模擬
天空的構(gòu)造為視景仿真提供了極好的感官效果。本文采用構(gòu)建貼有天空紋理的半球形網(wǎng)格方法進(jìn)行天空體的繪制,通過OpenGL中球面坐標(biāo)系建立網(wǎng)格頂點(diǎn)坐標(biāo)f(x,y,z),然后選擇合適的天空紋理映射到網(wǎng)格的方法建立半圓頂形天空模型。由于半球形天空繪制方法形成的頂點(diǎn)數(shù)據(jù)越多,紋理貼圖效果越逼真,霧化效果越均勻,但是頂點(diǎn)數(shù)據(jù)過多會(huì)造成天空背景繪制效率變慢,本文采用半球形網(wǎng)格天空繪制方法生成的32×64個(gè)天空頂點(diǎn)。
本文根據(jù)導(dǎo)彈與目標(biāo)模型位置差進(jìn)行碰撞檢測(cè),當(dāng)導(dǎo)彈與目標(biāo)模型位置差小于導(dǎo)彈戰(zhàn)斗部殺傷距離時(shí),確定彈目遭遇,進(jìn)行爆炸效果的模擬,否則導(dǎo)彈未命中。對(duì)爆炸效果的模擬采用了對(duì)象的不同繪制方法,在爆炸前是按照幾何圖形繪制方法繪制導(dǎo)彈,讀取OBJ文件并根據(jù)三角近似逼近的方法繪制目標(biāo);而在導(dǎo)彈擊中目標(biāo)后,爆炸效果繪制分為破裂和碎片飛散兩個(gè)步驟,模型破裂采用三角近似逼近的方法模擬爆炸碎片,將導(dǎo)彈與目標(biāo)分成不同的面片,分散來進(jìn)行繪制的,在爆炸后根據(jù)爆炸原理繪制碎片飛散效果,將導(dǎo)彈與目標(biāo)殘骸向外膨脹,爆炸碎片隨著距離的增加而逐漸衰減,根據(jù)計(jì)算模型對(duì)象的各個(gè)三角形面片在爆炸作用下的新的位置,利用最初的三角形面片的紋理,將爆炸對(duì)象繪制出來,同時(shí)賦予爆炸碎片旋轉(zhuǎn)屬性。
本文利用VC與OpenGL開發(fā)了以某型導(dǎo)彈為例的導(dǎo)彈飛行視景仿真模型,能方便的對(duì)場(chǎng)景中的導(dǎo)彈各部分尺寸進(jìn)行設(shè)置,可通過改變性能參數(shù)來達(dá)到不同型號(hào)的導(dǎo)彈作戰(zhàn)仿真。提供了真實(shí)的三維場(chǎng)景,實(shí)現(xiàn)了導(dǎo)彈的六自由度可視化演示,對(duì)規(guī)劃導(dǎo)彈飛行彈道具有很好的工程應(yīng)用價(jià)值。
[1]胡海,錢江.對(duì)機(jī)動(dòng)突防反艦導(dǎo)彈的防御[J].現(xiàn)代防御技術(shù),29(5): 20-23.
[2]玄一民,李紅亮,宋貴寶.潛艦導(dǎo)彈與航母編隊(duì)攻防對(duì)抗仿真系統(tǒng)設(shè)計(jì)[J].飛航導(dǎo)彈, 2005.
[3]劉劍威.反艦導(dǎo)彈典型攻擊模式及運(yùn)動(dòng)仿真研究[J].指揮控制與仿真,2006.