王力伯
(中國人民警察大學,河北 廊坊 065000)
分布式三維模擬訓練系統也稱為分布式三維虛擬現實系統,它的主要特征是通過自然的人機交互界面,建立一種與人的感覺和行為相容的、與客觀世界高度類似的、逼真的綜合虛擬環境,以達到一種身臨其境的臨場感[1]。基本的三維模擬訓練系統,一般包括圖形引擎及其上的顯示系統,交互設備主要為鍵盤、鼠標,應用部分是處理邏輯和網絡交互。這其中最重要的部分就是計算仿真和三維模型,包括物理模型驅動、碰撞檢測與反饋的物理學特性,以及所制定的系統運行和人員操作即反饋規則[2]。從這個層面來講,一個典型的虛擬仿真模擬系統是一個持續不斷的循環類程序,它執行邏輯并在屏幕上繪制圖形,因此,每個分布式三維虛擬現實系統除了自身的處理邏輯外,基本上都具有相同的循環管理程序。本文結合HLA/RTI模擬訓練系統相關設計標準,對分布式三維虛擬現實系統中通用管理模型問題進行研究。
分布式虛擬現實系統的程序生命周期,可以抽象出一些通用而獨立功能模塊,包括HLA時間管理、程序初始化、與聯盟成員對象模型和交互對應的仿真對象和交互的表示、值與數據的互相轉換、消息傳遞的事件系統、對象生存周期的心跳支持、多線程支持及異常處理等[3]。按照HLA標準設計的分布式交互仿真系統,可以進一步抽象成運行支撐結構RTI軟件和盟員軟件[4],典型HLA仿真應用程序邏輯結構如圖1所示。

圖1 HLA仿真系統邏輯結構
以上這些功能,都由RTI提供的功能來保障,它是實現HLA標準中接口規范的軟件[5],相當于一個分布式操作系統,提供了一組通用的服務功能,包括聯盟管理FM(Federation Management)、聲明管理DM(Declaration Management)、對象管理OM(Object Management)、所有權管理OWM(Ownership Management)、時間管理TM(Time Management)、數據分發管理DDM(Data Distribution Management)及支持服務SS(Support Service)7個方面。由于RTI的功能從實質上說就是實現盟員間數據的有序及按需傳送,所以RTI的核心功能為時間管理、數據分發管理及對象管理[6]。作為聯盟執行的基礎設施,RTI類似一個軟總線,運行在其上的聯盟成員類似于軟插件,通過規范它們之間的接口實現無縫連接。對應于RTI提供的服務,RTI由7個功能模塊及應用和通信兩個接口層組成,接口層的目的是將仿真應用與RTI及底層支撐系統相分離,以實現RTI的通用性和可移植性。RTI典型的內部邏輯結構如圖2所示。

圖2 RTI內部邏輯結構
聯盟管理FM:管理整個聯盟的運行;創建、動態控制、修改、刪除、保存和恢復,包括盟員的加入和退出。
聲明管理DM:完成實體對象(Object)和交互(Interaction)的發布(Publish)和訂閱(Subscribe),以及相關的一些協調控制工作。
對象管理OM:處理對象的實例注冊和發現(Object Instance Registration and Discovery),屬性值更新和反映(Attribute Values Update and Reflection),發送和接收交互(Send and Receive Interaction),以及控制實例更新的相關函數和其他函數。
所有權管理OWM:通過拉或推機制來管理系統仿真運行過程中對象的所有權。RTI自動為每個對象定義一個“刪除特權”屬性,其所有者默認為對象的創建者。一個盟員若想獲得此對象的“刪除特權”,則它必須獲得該對象“刪除特權”屬性的所有權。
時間管理TM:主要提供控制各盟員在仿真時間軸上的推進,HLA提供了多種時間管理策略和時間推進策略,目的是保證RTI能在適當的時間以適當的方式和順序將來自盟員的事件轉發給相應的盟員。
數據分發管理DDM:通過提出路徑空和區域的概念,在聲明管理提供了基于對象類和對象屬性數據過濾基礎上,提供更加精細的數據過濾功能——基于對象實例屬性值的過濾,以減少不相關數據的傳輸。
整個分布式虛擬現實系統(聯盟)中的各種功能和應用(盟員)通過RTI調用提供的服務實現他們之間的互操作,同時也要求盟員提供一組回調服務,在接口規范中對這些回調服務的接口和具體功能也進行了定義。在整個分布式虛擬現實系統的體系結構中,它是執行核心,是仿真系統進行分層管理控制、實現分步交互仿真可擴性的基礎。
2.1 可擴展的虛擬現實引擎設計
在虛擬現實系統的整個循環體系中,除了處理輸入、輸出及模擬仿真邏輯計算外,還要負責模擬仿真時間的推進,盟員仿真時間的推進應該按照HLA時間管理規范推進,每種時間推進方式分別使用不同的推進算法,為方便開發人員根據需要選擇,本設計采用策略模式對HLA時間管理規范中規定的3組5種時間推進算法進行封裝處理,如圖3所示,DvsSimAdvancer提供仿真引擎選擇接口,負責為開發人員配置創建相應的仿真引擎,并調用仿真引擎接口,DvsSimDriver提供仿真引擎接口,系統在設計中通常預設定HLA的默認推進算法,也可以根據需要定義自己的推進策略算法。

