国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OSG粒子系統(tǒng)的雪景模擬

2012-11-30 03:18許金生宋萬忠
計算機工程與設計 2012年4期
關鍵詞:粒子系統(tǒng)雪景風速

許金生,宋萬忠

(1.四川大學 計算機學院,四川 成都610064;2.四川大學 視覺合成圖形圖像技術國防重點學科實驗室,四川 成都610064)

0 引 言

在虛擬現(xiàn)實仿真中,自然景物是不可或缺的場景組成內容。雪是常見的自然景觀,雪的模擬可以提高視景的真實感,所以無論從現(xiàn)實意義的角度,還是從計算機仿真的角度,在視景中創(chuàng)建和研究雪景模擬均有重要的意義。目前,粒子系統(tǒng)是模擬自然環(huán)境中運動物體非常有效的方法,Reeves于1983年首先提出粒子系統(tǒng)建模仿真的方法并被廣泛應用。OpenSceneGraph圖形系統(tǒng)[1]是一個基于工業(yè)標準OpenGL的軟件接口,封裝并提供了數(shù)量眾多的提高程序運行時性能的算法[2]。雪景模擬方面,研究者們已經做了一定量的研究工作,文獻 [3]中,對雪粒子的受力進行了分析與建模,但是對雪粒子的運動學描述進行了相應的簡化,沒有考慮到風力對雪粒子的影響,而只是使用了隨機速度來簡化影響[3];文獻 [4]中,利用與距離相關的概率函數(shù)考慮粒子的密度,只需要少量的粒子就可以模擬大量降雪的場景,但是粒子的屬性設置過于簡單,沒有設置粒子的重力、生命周期等屬性[4]。

本文基于粒子系統(tǒng)原理和OSG圖形庫,在分析粒子系統(tǒng)的一般原理基礎上,利用OSG圖形接口,提出了一種實時模擬雪景的算法。該算法分析了所采用的粒子模型的受力情況與初始屬性等,同時實時的改變每幀中風速的大小和方向,并與前一幀中的風速形成合力對雪粒子產生影響,更加符合真實情況。

1 粒子系統(tǒng)簡介

1.1 粒子系統(tǒng)的基本原理

粒子系統(tǒng)的基本思想是使用大量的、具有狀態(tài)和屬性的微小粒子來描述不規(guī)則的物體,通過對每個粒子屬性和狀態(tài)的改變進行不規(guī)則物體運動變化的仿真模擬。

粒子系統(tǒng)是一個動態(tài)的而非靜態(tài)的系統(tǒng),其動態(tài)變化過程就是眾多新粒子產生和舊粒子消亡的過程。系統(tǒng)中各個新生粒子在出生時都有各自的屬性 (如形狀、顏色、初速度等),并且這些屬性在各個粒子的生命周期中不斷的發(fā)生著變化[5-7]。粒子系統(tǒng)的動態(tài)運行過程分為以下幾個步驟[8-9]:

(1)新的粒子出生并加入到系統(tǒng)中;

(2)新出生的粒子獲得各自的初始屬性;

(3)粒子的屬性動態(tài)更新;

(4)根據(jù)粒子的實時屬性進行繪制并形成圖形;

(5)刪除死亡的舊粒子并取消顯示。

粒子系統(tǒng)的關鍵點是確定粒子的動態(tài)變化規(guī)律、粒子的初始屬性 (如形狀、顏色、初速度等)和粒子的繪制與刪除等。粒子系統(tǒng)中的這些關鍵點主要由各個具體的應用場景來確定[10-11]。

1.2 基于OSG的粒子系統(tǒng)簡介

OSG中建立粒子系統(tǒng)一般有兩種方式:一是讀取OSG預定義粒子系統(tǒng),加載具體的粒子效果至場景;另一種是建立自定義粒子系統(tǒng),創(chuàng)建特定效果至場景中。

