王新翔, 趙 罡, 肖文磊
(1. 北京航空航天大學(xué)大型飛機高級人才培訓(xùn)班,北京 100083;2. 北京航空航天大學(xué)機械工程及自動化學(xué)院,北京 100083)
虛擬飛行場景中事故特效的實時仿真
王新翔1, 趙罡2, 肖文磊2
(1. 北京航空航天大學(xué)大型飛機高級人才培訓(xùn)班,北京 100083;2. 北京航空航天大學(xué)機械工程及自動化學(xué)院,北京 100083)
針對飛機的虛擬飛行仿真中,飛行事故仿真的真實感不強的問題,基于粒子系統(tǒng),結(jié)合動力學(xué)模型,實時渲染了爆炸、火焰、煙霧等飛行事故常見特效。使用四邊形粒子代替?zhèn)鹘y(tǒng)點粒子,結(jié)合紋理映射技術(shù)和融合技術(shù),將真實感較強的紋理貼圖與背景的幀緩存按照預(yù)設(shè)的融合因子進行深度融合,提高了特效的真實感和實時性。通過粒子系統(tǒng)碰撞檢測的方法,模擬煙霧在飛機機艙內(nèi)擴散,與艙壁發(fā)生碰撞的效果。搭建出模擬飛行的虛擬現(xiàn)實仿真系統(tǒng),實現(xiàn)真實感和沉浸感都很強的飛機爆炸、起火和冒煙等事故場景實時仿真。
虛擬現(xiàn)實;事故特效;粒子系統(tǒng);碰撞檢測;實時仿真
在虛擬飛行仿真中,飛行事故的仿真是尤為重要的一部分,特別是在面向飛行員、機務(wù)和乘務(wù)人員的培訓(xùn)中,真實感強的事故場景仿真可以為培訓(xùn)帶來更好的沉浸感,提高培訓(xùn)的效率和效果。然而,在多數(shù)的飛行仿真中,飛行事故的真實感并不是很強,其重要的原因是事故場景中的爆炸、火焰、煙霧等特效的渲染效果不夠真實[1-2],缺少與環(huán)境真實交互的物理效果仿真[3]。因此,爆炸、火焰、煙霧等特效的仿真對于提高虛擬飛行事故場景的真實感至關(guān)重要。但這些特效具有不規(guī)則的外形和運動的隨機性,很難通過歐幾里得幾何學(xué)對其進行精確建模,因此,模糊物體的可視化仿真也一直是虛擬現(xiàn)實仿真中的一個難點[4]。目前,國內(nèi)外對于模糊物體的仿真主要有2種方法:①基于粒子系統(tǒng)的方法,這種方法由美國的 Reeves[5]提出,1983年,Reeves[5]通過粒子系統(tǒng)來模擬火焰等模糊物體。粒子系統(tǒng)方法在粒子數(shù)量不太大的狀態(tài)下實時性好,但是真實感并不是很理想,不過通過GPU支持可以在很大程度上提升仿真的實時性很真實感[6]。②基于物理模型的方法,1984年,Kajiya和 Von Herzen[7]將流體力學(xué)模型引入計算機圖形學(xué),并直接繪制了云;2002年,斯坦福大學(xué)的Nguyen等[8]用Navier-Stocks方程組求解了火焰的運動。這種方法仿真的效果真實感很強,但是由于計算量大且實時性差,很難用于實時仿真。
本文主要采用了基于粒子系統(tǒng)的方法,引入粒子運動的動力學(xué)模型,并結(jié)合紋理映射和背景融合技術(shù),仿真出真實感強和實時性都比較好的爆炸、火焰和煙霧特效。并采用粒子與環(huán)境障礙物碰撞檢測的方法,實時模擬煙霧擴散和與環(huán)境交互的過程。利用OpenSceneGraph[9]作為圖形渲染引擎,實現(xiàn)了真實感較強的飛機虛擬飛行中發(fā)動機爆炸、機艙起火和煙霧蔓延等事故場景仿真。
1.1 粒子系統(tǒng)原理
(1) 粒子系統(tǒng)屬性。粒子系統(tǒng)的基本思想就是眾多聚集在一起的帶有各自屬性的粒子,通過粒子屬性隨時間的變化來模擬不規(guī)則的模糊物體。通常粒子系統(tǒng)包括以下屬性:
外觀屬性:如顏色、形狀、大小和透明度等;
運動學(xué)屬性:如速度、加速度和位置等;
其他屬性:如生命周期。
(2) 粒子系統(tǒng)實現(xiàn)過程。粒子系統(tǒng)的活動主要經(jīng)歷3個階段:即產(chǎn)生、活動和消亡,粒子在這3個階段具體經(jīng)歷的過程有:①初始化粒子系統(tǒng);②粒子運動的動力學(xué)計算;③粒子屬性更新;④生成新的粒子,刪除已經(jīng)“死亡”的粒子;⑤繪制更新后的粒子。其中,過程②~⑤的循環(huán)就形成了粒子。
系統(tǒng)模擬物體的動態(tài)變化。所有的粒子都是由粒子系統(tǒng)發(fā)射器進行發(fā)射,發(fā)射器發(fā)射的粒子均帶有初始的屬性。
1.2粒子系統(tǒng)的動力學(xué)分析
在流體特效仿真中,通常假設(shè)爆炸、火焰、煙霧等特效為不可壓縮的無粘性流體[10]。分析其粒子的動力學(xué)模型,只需考慮作用在粒子上的重力、風(fēng)力和熱浮力。
首先,粒子受到的重力為:
其中,m為單個粒子的質(zhì)量,g為重力加速度。
其次,粒子在空氣中可能受到風(fēng)力作用,風(fēng)力為Fw,根據(jù)風(fēng)速風(fēng)壓公式[11]可以得到每個粒子受到的風(fēng)力為:
其中,p為空氣壓強,v為風(fēng)的速度,s為風(fēng)力對粒子的作用面積。
同時,由于爆炸、起火冒煙等會導(dǎo)致空氣的熱運動加劇,從而使粒子受到熱浮力的作用[12],熱浮力為:
其中,ρ為空氣的密度,g為重力加速度,vp為粒子的體積。
因此,粒子運動過程中所受到的合力為:
根據(jù)牛頓第二定律,粒子運動的加速度:
因此,粒子在任意時刻運動的速度可表示為:
其中,V0為粒子發(fā)射時的初速度。
同樣的,粒子在任意時刻的位置可表示為:
其中,p0為粒子發(fā)射時的初始位置。
1.3建立特效的粒子系統(tǒng)
(1) 火焰的粒子系統(tǒng)模型?;鹧嫒紵男螒B(tài)模糊復(fù)雜,因此,單一的粒子系統(tǒng)難以仿真出真實的火焰效果。為了提高火焰燃燒的真實性,采用多粒子系統(tǒng)來表示火焰模型,即由多個火焰發(fā)射器發(fā)射火焰粒子。假設(shè)火焰的燃燒位置為:P0=(px, py, pz),燃燒半徑為r,為火焰設(shè)置5個粒子發(fā)射器,其位置可由以下公式進行計算:
其中,rand( )為-1.0~1.0的隨機數(shù), P3~P5與P2同理,選擇發(fā)射器的形狀為球形,就可在火焰燃燒位置附近形成多個粒子發(fā)射系統(tǒng)。根據(jù)式(5)對火焰粒子的運動進行分析?;鹧娴膬?nèi)焰,溫度相對較高,因此所受的熱浮力相對較大,初速度也相對較大,位于中心的發(fā)射器發(fā)射粒子的數(shù)量和生命值最大,位于邊緣的相對較小,位于中心的發(fā)射器發(fā)射粒子的生命周期大于位于邊緣的粒子。任意時刻粒子的速度和位置可由式(6)、(7)計算得到。
(2) 煙霧的粒子系統(tǒng)模型。火焰燃燒會伴隨著大量煙霧產(chǎn)生,煙霧的效果與火焰類似,但是煙霧在粒子運動速度上相對火焰較慢,而且煙霧生成的位置是在相對燃燒點偏高的位置。因此設(shè)定煙霧粒子發(fā)射器的位置:
選擇煙霧發(fā)射器的形狀為球形,其半徑為 r。根據(jù)式(5)對煙霧粒子進行運動分析,類似于火焰,煙霧粒子同樣是內(nèi)部溫度較高,受到的熱浮力較大,受到的加速度大,上升速度快,邊緣的粒子受到的熱浮力較小,上升速度慢。同時,由于溫度差異,煙霧的內(nèi)部會產(chǎn)生剪切的作用而發(fā)生擴散的效果。同樣,煙霧粒子每一時刻的速度和位置可以由式(6)、(7)計算得到。
(3) 爆炸的粒子系統(tǒng)模型。爆炸是可燃物在極短時間內(nèi)劇烈燃燒,產(chǎn)生大量的火焰、煙霧和灰燼的過程。
因此,在本文研究中,將爆炸的粒子系統(tǒng)模型分為4層,分別為:爆炸核、燃燒層、煙霧層和灰燼層,各層的相對位置如圖1所示。
圖1 爆炸的粒子系統(tǒng)模型
爆炸核為爆炸的中心,并沒有具體的發(fā)射器。燃燒層主要以劇烈燃燒的火焰特效為主,煙霧層是燃燒后產(chǎn)生的煙霧特效,在火焰層的外圍,灰燼層并不是在爆炸的最外層,而是由爆炸核的中心向四周迅速擴散的灰燼粒子組成。因此,需要分別對燃燒層、煙霧層和灰燼層建立相應(yīng)的粒子系統(tǒng)模型。各層粒子的發(fā)射器都是由爆炸核作為發(fā)射器中心,因此,各個發(fā)射器的中心均為:
燃燒層作為最內(nèi)部的一層,其發(fā)射器半徑設(shè)為rE(rE為爆炸核的半徑),煙霧層的半徑設(shè)為1.5 rE,灰燼層模擬的是粒子向外噴射的效果,其半徑設(shè)為rE,均選擇為球形發(fā)射器。
在對爆炸特效進行動力學(xué)分析時,其所受的重力和風(fēng)力方向是固定不變的。爆炸的粒子是以一點為圓心向四面八方進行發(fā)射,因此,每個粒子受到的熱浮力方向均為其初速度的方向,依然可由式(6)、(7)計算出每一幀粒子的速度和位置。
2.1紋理映射技術(shù)
紋理映射技術(shù)的應(yīng)用對提高特效的真實感有著重要的作用。本文研究中使用四邊形的粒子代替?zhèn)鹘y(tǒng)的點粒子,對四邊形粒子映射真實的特效紋理圖片,既可以大大地提升特效的真實感,又可以減少粒子的數(shù)量,從而提高仿真的實時性。
以火焰特效的紋理為例,如圖2所示。為了提高真實感,每種特效提供了4種紋理,對所有粒子系統(tǒng)的粒子隨機映射這4種紋理中的1種,紋理一般為2n2n×像素的圖片。
圖2 火焰特效的紋理貼圖
2.2紋理融合
如果只為特效粒子進行紋理映射還無法滿足渲染的真實感效果,就需要將紋理與粒子的顏色、背景顏色進行透明度融合,這樣才能將帶有紋理的粒子與背景自然融合,如圖3所示。
圖3 紋理融合示意圖
本文采用的融合算法如下:
(1) 紋理中的黑色區(qū)域與背景顏色進行融合,融合因子為1α,融合后的顏色為:
(2) 紋理中的白色區(qū)域與粒子顏色進行融合,融合因子為2α,融合后的顏色為:
其中,α1和α2的取值范圍為0~1,根據(jù)融合效果對α1和α2的值進行調(diào)整,本文研究中,α1=0.9和α2=0.8時,具有較好的效果。
在火焰燃燒、煙霧擴散等過程中,都會與周圍環(huán)境中的物體發(fā)生“碰撞”。如不考慮碰撞現(xiàn)象,火焰、煙霧就會“穿透”物體,無法仿真真實的煙霧擴散的物理效果。因此,對特效的粒子進行碰撞檢測,實現(xiàn)火焰、煙霧與周圍環(huán)境的交互,這是實現(xiàn)特效真實感尤為重要的部分。
3.1碰撞檢測算法
本文的碰撞檢測算法只考慮粒子與環(huán)境之間的碰撞,并未考慮粒子之間的碰撞。設(shè)四邊形粒子的邊長為a,因此在進行碰撞檢測時獲取的粒子的位置坐標為四邊形的幾何中心坐標,在計算粒子與障礙物是否接觸時,判斷粒子中心與障礙物的距離,則發(fā)生碰撞,碰撞過程如圖4所示。粒子以速度V在點P處發(fā)生碰撞,根據(jù)反射定律,可得:
由于碰撞過程為非完全彈性碰撞,且有一定的能量損失,因此系數(shù)k的取值范圍為0~1。
圖4 粒子與障礙物碰撞示意圖
粒子系統(tǒng)碰撞檢測的流程如圖5所示。
圖5 粒子系統(tǒng)碰撞檢測流程圖
3.2煙霧擴散的實現(xiàn)
飛機機艙內(nèi)起火后煙霧在機艙內(nèi)擴散的現(xiàn)象,只有考慮火焰、煙霧與機艙壁的碰撞檢測,才能保證煙霧不會穿過機艙,仿真出真實的煙霧在機艙內(nèi)擴散的效果。
可設(shè)定煙霧碰撞檢測的幾何對象為飛機機艙內(nèi)壁、艙門和行李架的外壁,由于座椅數(shù)量眾多,考慮到碰撞檢測的計算量對仿真實時性的影響,因此,無需將座椅作為碰撞檢測的對象。由于現(xiàn)實中的煙霧具有粘性,碰撞過程中,所發(fā)生的碰撞類型為非完全彈性碰撞,且伴隨有能量的損失。能量損失系數(shù)根據(jù)仿真測試,當(dāng)式(15)中的 k=0.8時,碰撞的效果最為真實。
采用這種方法可以實時的模擬煙霧在機艙內(nèi)擴散,與基于物理模型的方法不同,其需要預(yù)先設(shè)定好煙霧粒子的運動軌跡,這種基于粒子碰撞檢測的方法實現(xiàn)煙霧擴散是一種實時的物理效果。
仿真的硬件平臺為PC (Intel Core2 Quad CPU Q9500@2.83 GHz;4 GB RAM;ATI Radeon4350 512 MB),軟件環(huán)境包括OpenSceneGraph三維圖形渲染引擎、SPARK粒子系統(tǒng)庫、Visual Studio 2010等。
如圖 6、7所示,用本文方法渲染出的火焰、煙霧和爆炸效果的動態(tài)生成過程,可看出幾種特效都具有比較真實的渲染效果。
圖6 火焰、煙霧動態(tài)渲染效果
圖7 爆炸過程動態(tài)渲染效果
如圖8(a)所示,未使用紋理映射的火焰、煙霧效果。如圖8(b)所示,只設(shè)定煙霧、火焰粒子發(fā)射初速度,沒有對粒子的運動進行動力學(xué)驅(qū)動,粒子一直保持初速度運動。通過與圖6中效果進行比較,可以明顯看出紋理映射和動力學(xué)建模對特效性能的提升效果。
圖8 火焰、煙霧的簡單特效
如圖 9所示,為 OpenSceneGraph提供的osgParticle粒子系統(tǒng)模擬的火焰、煙霧和爆炸效果,通過對圖 6、7中效果進行對比可看出,本文所研究的特效效果真實感更強。
圖9 OpenSceneGraph的粒子系統(tǒng)特效
在虛擬飛行仿真中,將特效用于飛行事故場景仿真,模擬飛機發(fā)動機爆炸如圖 10所示,機艙起火、冒煙,以及基于碰撞檢測方法仿真煙霧在機艙內(nèi)擴散蔓延等效果如圖 11所示,提高了飛機事故場景的真實感。
圖10 發(fā)動機爆炸起火的事故仿真
圖11 煙霧在機艙內(nèi)擴散的事故仿真
特效的實時性效果主要通過粒子數(shù)量和渲染幀速率體現(xiàn)。因此,為了測試本文特效的實時性,向場景中加入不同數(shù)量的特效效果,通過獲取場景中存在粒子的個數(shù)和場景實時渲染的幀速率對特效的實時性進行分析。以火焰和煙霧特效為例,具體渲染幀速率見表1。
表1 不同粒子數(shù)下實時渲染幀速率對比
根據(jù)表1分析可知,在場景中加入20個火焰煙霧特效后,渲染幀率才有明顯的下降。由于人眼的分辨能力上限為30 fps,所以在加入35個火焰、煙霧效果以下都可以保證場景良好的實時性。因此,采用本文方法渲染的特效實時性效果比較理想。
本文采用的方法與OpenSceneGraph集成的粒子系統(tǒng)osgParticle渲染進行對比,特效的粒子數(shù)目情況見表2。
表2 特效的粒子數(shù)目對比
根據(jù)表2數(shù)據(jù)可知,本文采用的方法在實現(xiàn)特效效果的粒子數(shù)量上相對較少,因此,運行效率相對較高。
在圖 11中,火焰、煙霧粒子與飛機機艙發(fā)生碰撞檢測的事故場景仿真中,實時渲染幀率也可以達到49.57 fps,同樣具有良好的實時性。
本文所研究的火焰、煙霧、爆炸等特效由于引入了粒子動力學(xué)驅(qū)動、碰撞檢測等物理模型,使得特效效果在物理屬性上更為真實,與一般的特效仿真相比,更為接近現(xiàn)實中真實的效果。同時,恰當(dāng)?shù)募y理貼圖的應(yīng)用使得仿真粒子數(shù)量大幅度減少,提高了特效渲染效率,且增強了視覺的真實感。在特效的進一步研究中,應(yīng)更多地考慮到特效的物理性質(zhì),為粒子系統(tǒng)的運動和碰撞檢測建立更為細致的動力學(xué)模型,從而實現(xiàn)更為逼真的效果。
同時,將特效應(yīng)用于虛擬飛行仿真系統(tǒng)中的事故場景,場景具有很強的真實感和良好的實時性,可大大提高虛擬飛行仿真的沉浸感。作為虛擬培訓(xùn)系統(tǒng),可以為飛行員、機務(wù)和乘務(wù)人員提供很好的培訓(xùn)效果。
[1] Zhang L, Jiang H Z, Li H R. PC based high quality and low cost flight simulator [C]//Automation and Logistics, 2007 IEEE International Conference on. New York: IEEE Press, 2007.
[2] 梁偉, 劉群, 吳渝. 飛機尾翼空中失火的場景模擬[J]. 計算機工程與應(yīng)用, 2010, 46(9): 163-165.
[3] Zhuo N W, Rao Y B. Real time dense smoke simulation based particle system [C]//Intelligent Information Technology Application Workshops. New York: IEEE Press, 2008: 809-813.
[4] 張茂軍. 虛擬現(xiàn)實系統(tǒng)[M]. 北京: 科學(xué)出版社, 2001: 2.
[5] Reeves W T. Particle systems-a technique for modeling a class of fuzzy objects [J]. ACM Transactions on Graphics, 1983, 2(2): 359-376.
[6] 陳顯軍, 李心穎, 湛永松. GPU支持下基于粒子系統(tǒng)編輯器的特效技術(shù)研究[J]. 圖學(xué)學(xué)報, 2011, 32(6): 77-81.
[7] Kajiya J T, Von Herzen B P. Ray tracing volume densities [J]. ACM Siggraph Computer Graphics, 1984, 18(5): 165-174.
[8] Nguyen D Q, Fedkiw R, Jensen H W. Physically based modeling and animation of fire [J]. ACM Transactions on Graphics, 2002, 21(3): 721-728.
[9] 肖鵬, 劉更代, 徐明亮. OpenSceneGraph三維渲染引擎編程指南[M]. 北京: 清華大學(xué)出版社, 2010: 2-3.
[10] 孟強龍. 煙霧的物理模型及其模擬[D]. 合肥: 安徽大學(xué), 2010.
[11] 楊宇科. 一種風(fēng)場作用下粒子系統(tǒng)火焰的動態(tài)模擬[J].計算機應(yīng)用與軟件, 2013, 30(1): 132-135.
[12] 柳有權(quán), 王文成, 吳恩華. 快速真實地生成樹的自然搖曳[J]. 計算機學(xué)報, 2005, 28(7): 1185-1191.
Real-Time Simulation of Accident Effects in Virtual Flight Scene
Wang Xinxiang1,Zhao Gang2,Xiao Wenlei2
(1. Large Aircraft Advanced Training Center, Beihang University, Beijing 100083, China; 2. School of Mechanical Engineering and Automation, Beihang University, Beijing 100083, China)
In order to enhance the sense of reality in accident scenes of flight simulation, a method based on particle system and combined with dynamical model is adopted for rendering special effects, including fire, smoke, explosion, and so on. The traditional point particles are replaced by the quadrilateral ones. The texture mapping method is presented for the particle system. Each quadrilateral particle is mapped with the texture of real effect, and the textures are blended with the background according to a given alpha value. As a result, the special effects have an improved sense of reality and a good real-time performance. The method of particles’ collision detection is applied to simulate the smoke spreading and collision with the aircraft’s cabin. Finally, a virtual system of flight accident simulation is implemented, which is able to simulate the fire and smoke phenomenon happened inside the cabin and the explosion happened on the engine with a strong sense of reality.
virtual reality; accident effect; particle system; collision detection; real-time simulation
TP 391
10.11996/JG.j.2095-302X.2016020243
A
2095-302X(2016)02-0243-06
2015-07-08;定稿日期:2015-10-23
王新翔(1989–),男,河北承德人,碩士研究生。主要研究方向為虛擬現(xiàn)實技術(shù)。E-mail:flywinning@sina.com
肖文磊(1984–),男,江西井岡山人,講師,博士。主要研究方向為虛擬現(xiàn)實技術(shù)、數(shù)控系統(tǒng)。E-mail:xiaowenlei@buaa.edu.cn