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

?

基于粒子系統(tǒng)的噴泉模擬實現(xiàn)

2015-12-10 13:02:33張剛靳繼紅
電腦知識與技術(shù) 2015年26期
關(guān)鍵詞:粒子系統(tǒng)三維建模

張剛 靳繼紅

摘要:噴泉模擬過程是一種非常復(fù)雜的對不規(guī)則模糊物體的模擬過程。文章采用基于粒子系統(tǒng)的圖形生成算法,成功模擬了噴泉這種不規(guī)則模糊物體,經(jīng)過實驗,當(dāng)粒子數(shù)目取得合適時,可以滿足模擬精確性和實時性的要求。

關(guān)鍵詞:噴泉模擬;粒子系統(tǒng);三維建模; OpenGL

中圖分類號:TP391 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)26-0210-02

1 引言

近年來,隨著計算機技術(shù)的快速發(fā)展,對不規(guī)則模糊物體的運動模擬要求越來越多,也越來越精,尤其在影視廣告、游戲開發(fā)、虛擬現(xiàn)實等領(lǐng)域,煙、火、云、水、、雨、雪等特效成為不可或缺的元素。幾何外形表現(xiàn)不規(guī)則,且形態(tài)隨時在動態(tài)地發(fā)生變化,這使得要生成這些對象不能用常規(guī)的三維建模方法[1]。粒子系統(tǒng)建模方法從1983年被Reeves[2]首次提出以來被認(rèn)為是模擬不規(guī)則模糊物體最為成功的圖形生成算法。本文擬采用粒子系統(tǒng)方法生成噴泉的三維模型對其進行模擬。

2 粒子系統(tǒng)

基于粒子系統(tǒng)方法的基本思想[3]是把大量基本粒子放在一塊來描述這些不規(guī)則物體,基本粒子具有生命周期和屬性,繪制出這些基本粒子,即可得到不規(guī)則模糊物體?;玖W拥膶傩圆皇菃我坏模ù笮?,顏色、位置、速度、透明度和生命周期等一組屬性。為模擬需要,賦予每個粒子一定的生命周期:出生、生長、衰老和消亡。所以粒子系統(tǒng)不是靜態(tài)系統(tǒng),而是各個基本粒子在時刻變形和運動。在變形運動中不斷有新粒子生成并加入系統(tǒng),舊粒子消亡退出系統(tǒng)。值得注意的是其中粒子每個屬性的參數(shù)都是個隨機數(shù),可以很好地描述不規(guī)則模糊物體的隨機性和動態(tài)性。

3 噴泉系統(tǒng)三維模型及模擬實現(xiàn)

3.1 噴泉模型

建立噴泉模型,首先要構(gòu)造合適的空間坐標(biāo)系。假設(shè)觀察者的視點位于屏幕正前方,原點O在噴泉發(fā)射位置中心,三個坐標(biāo)軸取向為: x軸正向取從左至右的方向,y軸正向取從下至上的方向,z軸正向為從里至外的方向,符合一般取向。

水珠,定義為:

[Rn={Pos,Speed,Size,Direction,Color,Bright,Age,Type}],實際上是一個n維向量,描述的是粒子的空間位置、速度矢量、方向、大小,顏色、亮度、年齡,生命周期、狀態(tài)等屬性。

水線是具有相同初始噴射方向的水珠粒子集合,記為[Fv]。

水線集:由一定數(shù)目的水線構(gòu)成的集合[F],[F=q|q∈Fv] 。

噴泉基本模型:由一定數(shù)量水線構(gòu)成的。假設(shè)不計空氣阻力水珠在[y]方向只受重力作用,粒子在[y]方向運動軌跡則可描述為:

[y=-1/2*g*T2+H] (1)

其中g(shù)是重力加速度,[T]是生存時間,H表示水珠在[y]方向得最高值。

水珠在[x],[z]方向的位置分別由(2)(3)式確定。

[x=x0+vxdt] (2)

[z=z0+vzdt] (3)