OSG預定義的粒子效果都是從類osgParticle::ParticleEffect派生而來的。類中關系圖如圖1所示。

圖1 OSG預定義粒子系統(tǒng)類

這些類可以獨立的使用,直接加入到場景中就可以顯示相應的效果。其中ExplosionDebrisEffect是爆炸物四濺的效果模擬;ExplosionEffect是爆炸的模擬;FireEffect是關于火光的模擬;Smoke(Trail)Effect是關于煙霧的模擬。此外,OSG中添加了一個osgParticle::osgPrecipitation新類,可以使用雨效、霧效和雪效等。

OSG自定義粒子系統(tǒng)的建立分為以下步驟:

(1)確定自定義粒子系統(tǒng)的整體意圖;

(2)使用osgParticle::Particle類,通過確定單個粒子的具體屬性來建立粒子模板;

(3)使用osgParticle::ParticleSystem類,通過確定粒子總體數(shù)量、屬性等來建立粒子系統(tǒng);

(4)設置發(fā)射器,使用osgParticle::Counter、osg-Particle::Placer、osgParticle::Shooter 和 osgParticle::Emitter等類設置粒子的發(fā)射屬性,出生地的位置方向,發(fā)射器的初速度,粒子發(fā)射的數(shù)目等;

(5)設置操作,利用osgParticle::Operator等類進行旋轉度,風力等因素的設置;

(6)加入結點,更新。

關系圖如圖2所示。

2 基于OSG粒子系統(tǒng)的雪景模擬

2.1 基于OSG預定義粒子系統(tǒng)的雪景模擬

使用OSG預定義的粒子系統(tǒng)來描述雪景時,使用osg-Particle::PrecipitationEffect類的void snow (float intensity)來設置雪景的密度大小;使用void setWind(const osg::Vec3&wind)接口來設置場景中風速的方向和大小,同時可以利用接口osg::Fog*getFog()來設置場景霧效,增加場景效果。

圖2 OSG自定義粒子系統(tǒng)類

利用osgParticle::PrecipitationEffect類,還可以設置粒子的大小、顏色、粒子出生速度、最大粒子密度、粒子透明度、雨模擬、霧的顏色等等。可以在實際使用中,加載需要的效果至場景中,例如可以在場景中同時添加雪效和霧效,并設置雪效和霧效不同的顏色、密度等。

2.2 基于OSG自定義粒子系統(tǒng)的雪景模擬

2.2.1 自定義OSG粒子數(shù)學模型分析

OSG環(huán)境中,坐標軸與OpenGL中坐標軸不同。粒子系統(tǒng)中,新生粒子位于屏幕上方的圓型區(qū)域內,如圖3所示。粒子出生時賦予每個粒子不同的隨機初始參數(shù)。對于每個粒子而言,其實際意義是其每幀的位置和速度,如圖4所示。

式中:f1——粒子受到的重力,f2——粒子受到的浮力,f3——粒子受到的風力,f4——不同粒子之間的相互作用力,f5——粒子下降過程中受到的空氣摩擦力。粒子所受其合力fsum決定了雪粒子的運動軌跡[12-14]。

粒子的當前速度可以通過粒子在上一幀中的速度和粒子當前的加速度求得,可以用式 (2),(3)對粒子在當前的速度和位置表達

式中:v0——上一幀的速度,v1——當前速度,p0——上一幀的位置,p1為粒子的當前位置,dt——一幀的時間間隔。若v0的方向角為 (θ1,θ2,θ3),則式 (2), (3)可展開為標量形式

粒子的實時位置由時間間隔和粒子的實時速度決定,其標量式如下

將式 (4)代入即可求得粒子的位置變化[15]。

2.2.2 自定義OSG粒子的具體設置

使用自定義的粒子系統(tǒng)來描述雪景的時候,需要設置粒子的各種基本屬性,如粒子模板、發(fā)射器、粒子更新器等,將設置好的屬性加入到場景中,實現(xiàn)自定義效果。其中,粒子的各種基本屬性設置如下:

