999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于粒子系統(tǒng)的三維降雪場景仿真

2017-02-22 07:06:53汪繼文
計算機技術與發(fā)展 2017年1期

周 強,汪繼文

(安徽大學 計算機科學與技術學院,安徽 合肥 230039)

基于粒子系統(tǒng)的三維降雪場景仿真

周 強,汪繼文

(安徽大學 計算機科學與技術學院,安徽 合肥 230039)

通過研究粒子系統(tǒng)方法,結合面向對象的C++語言,建立粒子系統(tǒng)的過程模型,分析實際降雪物理運動過程,建立雪粒子系統(tǒng)三維模型,簡化雪花下降過程中的運動模型,省去對速度的實時每幀控制。通過控制雪粒子位移來模擬受風力影響的實際宏觀降雪雪景,同時通過參數(shù)控制實現(xiàn)風力強弱的影響效果和大雪小雪的景觀控制,并在笛卡爾三維坐標系的z軸上引入指數(shù)函數(shù)F=ex作為控制因子,使雪粒子滿足近大遠小的透視投影視點效果,具有三維景觀效果,并結合OpenGL圖形接口對降雪場景進行渲染。實驗結果表明,該方法具有逼真的三維仿真效果且代碼具有良好的可擴展性。

粒子系統(tǒng);雪景模擬;OpenGL;紋理映射

1 概 述

隨著現(xiàn)代社會的發(fā)展,人們對虛擬現(xiàn)實的需求越來越大,在計算機游戲、動畫以及影視廣告中都有著廣泛的應用需求。而自然景物諸如海浪、云、煙、火焰、雨、雪的虛擬模擬,因其運動的不規(guī)則性和動態(tài)性,成為計算機圖形模擬中的難點問題。

粒子系統(tǒng)(particle system)作為模擬不規(guī)則物體最成功的算法之一,被研究應用至今。自Reeves W T[1-2]于1983年首次提出粒子系統(tǒng),并成功模擬了火焰、爆炸等效果以來,國內外專家已經用粒子系統(tǒng)方法的思想成功模擬出了許多自然景物,并不斷對模擬進行改進,以追求更高的真實性和實時性。Coutinho等[3]在他們的研究中用粒子系統(tǒng)方法生成雨滴。Latta L等[4]采用GPU進行粒子系統(tǒng)模擬,能實時處理超過100萬個粒子,使得大規(guī)模粒子模擬變成了可能,也使越來越多的人開始關注并研究基于GPU的粒子系統(tǒng)動畫模擬。國內的袁霞和張玉啄[5]對粒子系統(tǒng)的方法及應用作了較為詳盡、系統(tǒng)的闡述。金小進等[6]利用粒子系統(tǒng)模擬了火焰,并在渲染過程中分別從實時性和真實感兩方面對粒子系統(tǒng)進行了優(yōu)化。汪繼文等[7]利用粒子系統(tǒng)進行了煙花仿真,并實現(xiàn)了對煙花形狀的控制。潘秋羽等[8]提出了基于粒子系統(tǒng)的快速的云三維仿真算法,能快速地產生形狀各異的真實感較強的三維云。何亮等[9]基于粒子系統(tǒng)模擬了動態(tài)雪景,但是所建物理模型較簡單并沒有考慮環(huán)境因素。徐利明等[10]提出了一種在大型場景漫游系統(tǒng)中實時模擬雨、雪的方法。單在雪粒子的模擬中,對粒子系統(tǒng)的方法就有不同的研究方向。劉金瑄等[11]基于粒子系統(tǒng)和XNA平臺工作原理,利用C#語言在XNA平臺下對飄雪進行了仿真。許金生和宋萬忠[12]基于OpenGL的OSG圖形庫對雪景進行模擬,真實地分析了雪粒子的受力情況。劉小玲等[13]則利用GPU的高速運算性能模擬了大規(guī)模的雨雪場景。除此之外,也有學者基于Vega(MultiGen-Paradigm公司工業(yè)軟件)對雪粒子系統(tǒng)進行模擬,楊述華等[14]基于粒子系統(tǒng)和Vega對雨雪進行了模擬。

