郭燁旻
(吉林省國(guó)際商務(wù)學(xué)校,吉林長(zhǎng)春 130012)
粒子系統(tǒng)(Particle System)是Reeves在1983年提出的利用粒子模擬自然場(chǎng)景的一種技術(shù),多用于模擬雨、雪、水流、爆炸、煙霧等場(chǎng)景[1]。由于這些場(chǎng)景都是根據(jù)物理模型計(jì)算出來(lái)的,也可以說(shuō),粒子系統(tǒng)是基于物理原理的一種建模方法。在本文中首先使用粒子系統(tǒng)建立云霧的三維框架模型,在形成的框架中使用過(guò)程紋理函數(shù)對(duì)云模型進(jìn)行紋理映射,最后應(yīng)用公告板技術(shù)完成云模型的繪制。
應(yīng)用粒子系統(tǒng)將景物定義為由成千上萬(wàn)個(gè)不規(guī)則并且是隨機(jī)分布的粒子組成,每個(gè)粒子都有一定的生命周期,每時(shí)每刻都在不斷地運(yùn)動(dòng)和改變形態(tài),由諸多粒子的集合而不是個(gè)別粒子形成了景物的整體形態(tài)和特征以及動(dòng)態(tài)變化[2]。
通過(guò)控制粒子的運(yùn)動(dòng)將云的擴(kuò)散以及氣流對(duì)云的作用表示出來(lái),在這一變化發(fā)生的過(guò)程中由粒子的分布規(guī)律以及濃度屬性得到總的粒子分布濃度場(chǎng)。其中粒子的主要屬性為:粒子的速度、位置、加速度、作用半徑以及濃度函數(shù)。粒子的作用半徑和濃度函數(shù)之間的關(guān)系如圖1所示。
圖1 半徑和濃度函數(shù)之間的關(guān)系
其中粒子的作用半徑為R,通過(guò)系統(tǒng)設(shè)置濃度域值p,通過(guò)解方程f(R,t)=p,得以確定粒子的作用范圍R?,F(xiàn)實(shí)生活中,自然界的云其實(shí)是由無(wú)數(shù)個(gè)液態(tài)的小水珠集合在一起形成的,所以在進(jìn)行云模型架構(gòu)時(shí)使用粒子代替小水珠,模型的構(gòu)建過(guò)程如圖2所示。
圖2 模型的構(gòu)建過(guò)程
應(yīng)用根據(jù)云的物理模型制作的紋理貼片代替生成的粒子,該紋理具有云粒子的大小、形狀、透明度、顏色等特性。而且根據(jù)場(chǎng)合和云精細(xì)程度的需要,使用過(guò)程紋理貼片代替一個(gè)或多個(gè)粒子,用稍微復(fù)雜的貼片可以減小粒子的數(shù)目而達(dá)到相同的效果,以提高性能。粒子紋理可以根據(jù)算法生成,也可以使用現(xiàn)有的圖像[5]。在構(gòu)建云內(nèi)的粒子時(shí),由于粒子過(guò)多,不能采用OpenGL提供的點(diǎn)或者三維型體來(lái)代表微小的粒子,因?yàn)橄到y(tǒng)性能無(wú)法承受,而且alpha混合的時(shí)候也不美觀。本文采用紋理映射和Billboard技術(shù)來(lái)實(shí)現(xiàn)云的繪制。
在具體的云紋理采樣過(guò)程中應(yīng)用二維高斯正態(tài)分布函數(shù)公式:
生成的云霧紋理定義在水平直角坐標(biāo)系[-1.0,1.0]×[-1.0,1.0]區(qū)間內(nèi),G(u,v)用來(lái)計(jì)算點(diǎn)(u,v)處的灰度值,σ為高斯分布的方差。在公式中引入中心峰值調(diào)制系數(shù)ρ,其取值范圍是[0,2πσ],根據(jù)實(shí)際模擬經(jīng)驗(yàn)當(dāng)峰值為0.4時(shí)最為接近自然效果,同時(shí)ρ=σ。
公告板 (Billboard)技術(shù)是一項(xiàng)非常實(shí)用的技術(shù),它可以用一種簡(jiǎn)單的方式來(lái)完成很多特別的效果。公告板技術(shù)的原理其實(shí)很簡(jiǎn)單,就是使用兩個(gè)三角形組成的矩形來(lái)顯示一個(gè)位圖,在顯示過(guò)程中這個(gè)矩形面板根據(jù)攝像機(jī)的觀察角度和位置而變化。粒子在三維的空間中運(yùn)行,其位置分布也是三維的,但是由于通常的紋理映射技術(shù)都是二維的,所以當(dāng)視點(diǎn)在場(chǎng)景當(dāng)中運(yùn)動(dòng)時(shí),可能由于相互角度的關(guān)系而發(fā)生失真現(xiàn)象,當(dāng)視線平行于紋理映射平面時(shí),甚至完全看不到物體的存在。我們應(yīng)用公告板技術(shù)使生成的過(guò)程紋理跟隨視角變化,利用二維的紋理函數(shù)模擬三維的渲染效果[5]。
在粒子填充完以后,根據(jù)云圖可以進(jìn)一步調(diào)整云的效果。因?yàn)榱W拥膶傩灾苯佑绊懙皆频男Ч?,粒子的大小直接關(guān)系到云的分辨率,當(dāng)視點(diǎn)較近時(shí),粒子尺寸應(yīng)該較小,而當(dāng)視點(diǎn)較遠(yuǎn)時(shí),粒子尺寸較大。粒子的密度直接影響到云的厚度和顏色,而顏色和透明度則間接反映了光照程度,因此通過(guò)調(diào)整粒子的密度和、顏色及透明度就可表現(xiàn)出光照的影響。在繪制過(guò)程中,可以通過(guò)隨機(jī)地控制與粒子有關(guān)的這些參數(shù)來(lái)增加真實(shí)感。為了更好地模擬云彩效果,我們還可控制云團(tuán)邊緣的半透明度比中心的半透明度高,這樣,在云粒子集中的地方,會(huì)呈現(xiàn)出亮白色;還可采用色彩融和的技術(shù),把云粒子本身的顏色和天空面的背景顏色很好地融和起來(lái),在云粒子分散的地方,會(huì)略微呈現(xiàn)出天空的背景面,這樣就能得到較為真實(shí)的效果。
使用java構(gòu)建粒子系統(tǒng),應(yīng)用OpenGL對(duì)生產(chǎn)的系統(tǒng)進(jìn)行渲染具體步驟如圖2所示:
圖2 粒子系統(tǒng)生成步驟
本文應(yīng)用粒子系統(tǒng)與紋理過(guò)程函數(shù)相結(jié)合的方法對(duì)自然景物中的云霧模型進(jìn)行模擬,在具體的模型繪制過(guò)程中應(yīng)用紋理映射和Billboard技術(shù)來(lái)實(shí)現(xiàn),從而提出了一種多種建模方式相結(jié)合的模擬不規(guī)則物體的全新方法。
[1]Reeves T.Particle systems—a technique for modelinga class offuzzyobjects[J].ACMTransactions on Graphics,1983,2(2):91-108.
[2]Harris MJ.Real-time cloud simulation and rendering[D].Carolina:UniversityofNorth Carolina,2003.
[3]袁霞,張玉啄.粒子系統(tǒng)方法及其應(yīng)用[J].云南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2003(3):14-16.
[4]張芹,吳慧中,張健.基于粒子系統(tǒng)的建模方法研究[J].計(jì)算機(jī)科學(xué),2003(8):144-146.
[5]馬繼峰,彭曉源,馮勤,等.三維特殊效果庫(kù)的研究與實(shí)現(xiàn)[J].光電技術(shù)應(yīng)用,2003(4):34-38.
[6]羅玉玲.粒子系統(tǒng)與紋理映射相結(jié)合模擬禮花的研究[J].電腦知識(shí)與技術(shù),2004(20):70-72.
[7]魏海燕.虛擬制造技術(shù)的相關(guān)概念及其應(yīng)用[J].機(jī)械工程師,1999(9):1-2.