生命周期:void setLifeTime(double t),設置粒子生命周期,以秒為單位,若t小于0,則粒子永不消失。

粒子尺寸:void setSizeRange (const rangef &r),設置粒子的最大最小尺寸,只對多邊形形態(tài)適用。

粒子透明度:void setAlphaRange (const rangef&r),設置粒子生命周期中透明度的變化范圍。

粒子半徑:void setRadius(flota r),設置粒子半徑大小。

粒子顏 色:void setColorRange (const rangev4&r),設置粒子生命周期中顏色變化范圍。

粒子重量:void setMass(float m),設置粒子的重量,在雪景模擬中配合重力顯示雪效的下降過程。

粒子屬性:void setDefaultAttributes,設置粒子的紋理、光滑度、發(fā)光度等屬性來顯示自定義的粒子系統(tǒng),在模擬系統(tǒng)中使用自定義的紋理來顯示雪花。

發(fā)射器:設置粒子系統(tǒng)的發(fā)射器,包括粒子系統(tǒng)的osgParticle::Counter、osgParticle::Placer、osgParticle::Shooter等類。設置粒子每秒產生的數(shù)目、粒子出生點的位置、粒子出生的范圍和角度、粒子出生的初速度以及出生的朝向等。在本模擬場景中,使用SectorPlacer環(huán)形發(fā)射源和0-2*osg::PI的角度來模擬初生雪粒子,具體的初速度、粒子數(shù)目等參數(shù)來模擬雪效。

影響操作設置:設置粒子的向下引力、氣流作用等。在本模擬場景中,void setToGravity()使用默認的重力值為9.80665f來模擬地球重力,使用void setFluidToAir()來模擬空氣條件。

本文中具體的接口選擇和參數(shù)設置如表1所示。

2.3 自定義雪景模擬中風的模擬

實際的自然現(xiàn)象中,雨雪天氣常常伴隨著風的吹動。雪的下降過程不是固定的方向和速度,雪的下降經常左右擺動,由于雪的重量很輕,有時候甚至會出現(xiàn)向上擺動的情況。OSG預定義場景中只能使用接口void setWind(const osg::vec3&wind)設置風向,這樣設置的風向是固定不變的。因此需要在自定義的場景中,設置不同的風向和風速對雪粒子的下降過程產生影響。

在模擬程序的主循環(huán)中,在每一幀場景viewer.frame()前對風速進行設置。使用getOperator()得到之前設置風速的operator,同時利用隨機函數(shù)進行風速的隨機產生,將新產生的風速和通過接口getWind()得到的前楨風速進行疊加,疊加的風速通過接口setWind()添加至影響操作設置的osgParticle::Program中,這樣產生的風速是隨機風速和前幀風速的合力作用結果,符合現(xiàn)實情況,可以模擬出雪粒子下降過程中風對雪粒子的影響。

表1 自定義粒子參數(shù)

其中風速的隨機產生對雪粒子的下降影響很大,經過實驗,本模擬系統(tǒng)中利用osg::Vec3((((float)rand()/(float)RAND_MAX)-0.5)*0.5,(((float)rand ()/(float)RAND_MAX)-0.5)*0.5,(((float)rand ()/(float)RAND_MAX)-0.5)*0.2)來產生模擬的風速達到較好的效果。

3 實驗結果及其分析

本文在CPU為Intel(R)Pentium (R)4 3.00GHz,內存DDR 1GB,顯卡Intel(R)82946GExpress Chipest Family的普通PC上進行仿真模擬。圖5、6為預定義雪景和自定義雪景的場景效果圖。

圖5 預定義雪景 (intensity為0.005)

