宋佳音,張新家,萬 苗
(西北工業大學 自動化學院,陜西 西安 710129)
作為現代仿真技術的一個重要分支,視景仿真技術是虛擬現實技術、分布式交互仿真技術研究的主要內容之一。視景仿真是一種基于可計算信息的沉浸式交互環境,具體而言,它利用計算機圖形學技術,根據仿真的目的,通過一定的技術手段構造仿真對象的三維模型,并組織成虛擬的仿真場景。利用必要的設備讓用戶以一種自然的方式與仿真場景中的三維對象進行交互作用,從而使用戶產生“沉浸”于真實環境的感受與體驗。視景仿真是計算機技術,圖形圖象技術,信息合成技術,光學技術,及控制技術等多種高新技術的綜合運用。周期短,質量高,節省經費的特點使其被廣泛的應用于虛擬現實模擬培訓、工業設計、戰場推演、城市規劃仿真、交互式娛樂仿真等等。
目前國內的視景仿真系統所面臨的主要問題是多數系統都是針對特定的領域需求來實現的,沒有一個通用性強,擴展性好的平臺來實現大多數的視景仿真系統的開發。當有新的開發需求時,開發人員要對以前程序的數據結構及接口進行相應的修改來滿足新的領域需求,而且這個過程要求開發人員需要具備一定的專業領域知識,項目開發周期較長[1]。
針對這樣的問題,本文基于分層的過程建模的思想,在三個層次對通用的視景仿真系統體系結構進行了研究,并且對每層的關鍵技術模塊進行了詳細描述。
作為一個通用的虛擬視景仿真平臺,應該具備較強的通用性與良好的擴展性。通過一定的仿真建模將用戶所添加的各種實體圖形資源組合在一起,從而形成整個視景仿真過程。為了滿足這樣的特性,平臺的架構應具有以下特點:
1)支持面向視景實體編程的場景配置與生成
用戶通過可視化界面設置環境場景,為用戶屏蔽底層圖形開發細節,有利于提高開發效率。同時也將場景內各種資源的內部關系直觀的展現給用戶。而且對場景中實體的直接操作也提高了系統的可操作性。
2)良好的場景組織和管理方法
場景的組織和管理是虛擬視景仿真系統的重要組成部分。場景組織管理主要負責存儲和管理場景中各個物體的數據及物體之間的位置和邏輯關系。有效的場景管理有助于提高系統的實時性。
3)組件化架構支持
隨著需求的不斷提升,開發過程的不斷深化,資源實體及系統的功能也可能不斷豐富[2]。平臺應當針對不同實體對象及業務邏輯進行抽象,封裝為不同的實體對象及功能對象。充分應用面向對象的特征,讓用戶按照需求以可視化的方式靈活的進行重構。這不僅增加了系統的擴展性也保持了系統可靠性。
基于分層的過程建模思想,依照系統的功能需求。系統依用戶交互層,管理層,數據層三層而設計[3]。如圖1所示。

圖1 系統總體框圖Fig.1 Structure diagram of System
數據層接收管理層的請求,提供數據讀取與保存的操作,為數據的訪問提供統一的接口,供管理層調用。視景仿真的場景渲染過程實際上就是對三維模型仿真數據庫的動態調用與實時渲染。為了保證虛擬場景便于修改、便于重用和通用,需要規范一種描述的格式。本文仿真的場景和場景中的對象模型、以及過程模型均采用XML描述,最終將XML保存到仿真數據庫中。
XML (eXfensible Markup Language,可擴展標記語言)是制定的用于描述數據文檔中數據的組織和安排結構的語言。它定義了利用簡單、易懂的標簽對數據進行標記所采用的一般語法,提供了計算機文檔的一種標準格式。XML文檔不但結構清晰,而且完全以文本方式存儲,所以通過任何一種編輯工具都可以對其進行查看和修改,用戶編輯非常方便[4]。
例如,我們可以將一個場景描述成如下文件:
同時為了便于系統三維模型的擴展與管理,數據庫的結構設計如表1,表2。表中記錄了三維模型的ID及文件索引,各種特效的索引以及相關的參數。用戶可以通過編輯修改它們的值,或者使用不同的三維模型與各種特效的組合來滿足其對仿真場景構建的需要。這也增強了系統的通用性及擴展性。表格2中特效以粒子發射器的類型來加以區別。而表格1中的模型類型以基本與復合加以區別。

表2 特效表Tab.2 The special effects table
管理層是整個視景仿真系統的核心層次,其實質是處理用戶輸入的各種信息及對用戶的交互操作及任務指派做出反應,并將仿真數據實時的輸出到仿真視口中[5]。該層主要負責管理視景仿真系統的內部三維對象模型、場景過程模型、關系模型、及事件的觸發等。
1.4.1 對象建模
三維對象建模是開發視景仿真系統的一個難點,圖形是視景仿真系統的主要資源。對象建模本質上是對圖形資源的一種描述與組織方式。對于大多數的仿真系統三維模型的創建需要借助于專用的建模系統軟件的支持 (如3D Max等)。而為了保證系統的通用性及擴展性本系統既提供了建模軟件包的子程序接口,以解析外部通用模型文件(如*.3DS等)轉換成系統識別類型,并轉存到內存渲染。也提出了自己的建模功能模塊。集建模功能和圖形功能于一體。建模模塊如圖2。