其中[x0],[z0]是粒子在[x]和[z]方向的初始位置,[vx]和[vz]是粒子在[x]和[z]方向的速度。

噴泉模擬的實時性受水珠粒子數(shù)目的影響,過大過小均影響仿真效果。設(shè)屏幕上每單位區(qū)域平均出現(xiàn)粒子數(shù)為[PerArnum],方差為[Varnum], 水珠大小為[Size],顯示區(qū)域為[Area],則初始時刻產(chǎn)生的粒子數(shù)目[Number]為:

[Number=(PerArnum+rand()×Varnum)×Area/Size]

其中[rand()]是隨機函數(shù),值可取在-1~+1之間。

3.2 噴泉系統(tǒng)模型實現(xiàn)

水珠粒子系統(tǒng)運動畫面的生成繪制通常課按下面步驟進行[4]:

(1)新的水珠粒子生成,并加入粒子系統(tǒng)中;

(2)賦予每一個新水珠粒子一定的屬性;

(3)刷新系統(tǒng)中水珠粒子屬性;;

(4)刪除已消亡的水珠粒子;

(5)檢查粒子的動態(tài)屬性,根據(jù)其變化情況對其進行移動和變換;

(6)將存活粒子繪制形成噴泉圖形。

3.2.1 新水珠粒子的生成

模擬中,由坐標(biāo)原點發(fā)射出水珠粒子,因此每個粒子的初始位置為O(0,0,0),粒子的其他各個屬性要進行初始化[5](編程在Visual C++語言平臺進行):

[v=(float)(rand()%a)/b+c] // 粒子運動初始速度

[d=(float)(rand()%e)/f+g] // 粒子運動初始方向

[xd=cos(π*d/180)*v/k] // 在X方向初始速度

[zd=sin(π*d/180)*v] // 在Z方向初始速度

[Type=True] // 運動狀態(tài),為真,則運動

[Alpha=1] // 粒子透明度

[H=100] // 粒子在空中位置高度的最大值

其中[a,b,c,d,e,f,g,k]為常量,其值由多次經(jīng)驗得到,[rand()]是隨機數(shù)。

3.2.2 水珠粒子的位置更新

隨著時間的推移,粒子不停地運動,其位置也在不斷移動。設(shè)粒子在[tj]時刻經(jīng)過[Δt]后到達[tj+1]時刻,粒子的位置發(fā)生的變化由公式(4)-(6)描述:

[xj+1=xj+vx*Δt] (4)

[yj+1=-1/2*g*t2j+1+H] (5)

[zj+1=zj+vz*Δt] (6)

粒子的高度值y隨時間t變化,因為粒子噴出并落下的圖形接近于開口向下的拋物線,因此y值先增加到最高然后開始減小。當(dāng)[t=0]時,y取得最大值H。滿足[y>0],則運動類型為真,即[Type=True],否則[Type=False],這個過程中,[Alpha]值淡化,直到為0,認(rèn)為粒子消亡,刪除即可。

3.2.3 粒子的消亡

從上面可以看出,粒子消亡決定因素有兩個:運動類型[Type]和[Alpha]值。當(dāng)粒子經(jīng)歷生成,上升到最高處,然后下落至水面后,運動類型Type值變?yōu)镕alse。另外,變量[Alpha]表示粒子的透明度,再使用變量[ΔAlpha]來控制粒子到達水面后消融的速度[3]:

[Alpha=Alpha-ΔAlpha] (7)

粒子初始化時,其[Alpha]值為1,此時粒子完全不透明,能被完全看到,且顯示顏色為本身的顏色。隨著運動的不斷進行,此值一直在減少,最終達到0值時,表明粒子消亡要從粒子系統(tǒng)中刪掉。

3.2.4 粒子的繪制

我們要繪制的是所有在系統(tǒng)中活躍的噴泉粒子,當(dāng)求出這些粒子的位置后開始繪制的工作了。實際中噴泉包含的粒子數(shù)量巨大,為簡化繪制過程,本文采用了OpenGL標(biāo)準(zhǔn)圖形庫中提供的四邊形為基本繪制單位,結(jié)合紋理映射功能及色彩融合技術(shù)生成各個水珠粒子。