綜上,基于粒子系統(tǒng)的模擬要建立合適的物理模型且盡可能滿足模擬的真實性,同時也需要對粒子更新的過程盡可能優(yōu)化使得程序滿足實時性要求。文中在分析研究粒子系統(tǒng)的方法的基礎上,利用VS開發(fā)工具在Windows平臺下進行降雪雪景模擬,建立出粒子系統(tǒng)和雪花系統(tǒng)模型,對雪花的運動進行簡化,優(yōu)化模擬過程,模擬出受風力影響的實際降雪雪景,并能實現(xiàn)對風力大小和大小雪的景觀控制,引入初等函數(shù)F=ex作為控制因子控制粒子大小使得雪粒子具有近大遠小的透視投影的三維效果,最后利用OpenGL渲染[15]模擬出降雪雪景。

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

ReevesWT于1983年首次提出粒子系統(tǒng),并成功模擬了火焰、爆炸等效果。其基本思想是用許多基本形狀的微小圖元粒子來描述不規(guī)則的模糊物體,這些微小粒子具有形狀、大小、顏色、位置、速度矢量、生命周期等屬性,對這些屬性進行初始化并施加控制函數(shù)進行動態(tài)改變,體現(xiàn)出被模擬物體的運動的動態(tài)性。同時,為了體現(xiàn)出不規(guī)則模糊物體運動的隨機性,對相關的粒子屬性設置隨機控制。所有的粒子都經過產生—活動—消亡這樣的過程。鑒于粒子系統(tǒng)這樣的特性,它能很好地模擬海浪、云、煙、火焰、雨、雪等這樣隨機運動的模糊自然景物。

粒子系統(tǒng)實現(xiàn)的基本步驟大致如下:

(1)產生新粒子;

(2)對新粒子屬性進行初始化;

(3)更新粒子屬性;

(4)刪除已經超過其生命周期的粒子;

(5)渲染繪制粒子。

根據(jù)粒子系統(tǒng)的算法思想,可以模擬降雪的雪景。每一片雪花作為單個粒子,賦予其相關屬性,定義好其數(shù)據(jù)結構,并根據(jù)粒子系統(tǒng)原理的實現(xiàn)步驟架構出粒子系統(tǒng)的過程函數(shù)。

利用C++語言編寫過程函數(shù),結合OpenGL圖形接口對雪花進行渲染。

3 雪粒子系統(tǒng)模型

基于粒子系統(tǒng)算法的基本理論及其過程性,用C++語言可以編寫出粒子系統(tǒng)的類,并編寫出粒子系統(tǒng)類的過程方法,如InitializeSystem()初始化函數(shù)、Update()粒子運動更新函數(shù)、Render()粒子渲染函數(shù)、Emit()粒子發(fā)射函數(shù),再添加一些粒子數(shù)、時間等這樣的成員變量。用面向對象的思想去處理的好處有很多,在具體模擬不同物體的時候,只要繼承粒子系統(tǒng)抽象類,根據(jù)模擬物體的具體情況去覆蓋父類的虛函數(shù)即可,具有良好的擴展性。粒子一般都具有形狀、大小、顏色、位置、速度矢量、生命周期這樣的屬性,用這樣一些基本類型的數(shù)據(jù)去描述定義粒子的數(shù)據(jù)結構,根據(jù)所要模擬的物體不同,需要不同的屬性描述。

3.1 雪粒子屬性

首先分析雪粒子的運動過程,確定雪粒子的屬性。雪花在下落過程中,受重力、空氣浮力以及風力的影響,從視覺上呈現(xiàn)出左右飄動徐徐下落的狀態(tài)。雪花在下落過程中,受外力影響,加速度和速度都發(fā)生了變化,導致位移也發(fā)生變化。在進行三維模擬時,將三維坐標投影到二維表面(電腦屏幕),在二維平面建立三維笛卡爾坐標系,二維平面具有x,y,z三分量。在x軸上雪花受到風力影響位置左右飄動,在y軸上雪花受到重力和空氣浮力影響做下降運動,在z軸上雪花有深淺之分,表示離視點的遠近,在這種透視投影中,遠處的物體看上去比近處的物體更小一些,所以在z軸上的粒子深淺程度影響雪粒子的大小屬性。當飄落到地面后,雪粒子融化消失,粒子死亡被刪除。