圖2 建模模塊Fig.2 The modeling module
系統利用面向對象三維模型的概念[6],對三維對象建模模塊的設計圖如圖3所示。
視景系統的三維模型圖形資源分為兩類:

圖3 三維對象設計圖Fig.3 3D object design
1)基本對象,模型的基本元素可以使用適合于構造這種模型的簡單幾何形狀進行定義。而這些簡單的幾何實體,就是針對某個領域模型的基本對象。
2)復合對象,由上述的基本對象組合而成。當然復合對象的組合又可以形成更高層次的復合對象。
對于一個三維模型我們使用分層的方法來構造,我們可以嵌套對象,包括基本對象與復合對象來構造層次模型,其中復合對象又是由基本對象和其他復合對象組成,直到得到我們所需要的模型。需要指出的是因為每個對象嵌套在上層對象中,在嵌套結構中必須指定它們的建模變換參數。同時,將幾何屬性與非幾何屬性的分類建模實現了功能數據和幾何數據的相分離。這樣用戶不僅能構根據分層的結構靈活的構建出需求模型,還能根據需求有選擇的配置模型屬性。這樣的組件式的設計增加了系統的靈活性,便于擴展和維護。
1.4.2 場景的過程管理
場景是基于圖形的應用系統中圖形的集合,場景的組織和管理是虛擬視景仿真系統的重要組成部分[7]。因為它直接關系到視景仿真系統的實時性。由于場景中的圖形都要經過圖形管線的視景體剪裁,進行可見性判定。所以如果不對場景中的圖形資源進行特別的組織以減小計算量,而讓所有的圖形都進行判定,渲染的效率將是非常低下的。場景組織管理主要負責存儲和管理場景中各個圖形資源的數據及模型之間的位置和關系[8]。本文主要采用基于過程模型的層次化場景樹對三維場景進行組織。
如同對象模型的組織一樣,整個仿真場景以層次化的結構來組織,樹這種數據結構正是描述這種層次化結構的一種方法,而過程就是樹上的一個節點。這個節點所包含的資源空間也可以劃分為一定的子過程節點。場景結構如圖4所示。

圖4 場景結構圖Fig.4 The scene structure graph
過程可以定義為一個由三維對象數據,關系數據,及動作集組成的集合。它可以用如表3所示的三元組來表示。
過程模型就是對于場景中圖形資源的一種自定義的分組,用戶可以根據需求來定義過程節點上的圖形資源及其屬性來組織場景中的圖形資源。過程節點包含了場景的各種對象資源,如三維模型,天空,地形,光源等[9]以及對象之間的關系模型。其類結構圖如圖5所示。

表3 過程模型Tab.3 process model

圖5 過程節點類圖Fig.5 The class diagram of process node
Process類是場景中節點的抽象,管理了場景中一定的資源。它包含了一組資源及通用的操作接口。我們通過抽象出可以按照需求靈活配置的屬性類為用戶提供可以自定義的過程節點。這種組件化的方法極大的提高了系統的可維護性及擴展性。主要的抽象類包括三類:
1)三維對象模型數據類,如ObjectGroup類是一組圖形資源,它同時也包含了跟模型操作相關的類以方便用戶的配置。ObjectN類是具體的圖形對象。MotionModel類是場景中物體的運動模型,它匯總了物體的運動方式。我們可以通過派生新類來添加不同的運動模型。Shape類表示了三維模型的幾何屬性,由此類可以派生出不的幾何屬性。Sound類是特效聲音用來增強系統的真實感。Command類是對模型功能的封裝,該類描述了對相應事件的響應方式。這是一種基于事件的可擴展接口。通過定義事件與命令的映射關系來實現模型功能的配置。
2)關系數據類,如Relation類表示了三維模型之間的關系,是三維模型關系的抽象。其中包含了RTime時間上的關系,與RPosition空間上的關系等。同樣,關系模型也是可以隨著系統的擴展而進行相應的擴展以豐富關系的類型。
3)操作動作類,如Operation類包含了過程中模型的變換操作,如將模型進行平移、旋轉、縮放等。
系統的場景是基于上述各類所組成的場景過程結點來構建的。
用戶交互層是人機交互的接口。該層包含了從輸入輸出設備接收用戶輸入的接口,工程管理的功能菜單,各種工具欄,輸出場景模型的可視化仿真窗口及操作信息窗口等。因此,該層的結構應如圖6設計。

