肖本龍 傅亦源 張 宇 楊黎都
(1.63880部隊 洛陽 471003)(2.上海機電工程研究所 上海 200233)
反輻射導彈(Anti-Radiation-Missile,ARM)作為現代武器系統的關鍵成員之一,半實物仿真在其型號研制、性能驗證等方面發揮了關鍵的作用。ARM輻射式仿真試驗是指其關鍵部件如導引頭、自動駕駛儀等在回路的閉環半實物仿真試驗,通過在微波暗室內構建真實、典型的目標信號、背景信號等戰場電磁環境,并引入三軸仿真轉臺,模擬ARM從發射指令到在控制指令下完成近區攻擊過程中導彈的物理姿態以及攻擊效果,以實現ARM在不同戰情設置情況下作戰效能的綜合評估。
可視化仿真采用計算機圖形圖像技術,根據仿真目的,構造仿真對象的三維模型或再現真實的環境,能夠達到非常逼真的仿真效果,客觀、實時地再現仿真過程,為用戶提供一個多視點、多角度、多層次觀察仿真進程的人機交互環境。由于輻射式半實物仿真試驗系統屬于硬實時系統,對實時性的要求非常苛刻,ARM輻射式仿真試驗可視化研究遵從仿真試驗系統的實時網協議規定,通過 Windows與RTX之間的數據交互,實現仿真試驗與可視化的實時同步,為試驗評估人員提供一種更加直觀、便捷的分析手段。
ARM輻射式仿真試驗可視化既要清晰地展示飛行動畫場景,又要滿足試驗實時性的要求。目前用于三維場景可視化仿真的工具已比較多,如 MultiGen Creator、Multi-Gen Vega、OpenGL等。相比之下,MultiGen Creator/Vega等作為一種工具軟件,雖然能夠節省部分開發時間,但是這些軟件局限于離線制作動畫,進行可視化仿真,開發出的產品很難在不同的操作系統之間移植,且主要側重于三維對象的建模,缺乏對場景和模型的實時控制,較難用于可視化系統的二次開發。開放性圖形庫OpenGL既能實現對場景的編輯,也能實現對場景和對象的實時控制。OpenGL可與Visual C++緊密結合,實現有關計算和圖形算法,保證算法的正確性和可靠性。在動畫實時顯示方面,OpenGL采用雙緩存技術,實現動畫的連續無閃爍響應,符合ARM輻射式仿真試驗可視化的要求。
系統完成的功能包括虛擬場景的繪制、視點的跟蹤與切換、導彈飛行數據的驅動,按照模塊化和面向對象的設計思想,將系統分為不同模塊,如圖1所示。
其中各模塊的功能如下:
· 開發環境模塊:主要用于構建系統的開發環境,系統在Visual C++環境下利用MFC和OpenGL進行開發的,考慮到在單文檔繪制OpenGL圖形較為簡單,因此構建一個基于單文檔的OpenGL圖形程序框架。具體包括OpenGL庫文件和頭文件的添加,窗口函數的重載等。

圖1 系統總體框架示意圖
· 導彈建模模塊:主要用于ARM的三維建模,并完成三維模型的加載。
· 自然場景模塊:主要用于創建飛行環境中的典型景物如地面、天空、樹木、攻擊目標等的造型。
· 坐標轉換模塊:主要用于將仿真試驗系統中使用的大地坐標系、彈體坐標系轉換為OpenGL世界中的坐標系。
· 數據驅動模塊:主要用于從仿真試驗系統中的實時內存網上獲取用于ARM飛行驅動的數據。
·動畫繪制模塊:根據獲取到的ARM實時飛行數據對飛行畫面進行重繪。
· 視點切換模塊:為實現多角度、全方位的觀察,可根據需要從不同視角切換ARM飛行過程的顯示。
· 結果顯示模塊:仿真試驗結束后,對ARM仿真全程中飛行數據以曲線的方式進行顯示,以便對仿真過程進行全面評估。
根據系統的總體框架,系統的設計流程圖如圖2所示。

圖2 系統的設計流程圖
3.2.1 導彈的建模與加載
本系統采用MilkShape3D創建導彈模型(其文件格式為MS3D),在工程中加入用于加載MS3D的類文件,分別是MilkshapeModel.h和MilkshapeModel.cpp,通過在視類中包含類的頭文件,在繪制場景時調用loadModelData()函數即可將制作好的導彈三維模型導入視景仿真程序,使模型繪制的復雜程度大大地簡化。
3.2.2 攻擊目標的構建
ARM攻擊的目標一般是雷達等電子裝備,這些裝備的構造較為復雜,外形的平面和頂點較多,如直接使用OpenGL進行繪制,難以達到逼真的效果。因此,目標的繪制考慮使用與ARM同樣的建模方法,即先在MilkShape3D里創建目標的三維模型,再通過模型的加載類將模型載入到仿真程序中。
3.2.3 數據驅動
為保證ARM輻射式仿真試驗數據通信的實時性,其通信接口工作在RTX實時擴展系統下,而可視化系統是基于Windows環境進行構建的,通過黑板式通信接口將二者有機聯系,實現ARM飛行驅動數據的實時獲取,其基本實現方法如圖3所示。
3.2.4 坐標的轉換
ARM飛行中的位置和姿態是以地面坐標系XdYdZd中三個坐標值和彈體坐標系中的方位、俯仰、橫滾三個姿態角確定的。地面坐標系原點選取在發射點上,Xd軸是彈道面與水平面交線,指向目標為正,Yd軸沿垂線向上,Zd軸與其他兩軸垂直并構成右手坐標系。而在OpenGL坐標系X0Y0Z0中計算機屏幕為X0Y0平面,Z0軸由計算機屏幕指向觀察者,Z0為負值時景物才能在屏幕上顯示。因此,需要對兩個坐標系進行變換以實現數據表述的統一,兩坐標系關系示意圖如圖4所示。