可以看出,預定義的雪景模擬中,雪花的各種屬性設置比較固定,效果相對自定義的雪景模擬不太逼真,優(yōu)點是代碼簡單,生成快速,適合對細節(jié)要求不高的環(huán)境使用。自定義粒子系統(tǒng)中,各種屬性設置參數(shù)較多,代碼復雜,但是效果逼真,情景真實,適合對細節(jié)要求嚴格的環(huán)境使用。

圖6 自定義雪景 (粒子參數(shù)見表1)

OSG環(huán)境下,設置其他不同的參數(shù)同樣會導致不同的場景效果。例如,void setMass(float m)和void setToGravity ()分別設置粒子的重力和系統(tǒng)的重力,配合使用才能實現(xiàn)合適的效果;void setNumberOfParticlePerSecondToCreate (double numPerSecond)和void setLifeTime(double t)分別設置場景中每秒產生的粒子數(shù)目和粒子的生存時間,配合設置可以決定場景中的粒子總數(shù)等。因此,可以利用OSG豐富的接口來定義不同的例子模型,滿足不同的場景需求,結果證實了該方法可以得到比較理想的效果。

4 結束語

基于粒子系統(tǒng)原理和OSG粒子系統(tǒng)的雪景仿真模擬是利用OSG粒子系統(tǒng)來進行仿真模擬的一個縮影。本文使用OSG圖形開發(fā)包進行模擬仿真,利用自定義粒子系統(tǒng),根據(jù)粒子物理運動規(guī)律,實時模擬降雪的效果,并在三維場景中實時應用,達到逼真的自然效果。三維仿真模擬是一項涉及面很廣的復雜工程,而且還有許多理論知識需要完善、許多技術難題需要解決,例如隨機函數(shù)的選擇,粒子系統(tǒng)屬性參數(shù)設定和具體實際情況相符合與否,場景的燈光、LOD等細節(jié)特效處理等,這些問題還有待深入研究。下一步的工作將根據(jù)本文中自定義的OSG粒子系統(tǒng)為總體框架,通過粒子系統(tǒng)中輸入?yún)?shù)的實時改變,開發(fā)出交互式的、實時的仿真粒子系統(tǒng),使之具有實際的現(xiàn)實應用。

[1]Martz P.Open scene graph quick start guide [M/OL].New York:Skew Matrix Software LLC http://www.lulu.com/content/1164927,2007.

[2]YANG Shixing,CAO Mingliang.Step into open scene graph [EB/OL]. [2008-12-05].http://www.vrchina.net/bbs/viewthread.php?tid=2708.

[3]YU Chunxuan,WANG Lei.Real-time simulation of rain and snow based on driving simulator [J].Computer Engineering and Design,2011,32 (1):324-327 (in Chinese). [余春暄,王雷.基于汽車駕駛模擬器的實時雨雪效果模擬 [J].計算機工程與設計,2011,32 (1):324-327.]

[4]HE Huaiqing,XUE Juntao.A new approach for simulation of snow falling and accumulating for large-scale terrain [J].Journal of Image and Graphics,2007,12 (9):1676-1681 (in Chinese).[賀懷清,薛軍濤.一種大場景環(huán)境下降雪和積雪仿真的新方法[J].中國圖象圖形學報,2007,12 (9):1676-1681.]

[5]CHEN Huajie,YU Xiaoqing.Real-time simulation of rain and snow effect based on particle system and LOD [J].Computer Simulation,2008,25 (4):491-494 (in Chinese). [陳華杰,余小清.基于粒子系統(tǒng)與LOD技術的實時雨雪效果模擬 [J].計算機仿真,2008,25 (4):491-494.]

[6]XIAO He,HE Minggeng,BAI Zhongjian.Fountain simulation based on particle system in OpenGL [J].Computer Simulation,2007,24 (12):201-204 (in Chinese). [肖何,何明耕,白忠建.OpenGL中基于粒子系統(tǒng)的噴泉模擬實現(xiàn) [J].計算機仿真,2007,24 (12):201-204.]