綜上,雪粒子的大體結構為:

structparticle_t

{

vector3_tp_pos; //粒子當前位置

vector3_tp_prevPos;//粒子的上一幀位置

vector3_tp_velocity;//粒子的速度矢量

vector3_tp_acceleration;//粒子的加速度

floatp_life;//粒子的生命周期

floatp_size;//粒子大小

floatp_sizeDelta;//隨時間的粒子大小改變量

};

其中定義三維矢量的數(shù)據(jù)類型vector3_t,包含x,y,z三坐標軸分量參數(shù)。

3.2 雪粒子系統(tǒng)模型初始化

雪粒子系統(tǒng)模型構建好后,就可以編寫雪景系統(tǒng)類了。雪景類繼承粒子系統(tǒng)抽象父類,并對粒子系統(tǒng)類的虛函數(shù)如Update()和Render()進行覆蓋,根據(jù)具體降雪過程來實現(xiàn)粒子系統(tǒng)各個過程函數(shù)。

雪花從空中飄向地面,粒子源定義在整個輸出窗口上部,其y值高度是固定的,為窗口高度m_height,在x軸和表示離視點遠近的z軸上初始粒子位置則是隨機的,用隨機函數(shù)控制。第i個粒子的初始位置公式描述如下:

ParticleList[i].pos.y=m_height

ParticleList[i].pos.x=m_origin.x+FRAND*m_width

ParticleList[i].pos.z=m_origin.z+FRAND*m_depth

其中,F(xiàn)RAND定義為(((float)rand()-(float)rand())/RAND_MAX),是一個(-1,1)之間的隨機數(shù)。m_origin.x和m_origin.y是坐標軸原點分量,m_width表示窗口寬度,m_depth則是z軸上的深淺值。

初始粒子的大小是固定的,可以設為固定值。同時對雪粒子的初始運動速度狀態(tài)進行設置。在這里,為了簡化之后的雪粒子更新步驟,提高系統(tǒng)的實時性,對每個雪粒子的初始加速度添加一個隨機控制函數(shù),使得每個粒子的初始速度狀態(tài)不一致,而這個速度狀態(tài)在之后的每一幀更新中不再改變。雖然是勻速狀態(tài),但是通過大量速度狀態(tài)不一致的雪粒子,同樣可以營造出雪花左右飄動徐徐下落的視覺效果。這樣,在傳統(tǒng)的雪粒子模擬中,需要在每一幀中更新的速度和位移信息,只需要更新位移屬性即可,而且這樣的簡化并不影響模擬的真實性,并且提高了系統(tǒng)的實時性,提升了程序效率。在x軸上的初始加速度表示雪粒子受風力影響速度的改變,通過隨機函數(shù)控制,不同的雪粒子在該軸上的加速度不同,通過粒子相互間速度的不同表明所受風力場的變化,同理,在y軸上加速度的不同表明所受重力和浮力的變化,z軸上加速度的不同表明不同雪花飄離視點的遠近。雖然在每一幀更新中速度將不再變化,但是通過整體大量的粒子與粒子之間的速度差異模擬表現(xiàn)出所受外力場的隨機變化。第i個粒子的初始速度描述公式如下:

ParticleList[i].m_velocity.x=SNOW_VELOCITY.x+FRAND*V_VARIATION.x

ParticleList[i].m_velocity.y=SNOW_VELOCITY.y+FRAND*V_VARIATION.y

ParticleList[i].m_velocity.z=SNOW_VELOCITY.z+FRAND*V_VARIATION.z

其中,SNOW_VELOCITY是雪粒子的初速度,是一個定義好的三維常矢量,初始速度簡化為自由落體,即z軸和x軸初始速度為0,只有豎直下落的y軸初速度。V_VARIATION也是定義好的初始加速度三維常矢量。在x軸上加速度受風力影響隨機改變,通過對它參數(shù)絕對值的大小進行設置可以表示風力強弱,通過對正負的方向設置可以表示所受風力方向。通過對z軸上的加速度隨機變化表示隨時間的推移離視點的遠近,從而影響粒子的大小,達到近大遠小的透視投影三維效果。

