張振偉 劉黨輝 蘇永芝 張沖
中國人民解放軍裝備學院,北京 101416
Vega Prime是美國MultiGen-Paradigm公司開發(fā)的支持面向對象技術的實時仿真渲染驅動引擎[1],它基于Vega Scene Graph(VSG,MPI公司先進的跨平臺場景圖形API,底層OpenGL),同時包括LynX Prime GUI(用戶圖形界面)工具,讓用戶既可以用圖形化的工具進行快速配置,又可以用底層場景圖形API來進行應用特定功能的創(chuàng)建。Vega Prime還設計了多種功能增強模塊,很容易滿足特殊模擬要求,更進一步提升了應用開發(fā)的效率和適用性,使其在虛擬視景仿真中得到廣泛應用。
本文結合基于Vega Prime的視景仿真系統(tǒng)開發(fā)框架和場景顯示框架,針對仿真系統(tǒng)中運動物體在場景內(nèi)實時渲染的真實感需求,研究了運動真實感的關鍵技術,包括DOF技術、動畫紋理技術和粒子系統(tǒng),并將文章研究的相關技術應用到了實踐。
利用Vega Prime開發(fā)視景仿真一般有三種模式:一是使用Vega Prime的LynX Prime圖形用戶界面配置仿真系統(tǒng),它只適用于簡單的、對交互性要求不高的小系統(tǒng);二是完全運用Vega Prime提供的API函數(shù)進行程序開發(fā),可研發(fā)出復雜的、對交互性要求高的系統(tǒng),但編程復雜;三是綜合前兩種模式進行系統(tǒng)的開發(fā),首先通過LynX Prime建立場景配置文件(ACF文件),再將文件中配置的屬性與底層API調(diào)用結合起來,這種模式將易用的工具和高級仿真功能有效地結合起來,幫助用戶高效地、準確地開發(fā)實時三維應用,是最常用的設計模式。
基于Vega Prime的視景仿真主要包括三部分:三維仿真模型建立、LynX Prime圖形界面設計和視景仿真程序設計[2]。三維仿真模型主要包括Multigen Creator建立的視景模型庫和Creator Terrain Studio生成的大場景地形模型庫;LynX Prime圖形界面設計主要包括基本環(huán)境(如仿真時間、能見度和經(jīng)緯度等)、模型初始位置、常用特效(如云、霧、雨雪、火等)和大場景應用等內(nèi)容;視景仿真程序設計完成整個仿真過程,為用戶提供實時流暢的視景仿真結果。本視景仿真設計采用上文敘述的第三種模式,程序設計的主要內(nèi)容包括實時驅動算法實現(xiàn)、實時仿真數(shù)據(jù)處理、層次細節(jié)(LOD)、物體運動和視點控制等內(nèi)容。
系統(tǒng)初始化完成之后,Vega Prime調(diào)用define( )函數(shù)加載配置的相應ACF文件,對系統(tǒng)進行初始配置,然后對系統(tǒng)和各個模塊按照仿真的需求進行配置,建立處理消息的響應函數(shù),如鍵盤輸入響應、鼠標響應、OpenGL作圖通道回調(diào)函數(shù)等,之后進入場景繪制主循環(huán)按照配置的功能進行渲染,渲染完成后退出循環(huán),結束程序[3]。場景顯示框架如圖1所示。