[7]WANG Jiwen,HU Wenping,JIN Yufeng.8-word dynamic fireworks simulation based on particle system [J].Computer Simulation,2010,27 (10):211-214 (in Chinese).[汪繼文,胡文平,金余峰.基于粒子系統(tǒng)的8字動態(tài)煙花仿真 [J].計算機仿真,2010,27 (10):211-214.]

[8]XU Liming,JIANG Yuming.Realtime simulation of rain and snow based on particle system and OpenGL [J].Computer Simulation,2005,22 (7):242-245 (in Chinese).[徐利明,姜昱明.基于粒子系統(tǒng)與OpenGL的實時雨雪模擬 [J].計算機仿真,2005,22 (7):242-245.]

[9]WANG Jiwen,LU Hejun.Water droplet splashing down simulation based on particle system [J].Science Technology and Engineering,2010,10 (6):1547-1550 (in Chinese).[汪繼文,陸和軍.基于粒子系統(tǒng)的水滴濺落模擬 [J].科學技術與工程,2010,10 (6):1547-1550.]

[10]YANG Shuhua,LIAO Shouyi,WQNG Shicheng,et al.Realtime simulation of rain and snow based on particle system and Vega software [J].Journal of Computer Applications,2008,28 (6):238-240 (in Chinese).[楊述華,廖守億,王仕成,等.基于粒子系統(tǒng)和Vega的實時雨雪模擬 [J].計算機應用,2008,28 (6):238-240.]

[11]HE Liang,BA Lideng.Dynamic simulation of snowscape based on particle system [J].Journal of Northwest University(Natural Science Edition),2010,40 (4):603-606 (in Chinese).[何亮,巴力登.基于粒子系統(tǒng)的動態(tài)雪景模擬 [J].西北大學學報 (自然科學版),2010,40 (4):603-606.]

[12]CHEN Lei,CHEN Hexin,WANG Runjie,et al.Real time snow simulation in flight simulator [J].Journal of Jilin University of Technology (Natural Science Edition),2005,35(2):164-166 (in Chinese).[陳蕾,陳賀新,王潤杰,等.在飛行模擬器中實現(xiàn)雪的實時模擬 [J].吉林大學學報 (工學版),2005,35 (2):164-166.]

[13]YANG Cun,MAO Xuan,ZHU Fuquan,et al.Dynamic simulation of chemistry experimental phenomenon based on particle system [J].Journal of Computer Applications,2010,30(1):150-152 (in Chinese).[楊春,毛軒,朱福全,等.基于粒子系統(tǒng)的化學實驗現(xiàn)象動態(tài)模擬 [J].計算機應用,2010,30 (1):150-152.]

[14]LI Sujun,WU Lingda.Real-time simulation of rain based on particle system [J].Computer Engineering,2007,33 (18):236-238(in Chinese).[李蘇軍,吳玲達.基于粒子系統(tǒng)的實時雨模擬 [J].計算機工程,2007,33 (18):236-238.]

[15] TAN Liang,LUO Yifan.Simulation of precipitation phenomenon based on particle system method [J].Computer Science,2010,37 (1):271-274 (in Chinese).[譚良,羅一帆.基于粒子系統(tǒng)方法的沉淀現(xiàn)象模擬 [J].計算機科學,2010,37 (1):271-274.]

猜你喜歡
粒子系統(tǒng)雪景風速
基于Kmeans-VMD-LSTM的短期風速預測
利用GPU加速的粒子系統(tǒng)全球流場可視化系統(tǒng)設計與實現(xiàn)
基于最優(yōu)TS評分和頻率匹配的江蘇近海風速訂正
《雪景山水圖軸》
《雪景寒林圖》
《雪景山水圖》
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
基于GARCH的短時風速預測方法
雪夜遇熊
考慮風速分布與日非平穩(wěn)性的風速數(shù)據(jù)預處理方法研究