• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      張剛 靳繼紅

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

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

      中圖分類號:TP391 文獻標識碼: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]首次提出以來被認為是模擬不規(guī)則模糊物體最為成功的圖形生成算法。本文擬采用粒子系統(tǒng)方法生成噴泉的三維模型對其進行模擬。

      2 粒子系統(tǒng)

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

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

      3.1 噴泉模型

      建立噴泉模型,首先要構(gòu)造合適的空間坐標系。假設(shè)觀察者的視點位于屏幕正前方,原點O在噴泉發(fā)射位置中心,三個坐標軸取向為: 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 新水珠粒子的生成

      模擬中,由坐標原點發(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值先增加到最高然后開始減小。當[t=0]時,y取得最大值H。滿足[y>0],則運動類型為真,即[Type=True],否則[Type=False],這個過程中,[Alpha]值淡化,直到為0,認為粒子消亡,刪除即可。

      3.2.3 粒子的消亡

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

      [Alpha=Alpha-ΔAlpha] (7)

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

      3.2.4 粒子的繪制

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

      繪制過程主要調(diào)用OpenGL函數(shù)。調(diào)用[glColor4f()]設(shè)置水珠粒子的顏色,調(diào)用設(shè)置當前紋理坐標,調(diào)用[glTexCoord2f()]設(shè)置紋理坐標,調(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ù)量來測試繪制速度,結(jié)果表明在粒子數(shù)量小于10000的情況下繪制速率較好,能滿足實時性的要求。

      5 結(jié)束語

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

      參考文獻:

      [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ā)電機葉片設(shè)計
      數(shù)控仿真系統(tǒng)三維建模技術(shù)研究
      垂直軸風力發(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)的建模與仿真綜述
      临清市| 龙里县| 观塘区| 施秉县| 新宾| 湛江市| 依兰县| 富锦市| 望都县| 青龙| 平乐县| 通河县| 资兴市| 始兴县| 长宁县| 江北区| 房产| 鹤峰县| 稻城县| 叙永县| 禄劝| 玉屏| 资阳市| 克拉玛依市| 房产| 淮北市| 舟曲县| 大渡口区| 淅川县| 公主岭市| 封开县| 贡嘎县| 胶南市| 房山区| 鲜城| 苏尼特右旗| 涿州市| 手游| 全州县| 石楼县| 莒南县|