圖3 仿真引擎
2.2 虛擬現實仿真模型
虛擬現實系統由仿真實體組成,三維實體模型狀態的變化形成了仿真。系統在設計中要明確出模型的表示、創建和維護。
2.2.1 仿真實體的表示
HLA的FOM文件中定義仿真對象類和仿真交互類的語義表示,開發中采用面向對象的方法,但語義表示只有開發者可以理解,編寫仿真程序的高級程序設計語言只能理解語法,為此需要構建一種機制將語法和語義結合起來。該框架機制實現了HLA中對象和交互到面向對象中對象方法的映射,當虛擬現實系統狀態發生變化時(對象屬性更新,交互動作),存貯在FOM文件中的數據相應改變,圖4為基于面向對象類的仿真實體模型表示。

圖4 基于面向對象的仿真實體組成模型
圖4中,DvsObject和DvsInteraction用來表示仿真對象類和交互類,它們共同繼承自表示仿真實體的模板類DvsEntity,因為實體是屬性的集合,屬性的值描述了實體的狀態,所以模板類DvsEntity繼承自屬性聚類DvsPropertyAggregate,它是一組屬性的集合,該屬性聚類指向DvsProperty,類DvsProperty描述了單個實體的屬性,DvsValue表示某時刻下屬性或者參數的值。HLA中的仿真實體類都擁有一個唯一的FOM實體類名和實體類句柄,因此DvsEntity中設置了靜態成員ms_ClassName和ms_ClassHandle來與之關聯,同理DvsObject中的成員m_Name和m_Handle表示了一個具體仿真對象實例的名稱和句柄。HLA中仿真對象類的屬性和仿真交互類的參數都擁有一個唯一的FOM名稱和句柄,所以DvsProperty中設置了m_Name和m_Handle與之關聯。由此實現FOM中定義的對象類和交互類及其屬性和參數,映射到面向對象中的對象類。
2.2.2 仿真實體的創建
利用抽象工廠和工廠方法實現具體仿真實體和FOM實體的關聯,使程序世界中實體狀態的改變能夠自動映射到仿真世界中相應的實體中,從而實現仿真實體創建由開發者完成,調用由框架完成。如圖5仿真實體的建立及調用機制。

圖5 仿真實體的建立及調用機制
圖5中,DvsFactory、DvsObject和DvsInteraction由分布交互仿真應用程序開發框架創建,是開發框架用來維持對象間關系的手段,其中,DvsFactory提供創建對象和交互的接口,但具體對象的創建由開發人員實現,DvsObject和DvsInteraction只是提供仿真對象和仿真交互的通用功能,并提供它們與面向對象語言中的實體關聯的方法。DvsXFactory、DvsXObject和DvsXInteraction是由抽象類派生出來的具體類,根據仿真的需要由開發者來定義,DvsXFactory提供創建具體對象的方法,DvsXObject提供具體對象屬性的實現,DvsXInteraction實現具體的仿真行為,上述3個具體類共同實現通用框架和特定應用的連接。
2.2.3 仿真實體的維護
以聯盟方式建立的仿真系統,是由各加盟的盟員共同維護的,每個盟員都保存整個仿真系統的一部分信息,主要是盟員的本地對象信息和交互行為。除此還應包含其他盟員產生的和本盟員有交互關系的遠程對象,同時采用分布式對象計算技術的“存根-代理”結構,實現對遠程對象在本地的訪問,從而實現本地對象和遠程對象在使用上保持一致。實質上就是為由其他盟員創建的遠程對象創建本地的代理對象,實現遠程對象的屬性更新能夠自動映射到代理對象,代理對象的創建方法和本地對象相同,區別就是遠程對象是只讀屬性,本地對象是讀寫屬性。僅當遠程對象某些屬性所有權轉移到本地盟員后,代理對象相應的屬性值才能變為可寫,此時本地盟員負責遠程對象相應屬性的更新。
2.3 虛擬現實仿真的事件系統通信機制
通用框架定義了應用程序各部分之間的依賴關系、功能分工和流程控制,需要開發人員加入特定應用代碼才能形成具體應用程序,因此需要一種機制,實現框架和特定應用代碼之間的通信,使得特定邏輯得以執行。大部分通信可以通過繼承框架提供的抽象類,建立框架提供的接口,實現框架在其執行流程內調用開發者創建的代碼的通信機制,但對于隨機發生的特定類型的事件而言需要一種“事件系統”類的通信機制。事件系統通信機制結構如圖6所示。

圖6 事件系統通信機制
事件系統通信機制提供了消息注冊、通知的手段,通過二元模板類DvsEvent提供注冊、注銷和通知的方法,同時提供信息傳遞的機制和方法。當系統產生信息時,只需將其作為特定類型的事件觸發即可,所有注冊此類型事件的處理器都將得到通知。此外事件系統本身具有良好的可擴展性,用戶只需要從指定的事件類型通過二元模板類派生特定類型的事件,就可以支持用戶自定義事件。
分布式交互仿真應用系統是一個復雜的系統工程,建立這樣一個復雜系統而不考慮重用是不能被設計者所容忍的。應用程序通用管理模型能較好地解決這個問題,它可以看成是一組相互合作程序,它提供應用領域所需的大部分通用功能,是整個或部分系統的可重用設計,開發者通過重用這些程序來建立某個特定領域的應用程序,從而大大縮短開發周期。本文在對各種分布式交互仿真應用程序的深入研究與分析的基礎上,給出了一個系統模型,并在此基礎上,設計了一個面向分布式交互仿真領域的應用程序框架DVS_FM,該框架不僅具備框架程序在普遍意義上的功能,還為分布式虛擬環境應用程序的模塊化裝配提供一種體系結構。