吳鴻基
摘要:噴泉景物模擬可以被廣泛地運用于能源、娛樂、游戲開發(fā)等等行業(yè)領(lǐng)域,但噴泉景物具有流動性、隨機性,而粒子系統(tǒng)是目前模擬不規(guī)則模糊景物的最成功的算法。本文加入力場以及透明度,利用OpenGL底層圖形庫的高性能設(shè)計出高真實度粒子系統(tǒng)噴泉模型。最后通過在普通PC機上運用VS2010編程實現(xiàn)模擬,顯示模擬圖形具有很好的實時性和真實度,可以滿足一般的動畫需求。
關(guān)鍵詞:粒子系統(tǒng);噴泉模擬;OpenGL
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)14-0217-02
1 引言
人們不斷尋求更多的人機交互的方法,自然景物的三維圖形模擬也便成為其中非常熱門的領(lǐng)域。而粒子系統(tǒng)就是目前被認為是模擬不規(guī)則模糊景物的最成功的算法。
1983年,Reeves[1]首次提出粒子系統(tǒng)的概念,這種算法擁有很好的動態(tài)性和隨機性,是以往圖形學(xué)中幾何建模無法比擬的。萬華根[2]等人提出了N-S方程的一個求解特例,用圓球作為粒子元模擬出噴泉,但計算復(fù)雜,計算量大。本文結(jié)合粒子的物理動力學(xué),在基于OpenGL的環(huán)境下渲染粒子,以實現(xiàn)對于噴泉模擬高真實度的要求。
2 高真實度粒子系統(tǒng)算法
粒子系統(tǒng)主要分為以下幾步[3]:生成新的粒子,粒子死亡,繪制粒子。如下圖1所示。
1)生成適量的新的粒子:粒子會在系統(tǒng)中的一個點產(chǎn)生,生成后會被賦予其獨立的屬性,具體初始屬性有如下幾種:初始速度V、初始方向D、X方向初速度VX、Y方向初速度VY、Z方向初速度VZ、運動狀態(tài)Type、粒子淡化[4]Alpha、粒子能在空中的最高高度H。
之后粒子開始運動,粒子的各項屬性不斷更新。粒子的位置從t0開始作為時間軸,每隔△t進行一次位置變換。
3)利用OpenGL函數(shù)繪制粒子:接下來要做的是將這些粒子制作成水滴的形狀和顏色,因此可以運用3D彩色點渲染粒子。本文選擇四邊形作為基本紋理圖案紋理映射。因為每個四邊形都是不能被看到的,所以在坐標(biāo)系中,所有四邊形面片都設(shè)置為平行于XOY平面[5]。如下圖1:
根據(jù)這四個頂點的坐標(biāo),再調(diào)用OpenGL函數(shù)進行紋理映射。OpenGL中函數(shù)glTexCoord可以用來設(shè)置紋理坐標(biāo),結(jié)合四邊形坐標(biāo)設(shè)置紋理映射位置。再調(diào)用OpenGL函數(shù)glVertex3f映射水滴的紋理圖片,此時也就完成了對應(yīng)的粒子紋理融合。
繪制過程中,當(dāng)兩個或多個四邊形粒子重合時,通過啟用opengl中的混合功能來使水珠粒子融合在一起:
以便讓所有具有不同Z坐標(biāo)(深度值)的粒子繪制并平滑地混合在一起。OpenGL函數(shù)的調(diào)用給粒子進行了繪制和融合,使模型的噴泉水滴更真實,水滴的運動過程符合客觀規(guī)律,增強了粒子系統(tǒng)的真實度。
3 實驗結(jié)果分析
結(jié)合粒子系統(tǒng)的原理以及OpenGL圖形庫在電腦上進行操作。先對粒子系統(tǒng)進行試驗,設(shè)計粒子初始位置為屏幕的中心。初始最大粒子數(shù)根據(jù)多次試驗,選取1000為最適合觀察的數(shù)量。開始的粒子速度設(shè)定為隨機,就會在粒子誕生后有一個爆炸效果,但因為設(shè)置的粒子加速度x軸為0,y軸為-0.8,z軸為0,粒子會出現(xiàn)統(tǒng)一向下的運動。設(shè)定粒子的顏色有紅黃藍三種顏色參數(shù),設(shè)定三色參數(shù)隨機改變,粒子系統(tǒng)也就形成彩色狀態(tài),最終形成下面圖3產(chǎn)生的效果。根據(jù)初始狀態(tài)進行試驗,改變最大粒子數(shù),選取了最大粒子數(shù)為100和10000的分別進行比較,如下圖4是對屏幕內(nèi)最大粒子數(shù)100和屏幕內(nèi)最大粒子數(shù)10000的粒子系統(tǒng)效果比較。
粒子在運動過程中保持初始設(shè)定的加速度,粒子運動統(tǒng)一,增加粒子y軸的加速度,粒子呈現(xiàn)如圖5的效果圖,恢復(fù)初始狀態(tài)后增加x軸加速度效果如圖6所示
進行以上試驗后,對于設(shè)定不同粒子各項參數(shù)產(chǎn)生的不同效果進行了了解,再開始設(shè)計噴泉的效果圖。實驗為噴泉模型,只設(shè)置重力作用,粒子系統(tǒng)內(nèi)粒子加速度都設(shè)置為向下的重力加速度[6]。
可知水珠粒子的運動速度v和位置p
v為水珠粒子的當(dāng)前速度,v0為水珠粒子的初始速度,g為水珠粒子的加速度,t為時間的變化,p為當(dāng)前位置,p0為初始位置。
然后開始生成粒子并賦予粒子初始屬性,粒子的初始速度全為垂直向上。最終就得到動態(tài)的數(shù)個噴泉,如圖7所示。
得到的噴泉粒子具有隨機性,噴泉模型具有動態(tài)感,粒子運動軌跡符合自然中噴泉水滴的重力場作用,粒子的落地消失也符合自然中噴泉水滴的客觀規(guī)律。經(jīng)過多次試驗,選取的粒子最大量達到了真實度和計算效率的平衡,實現(xiàn)了模型對于真實度的要求。
4 結(jié)語
以上著重討論對噴泉粒子系統(tǒng)在OpenGL環(huán)境下的建模方式,主要為:粒子的初始屬性設(shè)定,粒子在生命周期內(nèi)的運動,粒子的消亡以及粒子的繪制,加入重力場。實現(xiàn)出來的粒子系統(tǒng)具有動態(tài)性、高真實度??紤]粒子系統(tǒng)動態(tài)性,設(shè)計粒子系統(tǒng)內(nèi)粒子數(shù)量范圍以及粒子力場的建立是實現(xiàn)真實度的關(guān)鍵部分。粒子的Alpha參數(shù)帶來的落地消亡效果更增強了噴泉的真實。最后,本文在撰寫過程中,得到了本科學(xué)業(yè)導(dǎo)師李暉老師悉心的指導(dǎo),在此特此感謝!
參考文獻:
[1] Reeves W T. Particle systems a technique for modeling a class of fuzzy [J] Computer Graphies, 1983,17(3):359-376.
[2] 萬華根,金小剛.基于物理模型的實時噴泉水流運動模擬[J].計算機學(xué)報,1998,21(9):774-779.
[3] 蔣恒恒,章國穩(wěn).利用粒子系統(tǒng)實現(xiàn)噴泉模擬[J].重慶郵電大學(xué)學(xué)報(自然科學(xué)版),2008,20(6):749-753.
[4] 謝劍斌,郝建新,蔡宣平,等.基于粒子系統(tǒng)的雨點和雪花降落模擬生成[J].中國圖象圖形學(xué)報,1999,4(9):734-738.
[5] 徐利明,姜昱明.基于粒子系統(tǒng)與OpenGL的實時雨雪模擬[J].計算機仿真,2005,22(7):245-245.
[6] 肖何,何明耕,白忠建,等.OpenGL中基于粒子系統(tǒng)的噴泉模擬實現(xiàn)[J].計算機仿真學(xué)報,2007,24(12):201-204.
[7] 羅維佳.基于粒子系統(tǒng)的三維場地降雨實時模擬[J].中國圖像圖形學(xué)報,2004,9(4):495-500.
[8] Szeliski Richard , Tonnesen David.Surface modeling with orient-ed particle system[J].Computer Graphics, 1992,26(4):185-194.
[9] Reynolds Craig W. Flocks, herds, and schools: A distributedbehavioral model[J].Computer Graphics, 1987,21(4):25-34