粒子的初始屬性設置完畢,雪粒子從窗口上部產生。由Emit()粒子發(fā)射函數(shù)產生,只要粒子數(shù)小于程序定義的最大粒子數(shù),就不斷循環(huán)粒子初始化函數(shù)產生粒子。這里對最大粒子數(shù)也進行可控設置,從而根據(jù)需要可以模擬大雪還是小雪的降雪場景。

3.3 雪粒子運動更新

粒子初始化后,就是粒子的運動更新了。對每個雪粒子個體來說其下降過程中速度將不再改變,但每個雪粒子速度狀態(tài)不盡相同,通過雪粒子個體間的隨機狀態(tài)差異模擬出實際降雪的隨機運動狀態(tài)效果。通過對運動模型的簡化,從而在Update()中省去了對速度的實時每幀控制,提高了系統(tǒng)的實時性,提升了程序效率,優(yōu)化了模擬。位置的每幀數(shù)學模型公式為:

S=S0+∫vdt

第i個粒子的位置描述公式如下:

ParticleList[i].pos=ParticleList[i].pos+ParticleList[i].velocity*Time

在z軸上引入指數(shù)函數(shù)F=ex作為控制因子,F(xiàn)=ex在(-∞,+∞)上單調遞增且在原點的函數(shù)值為1,其值域恒大于0。指數(shù)函數(shù)的數(shù)學模型特征可用來粗略控制隨時間推移雪粒子離視點的近大遠小變化,從而模擬出降雪的三維效果。第i個雪粒子的大小描述公式為:

f=Particle[i].pos.z

Particle[i].size=ef*Particle[i].size

當z值改變到超過一個定值范圍時,即表明該粒子離視點過遠或者過近,將不在顯示它。而當y軸的值下降到一個定值(即程序中設定的地面y值)時,表明雪花降落到地面,刪除釋放雪粒子,并產生新雪粒子發(fā)射。

這樣雪粒子系統(tǒng)對粒子系統(tǒng)函數(shù)Update()進行了覆蓋。

3.4 雪粒子的渲染

如果要使所模擬的物體更加逼真,一般采用紋理貼圖的方式。OpenGL的紋理映射(Texture Mapping)功能支持將一些像素數(shù)據(jù)經過變換(不規(guī)則變化也支持)將其附著到多邊形表面,使得模擬更加逼真。比如將真實的地板圖像紋理映射到矩形上,就可以逼真地模擬出地面效果,而且在變換多邊形時,多邊形上的紋理圖案也隨之變化,也匹配透視投影的近大遠小效果。OpenGL作為目前主流的圖形API之一,與C語言結合緊密,并且有強大的可移植性和渲染效果,提供了強大的庫函數(shù)進行調用,支持一維紋理、二維紋理和三維紋理。文中啟用二維紋理將雪花紋理映射到雪粒子上對雪粒子進行渲染。

紋理映射的基本操作步驟如下:

(1)圖像準備:既可以在程序中生成圖像,也可以讀取圖像文件。

(2)生成紋理號:適用于多個紋理反復切換時,一個紋理時不需要。

(3)設置當前紋理:切換紋理,也稱為紋理綁定。

(4)定義紋理:指定當前紋理的圖像。

(5)設置紋理參數(shù):指定紋理的重疊方式和插值方式。

(6)設置紋理環(huán)境參數(shù):決定怎樣使用紋理顏色,例如是否與光照色合成。

(7)啟動紋理功能,繪制場景,給出頂點的紋理坐標和幾何坐標(紋理坐標可以直接參數(shù)指定,也可啟用自動計算紋理坐標功能)。

(8)退出前刪除紋理。

文中采用32×32的bmp格式雪粒子紋理圖片,如圖1所示。

圖1 雪粒子紋理

通過調用Bitmap類中LoadBitmapFileWithAlpha()函數(shù)讀取圖像,并將其初始化渲染到雪粒子上。

4 實驗結果

實驗硬件環(huán)境為主頻為3.20 GHz的i5CPU,內存4 GB,顯卡為ATI Radeon HD 5450的PC機,選擇VS開發(fā)工具在Windows平臺下,利用OpenGL圖形庫進行模擬。參數(shù)如表1所示。

表1 參數(shù)設置