繪制過程主要調(diào)用OpenGL函數(shù)。調(diào)用[glColor4f()]設(shè)置水珠粒子的顏色,調(diào)用設(shè)置當(dāng)前紋理坐標(biāo),調(diào)用[glTexCoord2f()]設(shè)置紋理坐標(biāo),調(diào)用[glVertex3f()]進行紋理映射,調(diào)用[glEnable()]和[glDisable()]進行粒子融合。

4 實驗結(jié)果

按照以上所述方法,噴泉的模擬主要使用OpenGL技術(shù),運用VC++ 6.0語言為開發(fā)平臺編程實現(xiàn),效果如圖1所示,(a)(b)(c)(d)所示為噴泉系統(tǒng)模型形成過程的截圖。實驗中,通過調(diào)整粒子數(shù)量來測試?yán)L制速度,結(jié)果表明在粒子數(shù)量小于10000的情況下繪制速率較好,能滿足實時性的要求。

5 結(jié)束語

本文使用OpenGL技術(shù),以VC++6.0為開發(fā)平臺實現(xiàn)了基于粒子系統(tǒng)的噴泉模擬過程,模擬效果真實自然,在將來更細(xì)致的研究工作中,還可以進一步考慮水珠落回水面后濺出水花效果。

參考文獻:

[1] 任慶東,袁旭公,劉賢梅.基于GPU的噴泉模擬[J].科學(xué)技術(shù)與工程,2010,10 (36):9110-9114.

[2] Reeves W T,Lucasfilm.Particle Systems-A Technique for Modeling a Class of Fuzzy Objects[J].ACM Transactions on Graphics,1983,2 (2):213-217.

[3] 肖何,何明耘,白忠建.OpenGL中基于粒子系統(tǒng)的噴泉模擬實現(xiàn)[J].計算機仿真,2007,24(12):201-204.

[4] 蔣恒恒,湯寶平.基于OpenGL與粒子系統(tǒng)實現(xiàn)三維噴泉模擬[J].計算機測量與控制,2009,17(9):1717-1719.

[5] 汪繼文,鄭鋒.基于OpenGL與粒子系統(tǒng)的噴泉模擬實現(xiàn)[J].計算機技術(shù)與發(fā)展,2011,21(8):161-164.

猜你喜歡
粒子系統(tǒng)三維建模
利用GPU加速的粒子系統(tǒng)全球流場可視化系統(tǒng)設(shè)計與實現(xiàn)
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
農(nóng)用風(fēng)力發(fā)電機葉片設(shè)計
數(shù)控仿真系統(tǒng)三維建模技術(shù)研究
垂直軸風(fēng)力發(fā)電機葉片建模與研究農(nóng)用
基于GIS的網(wǎng)絡(luò)三維系統(tǒng)的構(gòu)建及應(yīng)用
三維建模技術(shù)在家畜器官建模中的應(yīng)用
科技視界(2016年16期)2016-06-29 18:34:41
基于CATIA的多功能運動輪椅三維數(shù)字化建模及其優(yōu)化設(shè)計
科技視界(2016年8期)2016-04-05 09:11:14
粒子系統(tǒng)在航海應(yīng)用上的展望*
基于粒子系統(tǒng)的建模與仿真綜述
江西省| 弥渡县| 文水县| 正宁县| 雅安市| 奉贤区| 革吉县| 富锦市| 宜良县| 石河子市| 石狮市| 昆明市| 新和县| 会宁县| 闵行区| 邵东县| 始兴县| 乐山市| 丰都县| 虞城县| 瑞金市| 宁津县| 庐江县| 含山县| 武山县| 越西县| 桐城市| 疏勒县| 墨玉县| 凤阳县| 佛学| 南丰县| 合江县| 哈密市| 余干县| 平罗县| 仙居县| 赣榆县| 锡林郭勒盟| 茂名市| 商河县|