郭 含,王 茜,周弘揚
(空軍勤務學院, 江蘇 徐州 221000)
當前,某型導彈的訓練主要存在以下問題:一是實裝配發數量有限,保障與訓練矛盾突出;二是現有訓練設備/系統基本都以單人/單機形式展開,通用性差,訓練效果不好。考慮到運輸與安全等問題,某型導彈各部件分裝在不同包裝箱內,使用時,需要對各部件進行裝配對接。由于導彈裝配對接技術要求高,需要多人協同完成,因此,開發多人協作式模擬訓練系統對提高訓練效率和導彈的保障能力具有重要意義。隨著計算機仿真和網絡技術的發展,多人協作式模擬訓練系統在雷達裝備[1]、坦克戰車[2]、防空導彈[3]等作戰訓練中研究和應用相對較多,但在彈藥訓練上研究應用較少。
分布式虛擬現實(DVR)是傳統虛擬現實技術的多用戶發展,每個用戶在一個虛擬環境中,通過計算機網絡與其他用戶進行交互[4]。本文針對某型導彈的技術保障過程,基于DVR思想,采用Virtools虛擬現實開發工具,設計了某型導彈的多人協作模擬訓練系統,可實現多人協同進行導彈啟封、安裝、對接和檢測等過程的訓練,具有訓練周期短、效率高、安全性高、費用低等明顯優勢[5]。
系統的開發以教學訓練實際為依據,設定對應的教學與訓練模式,通過計算機界面展示給操作人員,幫助人員提高操作的規范性和配合程度。根據該型導彈的保障特點和訓練需求,得出訓練系統應具有以下功能:1)教學輔助功能,輔助教員進行裝備的理論講解,可進行導彈結構原理和保障流程的演示。2)部件拆裝訓練。可根據訓練進度,具有具有單步提示和多步連續操作模式;3)保障流程訓練,通過訓練場景的切換和虛擬裝備的交互作用,實現導彈全流程的保障作業。4)多人員協同功能,即實現多個用戶同時在一個場景中進行作業。5)數據管理和成績評估功能。用于管理系統數據和人員操作信息,根據訓練數據,對操作人員進行成績的評定[6]。圖1為系統的功能結構框圖。

圖1 系統功能模塊結構框圖
Virtools作為虛擬現實的一種開發工具,具有模塊化設計優勢,開發人員只需拖曳相應的行為模塊(Building Blocks,簡稱BB)就可以建構復雜的交互應用程序,另外,開發人員還可運用Virtools的VSL或SDK編寫程序代碼,設計特定的BB。Virtools Dev作為Virtools最常用的開發平臺,本身不能建模,但導入3DS MAX等建立的模型,通過環境設計,可實現模型與環境的交互[4]。Virtools Multuser Server(多用戶服務器)通過網絡連線,在標準的TCP/IP網絡協議上進行3D多人連線的交互協同。將Virtools開發的文檔與Multiuser Server進行整合,即可實現訪問資料庫、多人連線及數據串流等功能[7]。3ds Max是基于PC機的三維動畫渲染和制作軟件,廣泛應用于建筑設計、三維動畫、多媒體輔助教學及工程可視化等領域。Photoshop(PS)是一種圖像處理軟件,可以有效地進行圖片編輯工作。
系統采用C/S架構,即在一個局域網中,設置一臺系統服務器,用于對整個訓練資源進行管理,主要包括場景管理、協同交互、訓練任務管理、用戶管理和網絡通信等模塊,在系統消息控制下進行模塊間的數據通信,并通過與數據庫層的通信實現數據關聯。客戶端訪問服務器資源,兩者通過網絡通信模塊進行信息交互[7-9]。系統總體架構如圖2所示。