通過表1的參數(shù)設置進行模擬,分別得到圖2、圖3兩種視覺模擬效果。圖2為受東風影響的大雪降雪雪景,圖3為無風的小雪降雪雪景,均滿足視覺效果,可按照參數(shù)設置自行選擇所需模擬的降雪場景。

5 結束語

根據(jù)粒子系統(tǒng)的算法思想,結合面向對象的C++語言,建立出粒子系統(tǒng)的過程模型,分析了降雪過程,建立了雪粒子系統(tǒng)的三維模型,在簡化雪花下降過程中的運動模型的情況下,通過控制雪粒子位移來模擬實際降雪雪景,簡化了粒子更新控制步驟,并在z軸上引入控制因子控制雪粒子大小滿足近大遠小的透視投影效果,結合OpenGL圖形接口成功渲染出了3D降雪場景。同時,對大小雪以及風力強弱實行了參數(shù)可控,可以根據(jù)需要模擬不同的降雪場景,實驗結果也表明其具有逼真的三維仿真效果。

圖2 大雪有風實驗效果圖

圖3 小雪無風實驗效果圖

文中代碼具有良好的可擴展性,在此基礎上,可以將其應用于各種其他不規(guī)則物體(如煙花、雨水等)的模擬。模擬場景也可更加豐富多元化,同時考慮更加復雜的天氣情況。

[1]ReevesWT.Particlesystems-atechniqueformodelingaclassoffuzzyobjects[J].ACMSIGGRAPHComputerGraphics,1983,17(3):359-375.

[2]ReevesWT,BlauR.Approximateandprobabilisticalgorithmsforshadingandrenderingstructuredparticlesystems[J].ACMSIGGRAPHComputerGraphics,1985,19(3):313-322.

[3]CoutinhoBB,OliveiraAAF,AtencioYP,etal.RainsceneanimationthroughparticlesystemsandsurfaceflowsimulationbySPH[C]//SIBGRAPIconferenceongraphics,patternsandimages.[s.l.]:IEEEComputerSociety,2010:255-262.

[4]KolbA,LattaL,Rezk-SalamaC.Hardware-basedsimulation

andcollisiondetectionforlargeparticlesystems[C]//ProceedingsoftheACMSIGGRAPH/EUROGRAPHICSconferenceongraphicshardware.[s.l.]:ACM,2004:123-131.

[5] 袁 霞,張玉啄.粒子系統(tǒng)方法及其應用[J].云南師范大學學報:自然科學版,2003,23(3):14-16.

[6] 金小進,馬堯海.基于粒子系統(tǒng)的火焰模擬與優(yōu)化[J].計算機工程與設計,2010,31(5):1118-1120.

[7] 汪繼文,胡文平,金余峰.基于粒子系統(tǒng)的8字動態(tài)煙花仿真[J].計算機仿真,2010,27(10):211-214.

[8] 潘秋羽,畢碩本,陸良虎,等.基于粒子系統(tǒng)三維動態(tài)云的快速仿真算法[J].系統(tǒng)仿真學報,2014,26(1):85-89.

[9] 何 亮,巴力登.基于粒子系統(tǒng)的動態(tài)雪景模擬[J].西北大學學報:自然科學版,2010,40(4):603-606.

[10] 徐利明,姜昱明.基于粒子系統(tǒng)與OpenGL的實時雨雪模擬[J].計算機仿真,2005,22(7):242-245.

[11] 劉金瑄,吳頻頻.XNA環(huán)境下粒子系統(tǒng)的飄雪仿真[J].西安科技大學學報,2013,33(4):436-443.

[12] 許金生,宋萬忠.基于OSG粒子系統(tǒng)的雪景模擬[J].計算機工程與設計,2012,33(4):1509-1513.

[13] 劉小玲,楊紅雨,郭虎奇.基于GPU粒子系統(tǒng)的大規(guī)模雨雪場景實時模擬[J].計算機工程與設計,2012,33(6):2398-2401.

[14] 楊述華,廖守億,王仕成,等.基于粒子系統(tǒng)和Vega的實時雨雪模擬[J].計算機應用,2008,28:238-240.

[15]WrightRS,HaemelN,SellersG,etal.OpenGL超級寶典[M].第5版.北京:人民郵電出版社,2012:208-229.

