1 引言
數(shù)字化戰(zhàn)場(chǎng)[1]是繼“信息戰(zhàn)”概念出現(xiàn)之后, 作為信息戰(zhàn)建設(shè)的初期階段而提出的一種新的戰(zhàn)場(chǎng)形態(tài),,其本質(zhì)是將數(shù)字化技術(shù)引入部隊(duì)和戰(zhàn)場(chǎng),,將所有相關(guān)功能系統(tǒng)通過(guò)網(wǎng)絡(luò)聯(lián)結(jié)成一個(gè)有機(jī)整體,,以達(dá)到整個(gè)作戰(zhàn)范圍內(nèi)的信息資源共享,,最終實(shí)現(xiàn)部隊(duì)和戰(zhàn)場(chǎng)的指揮,、控制,、通信和情報(bào)(即C3I)高度一體化
虛擬戰(zhàn)場(chǎng)環(huán)境[3]是戰(zhàn)場(chǎng)可視化仿真的運(yùn)行基礎(chǔ),虛擬戰(zhàn)場(chǎng)環(huán)境的生成主要包括場(chǎng)景建模和場(chǎng)景驅(qū)動(dòng)兩個(gè)步驟,。虛擬戰(zhàn)場(chǎng)環(huán)境主要由戰(zhàn)場(chǎng)地形模型,、戰(zhàn)場(chǎng)地物模型、武器模型,、士兵模型等三維模型組成,,可以使用以MultiGen Creator[4]為代表的仿真建模軟件包來(lái)完成,虛擬場(chǎng)景驅(qū)動(dòng)則可以通過(guò)特定的渲染引擎來(lái)實(shí)現(xiàn),,常用的渲染引擎有Vega,、Performer、 OpenGVS等,。
本文將要主要討論的Vega是一套完整地用于開(kāi)發(fā)交互式,、可視化仿真應(yīng)用的軟件平臺(tái)和工具集,它最基本的功能就是驅(qū)動(dòng),、控制,、管理虛擬場(chǎng)景并能夠方便的實(shí)現(xiàn)大量特殊視覺(jué)和聲音效果。
需要指出的是,,本文實(shí)現(xiàn)的虛擬戰(zhàn)場(chǎng)仿真離嚴(yán)格意義上的可視化戰(zhàn)場(chǎng)還有一定的距離,,下一步的工作一方面是對(duì)虛擬戰(zhàn)場(chǎng)環(huán)境繼續(xù)豐富和完善,添加虛擬士兵等更復(fù)雜的仿真實(shí)體,,加入逼真的三維聲場(chǎng),,提高參與者的沉浸感,另一方面還要進(jìn)一步研究虛擬戰(zhàn)場(chǎng)環(huán)境仿真的分布式網(wǎng)絡(luò)化應(yīng)用和對(duì)各種底層信息數(shù)據(jù)庫(kù)的集成等,,最終形成一個(gè)完整的數(shù)字化戰(zhàn)場(chǎng)環(huán)境系統(tǒng),。
2 仿真目標(biāo)和解決方案
確定仿真目標(biāo)是仿真應(yīng)用的首要環(huán)節(jié),也是進(jìn)行仿真應(yīng)用程序開(kāi)發(fā)的基礎(chǔ),。本文中我們通過(guò)模擬發(fā)生在一個(gè)虛擬小鎮(zhèn)上假想的軍事武裝對(duì)抗過(guò)程,,詳細(xì)討論基于Vega的軍事仿真應(yīng)用方法,、實(shí)現(xiàn)及其關(guān)鍵技術(shù)。假想的虛擬作戰(zhàn)對(duì)抗仿真過(guò)程大致如下:一架E2C預(yù)警機(jī)在小鎮(zhèn)高空中盤(pán)旋,,執(zhí)行日常的偵察預(yù)警任務(wù),。一輛不明身份的M1主戰(zhàn)坦克悄悄的從邊境潛入小鎮(zhèn),不久便被E2C預(yù)警機(jī)發(fā)現(xiàn)并鎖定目標(biāo),,通知駐守在小鎮(zhèn)中的阿帕齊武裝直升機(jī)前往堵截,,并發(fā)射激光制導(dǎo)導(dǎo)彈將其摧毀。預(yù)警機(jī)左翼發(fā)動(dòng)機(jī)突然出現(xiàn)機(jī)械故障,,起火燃燒,,最終落地墜毀并引發(fā)了劇烈的爆炸,隨后直升機(jī)趕往墜毀地點(diǎn)進(jìn)行救援,。
通過(guò)對(duì)預(yù)定仿真目標(biāo)的分析可知,,要實(shí)現(xiàn)設(shè)想的仿真效果需要分別代表E2C預(yù)警偵察機(jī)、M1主戰(zhàn)坦克,、阿帕齊武裝直升機(jī),、制導(dǎo)導(dǎo)彈等虛擬戰(zhàn)場(chǎng)環(huán)境中的動(dòng)態(tài)元素模型,同時(shí)還需要用于模擬旋轉(zhuǎn)的機(jī)翼,、發(fā)動(dòng)機(jī)和導(dǎo)彈等產(chǎn)生的尾跡,、坦克和直升機(jī)發(fā)生的爆炸、燃燒,、煙霧等的特殊效果,。虛擬戰(zhàn)場(chǎng)環(huán)境的三維模型數(shù)據(jù)庫(kù)我們使用了預(yù)先創(chuàng)建好的OpenFlight模型,E2C預(yù)警機(jī)的運(yùn)動(dòng)完全由仿真應(yīng)用程序控制,,坦克入侵路線(xiàn)可以使用Vega的路徑工具事先定義導(dǎo)航路徑來(lái)控制,,而武裝直升機(jī)的起降、導(dǎo)彈的發(fā)射和預(yù)警機(jī)的失事則通過(guò)仿真應(yīng)用程序與用戶(hù)通過(guò)鼠標(biāo)和鍵盤(pán)來(lái)交互控制,。由于導(dǎo)彈發(fā)射和預(yù)警機(jī)墜落時(shí)間的不確定性,,導(dǎo)彈的運(yùn)動(dòng)軌跡和直升機(jī)的救援路線(xiàn)則需要在仿真過(guò)程中實(shí)時(shí)的生成。為了更好的反映當(dāng)前的仿真應(yīng)用運(yùn)行情況和虛擬戰(zhàn)場(chǎng)態(tài)勢(shì),,仿真應(yīng)用過(guò)程中相關(guān)的戰(zhàn)場(chǎng)信息需要實(shí)時(shí)的顯示在屏幕上,。
運(yùn)行基于Vega的仿真應(yīng)用程序需要在初始化階段設(shè)置大量參數(shù)的初始值,包括虛擬場(chǎng)景內(nèi)各種模型對(duì)象和角色對(duì)象的起始狀態(tài)和位置,、虛擬場(chǎng)景內(nèi)的燈光和環(huán)境的設(shè)置,、硬件平臺(tái)的屬性配置等,在運(yùn)行階段也要保持或更新大量的參數(shù)值,。Vega將這些數(shù)據(jù)信息儲(chǔ)存為ADF格式的應(yīng)用程序定義文件,,可以使用Vega提供的LynX[5]圖形界面ADF配置和預(yù)覽工具,初始化虛擬場(chǎng)景中的元素屬性及其相互關(guān)系。
3 系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)
3.1 自然環(huán)境模擬
自然環(huán)境對(duì)戰(zhàn)場(chǎng)態(tài)勢(shì)發(fā)展和對(duì)戰(zhàn)雙方的作戰(zhàn)指揮等有著重要的影響,,虛擬戰(zhàn)場(chǎng)場(chǎng)景中的自然環(huán)境表達(dá)直接關(guān)系到仿真應(yīng)用的真實(shí)性和可信度,。為了能夠逼真的模擬出自然界中的大氣層環(huán)境,Vega 使用了如圖1所示的七層結(jié)構(gòu)的大氣層模擬模型,,同時(shí)還提供了多種可由參數(shù)控制的自然環(huán)境效果,我們可以直接在相應(yīng)的LynX面板中對(duì)包括天空顏色,、霧模型,、云彩模型、環(huán)境光等在內(nèi)的多種元素進(jìn)行預(yù)設(shè),,在應(yīng)用程序執(zhí)行的過(guò)程中還可以通過(guò)調(diào)用相應(yīng)的API函數(shù)[6]對(duì)自然環(huán)境的各種參數(shù)進(jìn)行交互式設(shè)置,,實(shí)時(shí)改變虛擬戰(zhàn)場(chǎng)的自然環(huán)境效果,從而達(dá)到檢驗(yàn)不同自然條件下作戰(zhàn)效能之目的,。
3.2 動(dòng)態(tài)視點(diǎn)控制
視點(diǎn)是仿真系統(tǒng)用戶(hù)觀察虛擬場(chǎng)景的唯一接口,,包含了對(duì)視點(diǎn)進(jìn)行抽象的觀察者(Vega Observer)是用戶(hù)在虛擬場(chǎng)景中的替身,觀察者的位置和姿態(tài)決定了整個(gè)虛擬戰(zhàn)場(chǎng)環(huán)境可以提供給用戶(hù)的信息,。一方面要縱觀作戰(zhàn)戰(zhàn)場(chǎng)全局給用戶(hù)特別是指戰(zhàn)員提供一個(gè)視野寬廣的虛擬環(huán)境,,另一方面又要考慮能夠以與動(dòng)態(tài)仿真實(shí)體相一致的視角來(lái)觀察虛擬作戰(zhàn)環(huán)境,從而獲得更好的沉浸感,。一般而言,,虛擬戰(zhàn)場(chǎng)環(huán)境范圍較大、仿真實(shí)體數(shù)量多且運(yùn)動(dòng)狀態(tài)復(fù)雜多變,,所以視點(diǎn)應(yīng)該能夠盡可能的進(jìn)行多角度,、多模式觀察,可以采用多觀察者方案,,即一個(gè)主要觀察者和若干個(gè)輔助觀察者,。我們?cè)趹?yīng)用程序中使用了Vega基本模塊提供的形式多樣的觀察者定位方式,包括跟隨,、綁定,、旋轉(zhuǎn)、固定路徑,、觀望等多種模式及其混合模式,,使用者可以通過(guò)彈出菜單或快捷鍵在多個(gè)觀察者之間進(jìn)行實(shí)時(shí)切換和組合,以滿(mǎn)足使用者的不同需求,。表1中給出了不同狀態(tài)下主要觀察者的定位方式:
3.3 實(shí)時(shí)路徑導(dǎo)航
路徑導(dǎo)航在戰(zhàn)場(chǎng)對(duì)抗仿真中有著大量的應(yīng)用,,對(duì)戰(zhàn)前期的戰(zhàn)斗部隊(duì)、坦克編隊(duì)等的行進(jìn)通常是沿著固定或者相對(duì)固定的路線(xiàn)進(jìn)行進(jìn)的,,對(duì)戰(zhàn)過(guò)程中的以制導(dǎo)導(dǎo)彈為代表的火炮武器炮彈在發(fā)射后也都會(huì)按照一定的路徑進(jìn)行導(dǎo)航的,。導(dǎo)航路徑的生成有兩種方式,一種是非實(shí)時(shí)的,即使用路徑工具(PathTool)預(yù)先定義,,另一種則是實(shí)時(shí)的生成導(dǎo)航路徑,。以導(dǎo)彈飛行路徑生成為例,由于直升機(jī)運(yùn)動(dòng)的不確定性,,在發(fā)射導(dǎo)彈的位置和時(shí)間是隨機(jī)的,,不可能事先預(yù)知導(dǎo)彈的運(yùn)動(dòng)軌跡,所以必須在仿真應(yīng)用程序中實(shí)時(shí)的生成導(dǎo)航路徑,,圖2 是生成導(dǎo)航飛行路徑的程序流程圖:
3.4 戰(zhàn)場(chǎng)特殊效果
在虛擬戰(zhàn)場(chǎng)模擬仿真應(yīng)用中,,經(jīng)常需要模擬出一些特殊的三維視覺(jué)效果來(lái)增強(qiáng)整個(gè)虛擬戰(zhàn)場(chǎng)環(huán)境的感染力和真實(shí)性,比如各種火炮武器的開(kāi)火效果,、各種炸彈的爆炸效果,、直升機(jī)螺旋槳的旋轉(zhuǎn)效果、導(dǎo)彈發(fā)射后飛行時(shí)產(chǎn)生的尾氣痕跡等,。通常這些效果很難用傳統(tǒng)的多邊形建模技術(shù)來(lái)實(shí)現(xiàn),,一般的解決方案是應(yīng)用高級(jí)的紋理技術(shù)或者使用復(fù)雜的粒子系統(tǒng)[7]。粒子系統(tǒng)的基本思想是,,采用大量的,、具有一定生命和各種屬性的微小粒子圖元作為基本元素來(lái)描述不規(guī)則對(duì)象。粒子系統(tǒng)中的每一個(gè)粒子都具有形狀,、大小,、顏色、透明度,、運(yùn)動(dòng)速度,、運(yùn)動(dòng)方向、生命周期等相關(guān)的屬性,。一般而言,,創(chuàng)建特定的粒子系統(tǒng)是一個(gè)比較復(fù)雜的過(guò)程,一方面要考慮真實(shí)的物理模型和相應(yīng)的動(dòng)力學(xué)規(guī)律,,另一方面需要對(duì)粒子的大量屬性分別進(jìn)行設(shè)置,。Vega特殊效果模擬模塊[8]預(yù)制了包括爆炸、煙霧,、導(dǎo)彈尾跡在內(nèi)的多種實(shí)時(shí)三維特殊效果,,提供了擴(kuò)展的粒子系統(tǒng)參數(shù)設(shè)置面板,可自定義的粒子參數(shù)包括粒子生命周期,、粒子個(gè)數(shù),、粒子源及其發(fā)射模式、粒子速度分布和各種速度矢量等,。
戰(zhàn)場(chǎng)特效的管理和控制應(yīng)該符合虛擬戰(zhàn)斗態(tài)勢(shì)的發(fā)展,,所以一般只在特效設(shè)置面板中進(jìn)行初始參數(shù)設(shè)置但并不啟用它們,而是在仿真應(yīng)用運(yùn)行的過(guò)程中根據(jù)實(shí)際情況,通過(guò)相應(yīng)的API函數(shù)進(jìn)行特效控制和參數(shù)調(diào)整,。下面是預(yù)警機(jī)發(fā)動(dòng)機(jī)失效時(shí),,應(yīng)用程序控制特殊效果的部分代碼:
vgProp(fx_trail, VGFX_DURATION, vgGetTime()-vgGetFxTime(fx_trail1,VGFX_STARTTIME) +1.0 ); // 設(shè)置預(yù)警機(jī)引擎尾氣特效的持續(xù)時(shí)間
vgProp( fx_airhit, VGFX_STATE, VG_ON ); // 啟用預(yù)警機(jī)引擎閃光特效
vgProp( fx_engburn, VGFX_STATE, VG_ON ); // 啟用預(yù)警機(jī)引擎燃燒特效
vgProp( fx_engsmoke, VGFX_STATE, VG_ON ); // 啟用預(yù)警機(jī)引擎冒煙特效
vgProp( fx_engburn, VGFX_DURATION, VGFX_ALWAYS ); // 設(shè)置燃燒特效持續(xù)時(shí)間
vgProp( fx_engsmoke, VGFX_DURATION, VGFX_ALWAYS ); // 設(shè)置冒煙特效持續(xù)時(shí)間
vgFxTime( fx_airhit, VGFX_STARTTIME, VGFX_NOW ); // 立即執(zhí)行閃光特效
vgFxTime( fx_engburn, VGFX_STARTTIME, VGFX_NOW ); // 立即執(zhí)行燃燒特效
vgFxTime( fx_engsmoke, VGFX_STARTTIME, VGFX_NOW ); // 立即執(zhí)行冒煙特效
4 仿真結(jié)果
本文實(shí)現(xiàn)的虛擬戰(zhàn)場(chǎng)對(duì)抗仿真應(yīng)用基于NT平臺(tái)開(kāi)發(fā),使用Visual C++6編譯環(huán)境,,在P4 2.4G處理器,、512M內(nèi)存、GeForceFX 5700圖形卡的硬件配置條件下可以流暢的運(yùn)行,,圖3-5為仿真應(yīng)用程序運(yùn)行過(guò)程中的屏幕截圖,。
圖3 多觀察者模式下的仿真效果
在多觀察者模式下,用戶(hù)可以同時(shí)以多種視角來(lái)觀察虛擬戰(zhàn)場(chǎng),,如圖3所示:位于屏幕左下角的通道以俯視觀察者的視角顯示,可以縱觀戰(zhàn)場(chǎng)全局態(tài)勢(shì),,對(duì)戰(zhàn)雙方在虛擬戰(zhàn)場(chǎng)中所處的位置,,也會(huì)在該通道中分別用紅色和藍(lán)色實(shí)時(shí)的標(biāo)識(shí)出來(lái)。屏幕的右側(cè)則是一系列輔助觀察者分別用于觀察特定的仿真實(shí)體,,本文實(shí)現(xiàn)的系統(tǒng)可支持最多同時(shí)使用五個(gè)輔助觀察者,,當(dāng)然也可以是它們的任意數(shù)量的組合。
圖4 偵察機(jī)引擎發(fā)生故障
5 結(jié)語(yǔ)
在未來(lái)戰(zhàn)爭(zhēng)的數(shù)字化戰(zhàn)場(chǎng),,無(wú)論是軍事訓(xùn)練,、戰(zhàn)術(shù)演練,還是作戰(zhàn)指揮或者戰(zhàn)術(shù)論證評(píng)估,,都需要虛擬戰(zhàn)場(chǎng)可視化仿真來(lái)做支撐和保障,。本文探討了基于Vege的虛擬戰(zhàn)場(chǎng)可視化仿真應(yīng)用的方法,重點(diǎn)討論了自然環(huán)境模擬,、動(dòng)態(tài)視點(diǎn)控制,、實(shí)時(shí)路徑導(dǎo)航和基于粒子系統(tǒng)的特殊效果等虛擬戰(zhàn)場(chǎng)環(huán)境生成中的關(guān)鍵問(wèn)題。