圖1 Vega Prime場景顯示框架
在Vega Prime的場景繪制過程中[4],每一幀都是以beginFrame( )函數(shù)開始的,應用程序服務管理模塊(vsServiceMgr)向其他服務模塊(vsService,包括vpIsectorService、vsPipeline等模塊)發(fā)送幀開始消息,各服務模塊收到消息后進行仿真時間存儲、釋放占用的線程等,繼而服務管理模塊再發(fā)送場景圖同步消息,如果某一服務是需要對場景圖進行復制的(如vsPipeline管理的CULL,DRAW服務),該服務所復制的場景圖將于主場景圖進行同步。然后服務管理器再發(fā)送非關鍵延遲處理消息,服務器就可以對基于APP主線程繪制的內(nèi)容進行并行操作了。此時執(zhí)行相應的場景繪制和顯示的操作命令;最后以endFrame( )結束該幀,結束本次服務,系統(tǒng)進入下一個幀循環(huán)。
物體的運動行為主要包括兩個方面,一是物體及物體內(nèi)部零部件運動屬性的改變,如汽車速度的變化及汽車轉彎時車輪旋轉狀態(tài)的變化等;二是運動物體與其他物體發(fā)生碰撞后外形以及狀態(tài)的改變(即碰撞響應),如汽車撞到建筑物后車身變形甚至發(fā)生爆炸。
基于Vega Prime開發(fā)的視景仿真系統(tǒng)展現(xiàn)物體的運動行為主要應用以下幾種技術:DOF、紋理動畫和粒子系統(tǒng),合稱為運動真實感仿真技術。
基于Vega Prime視景仿真場景由大量三維模型(FLT模型)組成,包括靜止實體和運動實體,如山坡、樹木、房屋等靜態(tài)模型,又如車輛、機械部件等運動模型。對靜止實體的描述只需設定它在仿真系統(tǒng)中的位姿,即位置(x,y,z)、姿態(tài)(h,p,r)和伸縮量(scaleX,scaleY, scaleZ)即可;而運動實體則較為復雜,這類模型在場景中一般包含子節(jié)點的相對運動,如運動中的車輛,其車輪相對車的質(zhì)心有一個相對運動。對于此類模型中子節(jié)點的相對運動,如果也使用Vega Prime提供的基于單個模型的運動模式(Motion Mode)或是路徑導航(Path Navigator),在程序中實現(xiàn)節(jié)點模型的運動控制是很難的。這種情況下,最好的解決辦法就是使用DOF技術。
DOF定義的是FLT模型中節(jié)點相對其父節(jié)點的相對運動。使用DOF技術首先要針對選定的DOF節(jié)點定義局部坐標系,然后設置在局部坐標系下節(jié)點內(nèi)物體的基本運動參數(shù),共有九種基本運動:沿X、Y、Z軸的位移;繞X、Y、Z軸的旋轉和沿X、Y、Z軸的縮放。理論上來說,通過這九種基本運動的組合可以實現(xiàn)任意復雜的運動形式,但一般DOF只用于設定簡單常見的物理運動,如直線勻速、繞某軸旋轉等。
Creator建立FLT模型時可以很方便的建立DOF節(jié)點(DOF Node),但基于Vega Prime開發(fā)的視景仿真系統(tǒng)無法直接對模型中的DOF節(jié)點進行渲染。所以,DOF技術應用于某個模型的子節(jié)點時,需要結合Vega Prime的API函數(shù)。首先通過vpObject::find(“object”)[4]綁定運動模型,object是在LynX Prime中加載的含有所需DOF節(jié)點的運動模型;然后利用find_named(“DOFnode”)函數(shù)對"o b j e c t"模型中的節(jié)點進行遍歷查找;一旦查找到我們需要的“DOFnode”后,即可通過setTranslate,setRotate和setScale設定DOF節(jié)點運動屬性,即九種基本運動及其組合,并利用setConstraint函數(shù)限制節(jié)點的運動范圍,從而實現(xiàn)節(jié)點的相對運動。使用流程如圖2所示。

圖2 DOF使用流程
對于運動精細度要求較高的運動模型,應用DOF技術并不能滿足虛擬仿真沉浸感的需求,如隨風飄動的紅旗、流動的河水以及車輛行駛時胎紋的變化等場景。此時,紋理動畫(Texture Animation)技術可以較好地解決這些問題。
紋理動畫技術是將復雜的物體運動用紋理代替,用一系列物體運動紋理呈現(xiàn)難以用運動模型描述的粒子或是粒子群的運動,主要有兩種實現(xiàn)方法:
一是利用建模技術,在FLT模型中將物體的運動轉化為在指定面片上播放紋理。此方法的關鍵是紋理圖片的獲取。使用時,根據(jù)動畫紋理圖片的數(shù)量復制選中的面片節(jié)點(Face Node),依次進入這些面片的屬性頁,分別把紋理按照事件發(fā)生的順序映射到面片上,如圖3所示。
二是自定義渲染策略。在需要展現(xiàn)運動細節(jié)的模型上定義渲染幾何體,并根據(jù)渲染策略完成運動效果的渲染。本文中模擬轉運卡車行駛時胎紋變化使用的就是這種方法。
此方法同樣基于對Vega Prime 幀循環(huán)的控制,需要首先通過vpObject::find(“object”)綁定運動模型,然后對模型中滿足渲染特性的節(jié)點遍歷搜索,針對搜索