Three-dimensional Simulation of Snowing Based on Particle System

ZHOU Qiang,WANG Ji-wen

(College of Computer Science and Technology,Anhui University,Hefei 230039,China)

A falling snow algorithmic structure is proposed based on particle system,incorporating the object-oriented C++ language.A 3D model of particle system is built by analyzing the falling process of snow,simplified the motion model of the snowflakes falling process and saved each frame of real-time control for speed.The realistic snowing is simulated which affected by wind through controlling the particles displacement.And on thezaxisofthree-dimensionalCartesiancoordinatesystem,theindexfunctionF=exisintroducedasthecontrollingfactorsothatthesimulationmatchestheperspectiveeffectofperspectiveprojection.ThesimulationiscombinedwithOpenGLgraphicinterface.Theexperimentalresultsshowthatthismethodhasarealistic3Dsimulationeffectandthecodesenableagoodscalability.

particle system;snowscape simulation;OpenGL;texture mapping

2016-03-07

2016-06-15

時間:2017-01-04

安徽省省級重點自然科學研究項目(KJ2013A009)

周 強(1991-),男,碩士研究生,研究方向為計算機仿真、圖形圖像處理;汪繼文,博士,教授,博士研究生導師,研究方向為計算流體力學、計算機仿真、圖像處理、智能算法等。

http://www.cnki.net/kcms/detail/61.1450.TP.20170104.1028.046.html

TP

A

1673-629X(2017)01-0130-04

10.3969/j.issn.1673-629X.2017.01.029

主站蜘蛛池模板: 亚洲欧美天堂网| 伊人福利视频| 99精品在线看| 欧美性精品| 久久国产免费观看| 欧美成a人片在线观看| 欧美精品啪啪一区二区三区| 极品国产在线| 国产精品手机在线观看你懂的 | 91av成人日本不卡三区| 亚洲区视频在线观看| 精品久久777| 国产亚洲日韩av在线| 伊人91视频| 国产天天色| 国产乱人激情H在线观看| 97国产精品视频自在拍| 香蕉综合在线视频91| 色综合成人| 爆乳熟妇一区二区三区| 欧美亚洲网| 亚洲男女在线| 国产中文一区二区苍井空| 天堂成人av| 日本一区二区三区精品国产| 午夜不卡福利| 麻豆AV网站免费进入| 天天做天天爱夜夜爽毛片毛片| 亚洲天堂777| 一级毛片在线播放| 露脸国产精品自产在线播| 国产视频欧美| 中文字幕在线看| AV在线天堂进入| 高清国产va日韩亚洲免费午夜电影| 国禁国产you女视频网站| 国产人前露出系列视频| 中文字幕人妻av一区二区| 欧美在线视频不卡| 内射人妻无码色AV天堂| 国产视频只有无码精品| 波多野结衣一二三| 美女一级毛片无遮挡内谢| 亚洲色偷偷偷鲁综合| 免费A∨中文乱码专区| 中文国产成人精品久久一| 欧美日韩资源| 久久婷婷人人澡人人爱91| 四虎成人精品| 国产精品xxx| 免费a在线观看播放| 特级毛片免费视频| 日韩在线中文| 欧美高清国产| 欧美性精品不卡在线观看| 特级aaaaaaaaa毛片免费视频| 美女一区二区在线观看| 狠狠综合久久久久综| 2022国产91精品久久久久久| 在线中文字幕网| 日本五区在线不卡精品| 99国产精品免费观看视频| 精品国产Av电影无码久久久 | 91尤物国产尤物福利在线| 91丝袜美腿高跟国产极品老师| 囯产av无码片毛片一级| 亚洲Va中文字幕久久一区| 2021最新国产精品网站| 91探花在线观看国产最新| 久久综合AV免费观看| 亚洲伊人久久精品影院| 国产Av无码精品色午夜| 玩两个丰满老熟女久久网| 日韩精品免费一线在线观看| 国产精品亚洲一区二区三区z | 久久国产精品波多野结衣| 91视频国产高清| 亚洲日本在线免费观看| 中文字幕人妻无码系列第三区| 91麻豆国产精品91久久久| 四虎成人在线视频| 永久在线精品免费视频观看|