圖2 多人模擬訓練系統總體架構框圖
在系統設計時,首先需要對導彈及其保障裝備、操作工具和虛擬角色等進行三維建模,在建模時要考慮到真實感,使其盡可能接近實體的外觀形態,并具有交互功能。由于Virtools本身沒有建模功能,所以虛擬模型通過3ds Max開發實現,采用PS對二維形態進行貼圖處理,增強模型真實感,再利用Exporter插件保存成NMO格式,儲存到模型數據庫中,以備運行程序調用[10]。
系統運行過程中存在著大量的信息交互,若將這些信息直接放置在程序中,無疑會使程序的規模增大,使系統的實時性變差,同時也不便于程序的升級擴展,所以利用數據庫對這些信息進行統一管理,可以方便數據的調用,提高仿真效率。設計中建立了操作工具數據庫、虛擬模型數據庫和虛擬角色及動作管理數據庫,分別用于操作工具、裝備和人員模型的管理;建立了任務庫和規則庫,儲存訓練模式信息及對應的操作規則;建立了用戶信息數據庫,用于記錄操作人員的操作數據,并利用這些數據進行訓練成績數據評定。Virtools在運行中,通過BB實現與各數據庫間的實時通信,可以直接調用各數據庫中的信息,并將產生的新數據重新保存到相應數據庫中,實現信息的實時交互。
Virtools的交互式過程設計是通過對行為交互模塊BB進行調用、編程來實現。導彈模擬訓練操作涉及多個零部件,其運動各不相同,但總體可歸納為平移、旋轉、鼠標移動對象等操作,Virtools提供了“Translate”、“Rotate”、“Move To”等BB,控制對應零部件和彈體運動。另外,通過設置攝像機增加了視角控制,實現多角度的瀏覽,將每個攝像機的視點指向特定的參考實體,利用“Set As Active Camera”模塊切換各個固定的視角。
針對多用戶協同操作的交互設計,建立了多人連線協作模型,如圖3所示。先通過設置Connect To Server BB連接服務器,建立網絡連接并獲得Connection ID;再利用Get Sessions List BB獲取服務器上的會話列表,該BB的Session Type必須和服務器上的設置相同,若找到其他的Session時,就會使用Join Session加入會話;這時Object Copy BB會從虛擬角色庫中復制創建一個本機操作角色,利用Create Distributed Object BB將角色信息注冊在服務器Server中,然后通過控制攝像的視角控制虛擬角色的移動;其他用戶通過Distributed Object Created收到對方角色注冊信息,并在本機上復制一個對方角色,利用Bind Distributed Object BB把復制的角色和Distributed Object綁定,按照Manage Distributed Classes BB所設定要傳遞的數據進行數據的傳送,實現多用戶協作交互功能。

圖3 多人連線協作流程框圖
為避免在虛擬訓練環境下物體間發生穿越,需要進行碰撞檢測設置。Virtools中Collision Manager(碰撞管理器)用于對運行中的碰撞進行設置和記錄[5-6]。由于運行過程中三維實體具有不同的屬性,在設置時,可以將屬性類似的歸為一個Group組,然后根據物體碰撞特點選擇不同的碰撞方式。比如,可以根據運動模式將實體分為固定和運動兩類,分別利用Fixed Obstacle和Moving Obstacle進行碰撞設置,并利用Collision Detection BB對碰撞進行檢測。
用Virtools中提供的3ds Max插件導入后綴名為.nmo的虛擬模型文件。為使增強三維環境真實感,需要對Virtools運行中的Light、Object、視角控制和Frame等要素進行設置[5,10]。另外,在導入三維模型時,要進行合適的比例縮放,以使其盡量符合現實生活中的比例大小。
訓練過程中經常需要利用轉運車對導彈進行位置轉移,一般由2~3人配合操作,下面以實現雙人合作推動轉運車為例進行協同功能實現。
首先通過部分中介物狀態(如場景中某物體的某點坐標)確定場景中的虛擬人員是否處于適當位置,利用Network Send Message BB發送消息通知雙方,當人員都處于適當位置時,用Network Wait Message BB 和 Wait For All BB判斷并執行下一模塊。使用Proximity BB判斷人員是否靠近轉運車,當兩者距離小于設置值時,就會激活Proximity BB執行下一步。Key Event BB用于判斷操作人員按鍵,當按下推動鍵時,執行Send Message BB,給虛擬人員發送一個名為“push”的消息,人員收到“push”消息后就會在虛擬角色動作庫中調用“推”的動作,Threshold BB 和 OP BB模塊判斷虛擬人員“推”的方向。上述功能腳本流程如圖4所示。

圖4 虛擬人員位置及動作判斷控制腳本流程示意圖
轉運車在移動過程中,需要判斷移動位置,由于在地面二維平面移動,所以用OP取轉運車在地板上的坐標。當坐標值小于Test BB中設定值時,執行True輸出,導彈會繼續移動,同時兩人也跟著移動;當坐標值等于設定值時,執行False輸出,轉運車移動到位,實現效果如圖5所示。

圖5 推導彈轉運車實現效果圖
本文根據某型導彈的訓練實際,以Virtools為開發平臺,結合Multiuser Server和內置的各類行為控制模塊,設計了該型導彈模擬訓練系統,實現了多人協同訓練的目的。采用模塊化設計和數據庫技術,使系統具有較強的通用性、可移植型和可擴展性。建立了多人連線協作模型,探討了協作的實現形式,初步實現了系統部分功能。進一步的工作是通過豐富虛擬模型庫,增加導彈和設備型號,實現多型導彈模擬訓練。另外,可利用網頁技術,將C/S架構逐步升級為B/S(瀏覽器/服務器)架構,實現網上遠程訓練。