圖3 紋理映射
到的每一個幾何體應用渲染策略。這樣應用于模型幾何體上的紋理根據(jù)實際運動被二次渲染,可以得到逼真的動態(tài)效果。綁定渲染策略的方法如下:
其中,cit是滿足運動特性的節(jié)點,geometry是經(jīng)搜索得到的符合要求的渲染幾何體,m_strategy是針對汽車運動模型設計的渲染策略。
通過成千上萬個不規(guī)則的、隨機分布的、每時每刻在不斷地運動和改變形態(tài)的粒子的集合,表現(xiàn)景物的整體形態(tài)和特征以及動態(tài)變化,可以模擬云、霧、雨、雪、雷電等自然現(xiàn)象和煙、火焰、爆炸等特殊場景[5]。Vega Prime以粒子系統(tǒng)為原型來模擬不規(guī)則幾何形狀的特殊形體,是一種很重要的展現(xiàn)運動真實感的技術。在仿真中實現(xiàn)粒子的特殊效果主要控制粒子以下五個方面;粒子產(chǎn)生、粒子屬性、粒子運動、粒子消亡和粒子渲染。其中,粒子運動變化多樣,也最難于控制,它用于描述粒子在其生命周期內(nèi)的變化規(guī)律,包括粒子時間特性和粒子速度特性兩部分。
粒子時間特性包括粒子大小隨時間的變化和粒子顏色隨時間的變化,它們用于控制粒子自身屬性變化。
粒子速度特性包括粒子大小隨速度的變化、粒子速度和方向、隨機風的速度與方向、球形粒子速度和隨機粒子速度。這些特性都是時間的函數(shù)[6],實際上表現(xiàn)了粒子速度與時間的關系,即粒子所受力的作用。粒子速度用于表現(xiàn)物體承受的主動力,如動力、牽引力等;風主要表現(xiàn)所受主要外力的作用,并不僅局限于風力,還可以是重力、摩擦力等;球形粒子速度表現(xiàn)粒子沿半徑方向向外擴張力或向內(nèi)收縮力;隨機粒子速度表現(xiàn)隨機外力的作用。
針對航天發(fā)射活動中可能出現(xiàn)的推進劑泄漏事故,模擬泄露產(chǎn)生煙霧,并隨風飄遠的效果。仿真煙霧行為,其基礎是研究與煙霧行為相關的因素。
第一個因素是煙霧泄露的噴射力。當煙霧以一定泄露速度進入空氣時,由于煙霧與空氣的摩擦,煙霧受到空氣的剪切力作用而產(chǎn)生旋轉變形,使得煙霧與空氣迅速混合。第二個因素是空氣浮力。煙霧粒子受到浮力作用向上運動,且溫度高的部分受浮力大,上升速度快。第三個因素是風的作用。煙霧進入空氣一段時間后,風力是煙霧粒子受到的主要作用力,當煙霧受到風的吹動時,煙霧在水平方向以接近風速的速度移動。第四個因素是溫度。溫度越高,煙霧粒子的熱運動越劇烈,煙霧顏色就越深。
航天發(fā)射任務具有高風險、高費用、不可逆等特點[7]。因此,嚴密地培訓航天發(fā)射任務組織指揮人員顯得越發(fā)重要。利用虛擬仿真技術建立仿真訓練系統(tǒng),不僅可以模擬實際發(fā)射任務的組織指揮和操作,還可以模擬典型事件進行對抗訓練,提高訓練效果。
基于Windows XP操作系統(tǒng)和VisualC++.Net2003開發(fā)環(huán)境,采用Vega Prime設計開發(fā)航天發(fā)射仿真訓練系統(tǒng),模擬航天發(fā)射場發(fā)射活動和一些典型事件及其相應的組織指揮任務,主要包括火箭箭體的轉運、吊裝、火箭發(fā)射、推進劑泄露事故、緊急關機事故和廠房起火事故等仿真場景。
模擬火箭箭體轉運。運用DOF技術,對吊車的吊桿和吊鉤分別設定局部坐標系,通過吊桿的轉動和伸縮,吊鉤的伸縮,將火箭箭體從火車車廂吊轉到卡車上(見圖5)。模擬推進器泄露事故。綜合考慮影響煙霧行為的四種因素,泄露煙霧在產(chǎn)生初期顏色較深,空氣浮力占主導地位,向上運動的趨勢更加明顯,飄散一段時間后主要受風力影響,同時運動隨機性加強,表現(xiàn)為向更遠處趨向水平飄散,仿真效果見圖5。

圖4 火箭箭體吊轉模擬

圖5 推進劑泄露煙霧模擬
隨著虛擬仿真技術的不斷發(fā)展,視景仿真系統(tǒng)對虛擬模型的視覺效果和運動真實性的要求越來越高,本文結合基于Vega Prime的視景仿真系統(tǒng)開發(fā)框架和場景顯示框架,研究了展現(xiàn)物體運動真實感的關鍵技術,包括DOF技術、動畫紋理技術和粒子系統(tǒng),這些技術對提高視景仿真系統(tǒng)物體運動真實感具有通用性和實用性,有一定的參考價值。
[1]Multigen-Paradigm lnc. Vega prime programmer’s guide (version 2.0)[M]. Dallas: Multigen Paradigm lnc, 2005
[2]褚彥均, 唐碩. 基于Vega Prime的通用視景仿真系統(tǒng)研究[J].計算機工程與設計, 2009, 30(17):4104-4107
[3]周劍勇, 王躍峰. 系統(tǒng)仿真技術及其應用學術會議論文集[C].太原:[出版者不詳],2008
[4]Multigen-Paradigm lnc. Vega Prime Reference Guide (version 2.0)[M].Dallas: Multigen Paradigm lnc, 2005
[5]翟兆建, 蔡志勇, 趙紅軍. 基于Vega Prime的滅火飛機投水特效模擬[J]. 計算機應用與軟件, 2012,4, 29(4):260-262
[6]郭齊勝, 董志明. 戰(zhàn)場環(huán)境仿真[M]. 北京: 國防工業(yè)出版社,2005
[7]劉培杰. 航天發(fā)射訓練系統(tǒng)建模技術應用研究[D]. 北京: 裝備學院, 2011