圖3 實時數據通信方式

圖4 坐標系關系示意圖
1)InitOpenGL():用于初始化OpenGL場景,生成繪制描述表并置當前繪制描述表。
2)ReadTestData():該函數以仿真試驗節拍為中斷,實時讀取實時內存網上的ARM位置姿態數據,并存入緩存以備繪制動畫。
3)ViewpointTrans():用于完成仿真視角的變換處理,實現空間不同位置導彈飛行姿態觀察。
4)OnTimeEvent():該函數以仿真試驗節拍為中斷,完成飛行場景、導彈的繪制,實現飛行動畫的驅動。
5)DrawWave():對仿真試驗數據進行獲取,并隨飛行過程實時動態繪制飛行位置、姿態數據曲線。
系統利用OpenGL的雙緩存技術,實現了平滑的實時動畫效果。使用雙緩存技術時,OpenGL分配兩個幀緩存區,在連續顯示三維曲面時,一個幀緩沖區中的數據執行繪制曲面命令的同時,另一個幀緩存區中的數據進行圖形顯示。當后臺視頻緩存中的數據要求顯示時,OpenGL就將它拷貝至前臺視頻緩存,顯示硬件不斷地讀可見視頻緩存中的內容,并把結果顯示在屏幕上。應用雙緩存技術,可以避免在進行實時可視化時由于時間延遲而產生的畫面閃爍問題。
系統實時讀取仿真試驗中實時內存網上的ARM位置和姿態數據,利用數據到達事件作為中斷,使得每收到一次數據,ARM的位置和姿態馬上進行更新顯示,從而實現ARM攻擊過程的實時可視化??梢暬到y界面如圖5所示。界面的上部為ARM輻射式仿真試驗過程中的實時飛行姿態動畫,下部分別為當前戰情信息顯示和ARM位置、姿態的數據曲線顯示,系統在仿真試驗結束后對ARM全程飛行數據進行記錄入庫,可在試驗后進行重放。
可視化系統是在仿真試驗系統的框架規定下開發的,其接口完全移植于仿真試驗系統,便于今后二次開發的實現??梢暬到y在仿真試驗過程中接收仿真試驗控制指令,如試驗開始、試驗凍結、試驗停止等,并在動畫顯示中予以體現。實時可視化和非實時可視化主要的差別在于驅動數據不同,本系統雖為實時可視化系統,但支持單機狀態下接收外部數據文件的非實時驅動,可以用于試驗后根據錄取數據重現仿真試驗過程,以科學、準確地對ARM作戰性能進行評估。
[1]于淼,焦淑紅.基于VC++與OpenGL的船舶三維模型可視化應用[J].信息技術,2011(6):161-163.
[2]岳利群,夏青,黃勇.利用OpenGL實現武器裝備模型運動可視化[J].測繪科學,2010,35(6):120-122.
[3]張明明,傅忠謙,等.基于OpenGL的導彈紅外仿真研究[J].紅外技術,2011,33(6):361-364.
[4]周杰,高洪林,周文林.基于OpenGL的新型水雷三維仿真訓練系統[J].計算機系統應用,2011,20(4):11-13.
[5]龔錚,張科.彈艦電子對抗的視景仿真技術研究和應用[J].彈艦與制導學報,2008,28(2):219-221.
[6]高穎,黃羅軍,許志國.基于OpenGL的某導彈視景仿真技術研究[J].兵工學報,2007,28(1):125-127.
[7]李綱,章校,黃地龍.仿真實時視景演示系統的研究與開發[J].彈箭與制導學報,2005,25(3):218-220.
[8]禹海全,郝永生,姚志敏.對三種常用視景仿真軟件的功能比較研究[J].計算機仿真,2006,23(2):174-176.
[9]Shreiner D,Woo M,Nerder J,et al.OpenGL programming guide[M].5th ed.Ontario,Canada:Addison-Wesley Professional,2005:1-2.
[10]陳其,劉國良,曾航,等.OpenGL三維圖形系統開發與實用技術[M].重慶:重慶大學出版社,2003:16-24.
[11]徐琦,方澄.基于反射內存網的多飛行模擬器時間同步[J].火力與指揮控制,2009,34(11):164-166.