圖6 用戶交互層類設計Fig.6 The user interaction layer class design
為了提供豐富的圖形界面與顯示效果,仿真窗口的輸出應是多視口顯示的。以上類的設計正是為了實現這一功能的。ProcessView類是過程視圖的抽象,它包含了InputCommand類與Channel類,并且繪制和更新由管理層所組織生成的模型。作為人機交互的接口,InputCommand類處理各種用戶的輸入信息及所產生的事件。首先,要明確輸入設備的類型,InputType類作為一個可擴展接口,允許各種類型的輸入設備。其次,對于該類設備所產生的事件通過MapOfCmd類來進行映射,傳送到管理層通過模型的Command對象進行響應。因為是多視口的顯示,對于每一個ProcessView都包含一個Channel類來管理其指向的仿真輸出視口。
系統使用Microsoft Visual Studio 2010開發,為了增強開發的靈活性渲染部分直接選用OpenGL圖形庫。OpenGL作為一個性能優越的圖形應用程序設計接口,應用于廣泛的計算機環境[10]。下面利用一個虛擬戰場仿真場景中,地空導彈對空中目標進行攔截的例子來對系統的組織過程進行描述。
該仿真場景中攔截是一個完整的動態過程表達,我們可以將其定義為一個過程,它包含了飛機,導彈,天空,地形等對象以及基于粒子系統的導彈尾焰。其中導彈與飛機存在著空間上的指向關系。其主要的工作過程為:
1)系統的初始化,配置相關的環境參數。
2)進行過程模型的定義將通過相關的接口從數據層的仿真模型數據庫,特效庫中讀取仿真過程所要包含的三維模型對象(飛機,導彈,尾焰等)。
3)對生成的對象模型進行關系描述及配置相關的屬性及運動模型。
4)進行仿真更新表示層的顯示內容,并生成相應的場景配置文件實時的存入數據層進行場景的保存。
系統利用面向對象的技術將視景資源進行了一定的封裝,實現了組件式的開發,可以對各種模型進行靈活的配置。系統具有一定的通用性與擴展性。系統的運行效果圖如圖7。

圖7 運行效果圖Fig.7 Running effect diagram
隨著計算機圖形學的不斷發展,對視視景仿真系統的通用性和擴展性都會有更高的要求。設計一種擴展性強,通用性好的視景仿真系統框架對于進一步研究視景仿真系統具有重要的意義。針對這樣的要求,本文運用分層的過程模型管理思想,從三個層次上利用面向對象的技術對視景仿真系統的資源及關鍵模塊進行了研究。通過這種組件式的設計,實現了視景資源的按需配置。使系統具有了一定的通用性和靈活性。為視景仿真系統的進一步研究提供了參考。
[1]吳家鑄,黨崗,劉華峰,等.視景仿真技術及應用[M].西安:西安電子科技大學出版社,2001
[2]林奕,閆杰,鐘都都,等.一種新的視景仿真軟件體系結構[J].西北工業大學學報,2008,26(2):184-187.LIN Yi,YAN Jie,ZHONG Du-du,et al.A novel software architecture for visualization simulation[J].Journal of Northwestern Polytechnical University,2008,26(2):184-187.
[3]II Carson,S John.Introduction to modeling and simulation[C]//Winter Simulation Conference,Proceedings of the 36th conference on Winter Simulation,2004:9-16.
[4]劉瑞恒,張新家,張婷婷.基于設計模式的圖形組態系統研究與設計[J].微處理機,2011,32(1):67-70.LIU Rui-heng,ZHANG Xin-jia,ZHANG Ting-ting.Research and design of graphic component system based on design patterns[J].Microprocessors,2011,32(1):67-70.
[5]Capilla R,Martinez M.Software architectures for designing virtual reality applications [M]//Software Architecture,Springer Berlin Heidelberg,2004:135-147.
[6]SHI Wen-zhong,YANG Bi-sheng,LI Qing-quan.An Object-Oriented data modelfor complex objects in threedimensional Geographic Information Systems[J].International Journal of Geographical Information Science,2003,17 (5):411-430.
[7]劉瑞恒,張婷婷,李現濤.基于opengl的虛擬視景仿真系統研究與實現[J].微處理機,2011,32(4):89-92.LIU Rui-heng,ZHANG Ting-ting,LI Xian-tao.Study and implementation of universal visual simulation system based on OpenGL.Microprocessors,2011,32(4):89-92.
[8]劉瑞恒.虛擬視景仿真系統設計與研究[D].西安:西北工業大學,2006.
[9]呂希奎,周小平,等.實戰OpenGL三維可視化系統開發與源碼詳解[M].北京:電子工業出版社,2009.
[10]張大強,翟素蘭,程家興.OpenGL在視頻游戲中的應用[J].計算機技術與發展,2006,16(2):73-75.ZHANG Da-qiang,ZHAI Su-lan,CHENG Jia-xing.Game programming with OpenGL[J].Computer Technology And Development,2006,16(2):73-75.