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