蘇 謨,郭銳鋒,王麗麗,王鴻亮,馬元婧,趙玉彬
1(中國科學(xué)院大學(xué),北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所, 沈陽 110168)
池火災(zāi)是一種常見的火災(zāi)形式,是可燃液體的自然燃燒.可燃液體(如汽油、柴油等)泄露后流到地面形成液池,遇到火源燃燒而成池火災(zāi)[1].隨著石油、化工等行業(yè)的發(fā)展,可燃性液體的生產(chǎn)、使用、存儲(chǔ)等過程越來越多.可燃性液體一旦發(fā)生泄漏,很容易形成池火災(zāi)并發(fā)生嚴(yán)重的事故[2].本文以環(huán)境空氣質(zhì)量預(yù)警平臺(tái)項(xiàng)目為背景,研究池火災(zāi)實(shí)時(shí)模擬對(duì)事故后果模擬分析及事故風(fēng)險(xiǎn)評(píng)估尤為重要,同時(shí)實(shí)時(shí)地模擬真實(shí)感火焰一直是計(jì)算機(jī)圖形學(xué)的難點(diǎn)之一.
目前,池火的模擬方法主要有三種途徑,分別是基于粒子系統(tǒng)、數(shù)學(xué)物理模型和紋理貼圖方式.基于數(shù)學(xué)物理模型模擬是將火焰視為一種特殊的流體,采用NS(Navier-Stokers)方程求解火焰運(yùn)動(dòng),這類方法需要求解一系列復(fù)雜的非線性NS方程,但求解計(jì)算量大,難以滿足實(shí)時(shí)性要求[3].郭燕[4]等人,采用外形輪廓與紋理貼圖相結(jié)合的方法生成燃燒的效果,這種方法僅構(gòu)造一個(gè)二維的符合一定規(guī)律的火焰效果,但很難與周圍的環(huán)境發(fā)生交互作用及影響火焰動(dòng)態(tài)變化的呈現(xiàn).粒子系統(tǒng)理論是迄今為止用于描述不規(guī)則物體最成熟的理論之一.許多國內(nèi)外研究學(xué)者采用基于粒子系統(tǒng)的火焰模擬方法,但粒子的控制過程過于隨機(jī),單純使用粒子系統(tǒng)無法精確描述燃燒的池火.張亮[5]等人將火焰運(yùn)動(dòng)模擬函數(shù)融入到粒子系統(tǒng)中實(shí)現(xiàn)較好的火焰模擬效果.但未考慮環(huán)境因素且影響火焰模擬效果的物理參數(shù)有限.劉剛[6]等人采用CUDA平臺(tái)加速粒子屬性的更新速度,降低CPU和GPU之間頻繁通信,提高了渲染速度,但粒子運(yùn)動(dòng)模型未考慮邊界碰撞檢測,而這部分需要消耗大量的計(jì)算資源,本文采用CUDA的并行計(jì)算架構(gòu)對(duì)粒子狀態(tài)更新加速并對(duì)池火邊界碰撞檢測進(jìn)行優(yōu)化加速.
綜上,基于數(shù)學(xué)物理模型的方法難以保證池火實(shí)時(shí)模擬,而紋理貼圖技術(shù)受紋理選擇的影響易造成模擬缺乏真實(shí)感.本文提出一種基于改進(jìn)粒子系統(tǒng)的池火災(zāi)實(shí)時(shí)渲染方法,針對(duì)粒子系統(tǒng)模擬火焰過于隨機(jī)的缺點(diǎn),綜合文獻(xiàn)[1,2]構(gòu)建池火數(shù)學(xué)模型(考慮了環(huán)境影響因素),借鑒文獻(xiàn)[4]思路,將池火數(shù)學(xué)模型融入粒子系統(tǒng),形成了改進(jìn)的粒子系統(tǒng)模型,引入基于自適應(yīng)二叉樹的剖分算法對(duì)燃液碰撞檢測,通過CPU-GPU協(xié)同及GPU并行加速實(shí)現(xiàn)實(shí)時(shí)渲染真實(shí)感的池火災(zāi),本文為池火災(zāi)的模擬提供了新思路,具有實(shí)際應(yīng)用價(jià)值.
在傳統(tǒng)的研究池火災(zāi)模擬分析過程中,形成了很多理論與經(jīng)驗(yàn)的數(shù)據(jù),運(yùn)用池火災(zāi)數(shù)學(xué)模型,模擬池火燃燒速率、火災(zāi)發(fā)生時(shí)的液池半徑、火焰高度、火焰燃燒時(shí)間等物理量隨時(shí)間、距離的變化過程.
Babrauskas在進(jìn)行大規(guī)模池火實(shí)驗(yàn)基礎(chǔ)上,提出了池火的燃燒速率估算公式[1],考慮了液池大小后如公式(1)所示:
mf=mmax[1-exp(-2σβR)]
(1)
其中:mf—可燃液體的質(zhì)量燃燒速率,kg/(m2·s);mmax—可燃液體的最大質(zhì)量燃燒速率(mmax),kg/(m2·s);σ—火焰的吸收衰減系數(shù),(m-1);β—平均光線長度校正系數(shù);R—液池半徑.幾種常見油品的mmax和σβ值如表1所示.
表1 常見燃液的mmax和σβ值Table 1 Value of mmax and σβ of fuel
考慮到液體的部分流出,假設(shè)液體的泄露點(diǎn)為中心呈扁圓柱形的光滑平面上擴(kuò)散,這時(shí)液池半徑R用一下公式計(jì)算:
1)瞬時(shí)泄漏(泄漏時(shí)間不超過30s)時(shí),半徑見公式(2):
(2)
2)連續(xù)泄漏時(shí)半徑如公式(3)所示:
(3)
式中:R—液池半徑,m;M—泄漏的液體量,kg;ρ—液體的密度,kg/m3;g—重力加速度,g=9.8m/s2;t—泄漏時(shí)間,s;部分可燃液體密度:
表2 部分可燃液體密度Table 2 Some fuel density
對(duì)于無邊界阻擋的連續(xù)泄露,隨著液池面積擴(kuò)大燃燒速度加快,當(dāng)燃燒速度等于泄露速度時(shí),液池半徑達(dá)到最大,具體公式(4)如下:
(4)
其中Rmax—液池半徑,(m);Q液體泄漏流量,(km/s);mf液池單位面積燃燒速率, (kg/(m2·s)).
計(jì)算池火高度,通常使用Thomas關(guān)系式,它是以物理原理和實(shí)驗(yàn)量為基礎(chǔ)的[2],公式(5)如下:
(5)
其中:L—火焰高度,(m);R—液池半徑,(m);ρa(bǔ)—空氣密度,ρ0=1.297(kg/m3);g—引力常數(shù),g=9.8m/s2;mf—燃料的燃燒速率, (kg/m2·s).
(6)
公式(6)中,W為剩余燃料的質(zhì)量,kg.
池火災(zāi)在燃燒過程中與傳統(tǒng)火焰燃燒存在一定程度的差異.在使用傳統(tǒng)粒子系統(tǒng)模擬池火災(zāi)燃燒過程基礎(chǔ)上,本文結(jié)合池火災(zāi)模型,融入池火災(zāi)燃燒過程的特點(diǎn),通過對(duì)發(fā)射器發(fā)射面的形狀與面積、發(fā)射器發(fā)射粒子的高度、發(fā)射器發(fā)射粒子的速度變化、火焰的顏色、粒子的初始位置重新定義,并考慮了池火與環(huán)境障礙物碰撞檢測,建立了改進(jìn)的粒子系統(tǒng)模型.
定義1.單個(gè)粒子定義為在實(shí)數(shù)域的一個(gè)s維向量,表示為:
Ps={prop1,prop2,…,propi,…,props|s∈N}
(7)
其中prop1,prop2,…,propi,…,props是粒子的s個(gè)屬性,通常粒子的屬性包括空間位置,粒子大小、形狀、運(yùn)動(dòng)速度和加速度、顏色、亮度、生存周期等.單個(gè)粒子是組成粒子系統(tǒng)的基本元素.
定義2.粒子映射是單個(gè)粒子到正整數(shù)集的關(guān)系映射,每個(gè)粒子都具有唯一的索引,表示為It到ps的映射:
S(t)={It→Ps|It?Z+,s∈N,t∈R+}
(8)
其中,W(i)=Ps表示索引為i的粒子的狀態(tài)和性質(zhì).
定義3.粒子系統(tǒng)是粒子映射集的有限集合,表示為:
F(t)={S(t)|t∈{t0,t1,…,tm}}
(9)
公式(9)中,F(xiàn)為粒子在系統(tǒng)時(shí)刻在t0,t1,…,tm的狀態(tài)集合,S(t0)是初始狀態(tài)下粒子系統(tǒng)狀態(tài)[7].
根據(jù)粒子系統(tǒng)的特點(diǎn),結(jié)合池火災(zāi)模型,建立池火燃燒速率、液池半徑、火焰高度及火焰持續(xù)時(shí)間等物理量與粒子系統(tǒng)渲染池火災(zāi)關(guān)鍵參數(shù)的關(guān)系,形成基于池火災(zāi)的粒子系統(tǒng)模型.
中共中央黨校(國家行政學(xué)院)教授車文輝以《生態(tài)文明視域下的鄉(xiāng)村振興》為題,重點(diǎn)闡述了鄉(xiāng)村振興戰(zhàn)略實(shí)施過程中的生態(tài)文明建設(shè)問題,指出了鄉(xiāng)村建設(shè)、經(jīng)濟(jì)開發(fā)進(jìn)程中忽視生態(tài)、破壞生態(tài)的現(xiàn)象以及帶來的嚴(yán)重后果,提出生態(tài)建設(shè)、生態(tài)保護(hù)是鄉(xiāng)村振興題中應(yīng)有之義,生態(tài)文明好不好決定著鄉(xiāng)村振興的質(zhì)量。
3.2.1 發(fā)射器發(fā)射面的形狀與面積
在池火災(zāi)發(fā)生的時(shí)候,整個(gè)液池都會(huì)持續(xù)的燃燒,此時(shí)火焰是包圍在整個(gè)液池的表面,液池表面的面積和形狀作為發(fā)射器發(fā)射面的形狀和面積約束依據(jù),基于假設(shè)液池周圍沒有狹長縫隙等特殊地形,采用圓柱形液池模擬液池形狀,發(fā)射面面積S為公式(10)所示:
S=πR2+Cs(0≤R≤Rmax)
(10)
其中R為池火災(zāi)模型中液池的半徑,CS液池與周邊環(huán)境發(fā)生碰撞檢測時(shí)所影響液池的面積.
3.2.2 發(fā)射器發(fā)射粒子的高度
發(fā)射器發(fā)射粒子的高度如公式(11)所示:
H=βLmaxβ∈(0,1]
(11)
其中Lmax為當(dāng)液池半徑為R時(shí)通過mmax求得的火焰最大高度值.通過β值的分布函數(shù)計(jì)算火焰在燃池中的高度變化.考慮到火焰的收攏趨勢,即大部分火焰在不受外界干擾的情況下,均向中心收攏且中心點(diǎn)的火焰高度最高,向四周方向高度遞減.本文使用正態(tài)分布函數(shù)來設(shè)定β值,使用正態(tài)分布計(jì)算β,則β值可以使用公式(12)得到:
(12)
其中xp和yp為粒子在初始化點(diǎn)的坐標(biāo)x和y值,λ跟火焰的燃燒時(shí)間有關(guān),y是正態(tài)分布函數(shù).由公式(6)可知,池火繼續(xù)燃燒時(shí)間跟火焰高度的關(guān)系可以使用公式(13)進(jìn)行控制:
λ=1-e-?t
(13)
3.2.3 發(fā)射器發(fā)射粒子的速度變化
池火粒子的運(yùn)動(dòng)與受力分析基于如下假設(shè):
1) 池火粒子可以被視為理想的質(zhì)點(diǎn).
2) 風(fēng)力在整個(gè)模擬過程中保持不變.
3) 池火粒子受到的力僅包括重力、風(fēng)力及空氣阻力的影響(非主要作用力忽略不計(jì)).
根據(jù)流體力學(xué)和空氣動(dòng)力學(xué),池火粒子在空氣中受到空氣阻力的作用,包括牛頓阻力、摩擦力和粘滯力三個(gè)力,計(jì)算空氣阻力的經(jīng)驗(yàn)公式(14)如下[10]:
(14)
其中,S為粒子的投影面積(取1cm2),ρ表示空氣密度(取1.29kg/m3),Cd表示阻力系數(shù)(取0.47),為方便微分方程求解,采用空氣阻力與速度系數(shù)的正比關(guān)系式為公式(15)所示.
F=kv
(15)
其中k為空氣阻力系數(shù)(通過經(jīng)驗(yàn)公式計(jì)算空氣阻力的比例系數(shù)k≈3.03×10-6),v為粒子運(yùn)動(dòng)速度.
根據(jù)牛頓第二定律,分析池火粒子的受力情況和加速度可得公式(16):
ma=-mg-kv
(16)
分量表達(dá)形式:
(17)
通過積分計(jì)算的粒子各個(gè)分量上的速度變化可得:
(18)
為了體現(xiàn)粒子運(yùn)動(dòng)的隨機(jī)性,在初始速度基礎(chǔ)是添加一定的隨機(jī)偏移:
V0=Vinit·rand(0.9,1.1)
(19)
其中Vinit是通過動(dòng)量守恒定理求得的速度近似下限,粒子速度在上升的過程中粒子遵循動(dòng)量守恒原則,粒子的初始速度需要達(dá)到一個(gè)下限的值之后才能運(yùn)動(dòng)到最高點(diǎn),求解空氣阻力做功較復(fù)雜,可以使用近似解來求出空氣阻力做功,具體可由動(dòng)量守恒公式(20)所得.
(20)
綜上,最終加上風(fēng)的效果,粒子的速度變化如公式(21)所示結(jié)果:
V′(t)=V(t)+Vwind
(21)
3.2.4 池火顏色模型
顏色是一個(gè)非常重要的物理屬性,通過建立池火顏色模型來提高池火渲染真實(shí)感,采用線性插值和顏色漸變兩種方式混合來設(shè)定池火粒子的顏色.選擇粒子上升階段總高度的0→α范圍內(nèi)使用顏色的線性插值,設(shè)定α(0,1)值(常用的α值可根據(jù)應(yīng)用渲染需要形成配置策略).在粒子上升總高度的α→1的范圍內(nèi)使用顏色漸變,顏色模型使用RGBA模型,其中R、G、B分別代表紅、綠、藍(lán)分量,A代表透明度.
在粒子上升總高度0→α的范圍內(nèi)線性插值計(jì)算為公式(22):
(22)
在公式(22)中,O(r,g,b)池火最底部,即初始池火粒子時(shí)的顏色值,M(r,g,b)是在火焰高度α處取得的顏色值減去O(r,g,b)得到的顏色的變化范圍,L為粒子根據(jù)位置計(jì)算得到的能上升的最大高度.h為粒子當(dāng)前的高度粒子在上升總高度.α→1的范圍內(nèi)使用顏色漸變,改變A的值從1→0,從而最終消失計(jì)算為公式(23):
(23)
3.2.5 池火粒子初始數(shù)量
池火粒子數(shù)量決定了池火的密度,池火粒子數(shù)量也是影響可視化實(shí)時(shí)性的重要因素,池火粒子數(shù)量過小池火渲染會(huì)失真,本文采用公式(24)來確定池火粒子的數(shù)量:
(24)
其中meannum是屏幕單位區(qū)域內(nèi)產(chǎn)生單位粒子數(shù)目的平均值,方差為varnum,Area為顯示區(qū)域, 為粒子大小.
3.2.6 池火粒子初始位置
池火粒子的初始位置決定了粒子表現(xiàn)火焰的密度分布,經(jīng)典粒子系統(tǒng)中,粒子位置初始化的方法具有普遍性而不具有針對(duì)性,針對(duì)池火焰的邊界粒子稀疏,中心密集的特點(diǎn),并且成正態(tài)分布,本文采用高斯分布(正態(tài)分布)與隨機(jī)數(shù)相結(jié)合的方法確定新粒子的初始位置.設(shè)粒子的初始位置為
I(t0)=Position={Xi(t0),Yi(t0),Zi(t0)},1≤I≤numb0
粒子的分布,燃點(diǎn)位于XOZ平面,從該平面向上燃燒(y正方向),R′為燃燒區(qū)域半徑,則火焰粒子的分布可用公式(25)表示:
(25)
池火與環(huán)境障礙物的碰撞檢測需要檢測粒子在運(yùn)動(dòng)過程中是否與環(huán)境障礙物發(fā)生碰撞,該問題可以轉(zhuǎn)化為粒子在時(shí)間間隔內(nèi)所經(jīng)過的路徑是否與環(huán)境障礙物發(fā)生碰撞.由于時(shí)間間隔比較短,因此粒子的運(yùn)動(dòng)軌跡可近似為一條線段.因此將粒子與環(huán)境障礙物的碰撞檢測問題轉(zhuǎn)化為線段與三角面片的相交檢測問題.假設(shè)場景有M個(gè)三角面片,N個(gè)粒子,其時(shí)間復(fù)雜度為O(M×N).
圖1 池火與環(huán)境障礙物碰撞檢測流程圖Fig.1 Collision test between pool fire and environmental obstacle
為了提高碰撞檢測算法的效率,本文根據(jù)粒子與環(huán)境障礙物的空間相關(guān)性,采用ABT空間剖分算法和層次包圍盒技術(shù),ABT空間剖分算法在分割平面(由一個(gè)考慮了多種不同參數(shù)如分割面的數(shù)量和位置等的評(píng)分系統(tǒng)決定)的選擇上更科學(xué)、合理,從而減少需要檢測的三角面數(shù),節(jié)省內(nèi)存空間,提高算法的效率.算法流程如圖1所示.
在改進(jìn)的粒子系統(tǒng)模型的基礎(chǔ)上,本文采用基于GPU的粒子系統(tǒng)實(shí)現(xiàn)模型,利用CPU-GPU協(xié)同及GPU并行加速滿足實(shí)時(shí)性渲染的要求.
本文圍繞粒子系統(tǒng)構(gòu)造過程,即粒子產(chǎn)生、粒子屬性更新、粒子銷毀和粒子繪制4個(gè)階段[8],提出基于GPU的改進(jìn)粒子系統(tǒng)模型,如圖2所示,通過CPU和GPU協(xié)同方式實(shí)現(xiàn)池火實(shí)時(shí)渲染,能夠減少CPU和GPU之間的頻繁通信及系統(tǒng)內(nèi)存和顯存間的頻繁數(shù)據(jù)傳送,降低CPU負(fù)擔(dān)[9].在CPU端主要任務(wù)包括粒子系統(tǒng)初始化參數(shù)設(shè)置,建立基于池火災(zāi)的粒子系統(tǒng)模型,粒子產(chǎn)生及銷毀.鑒于GPU的高并行性和可編程性,將池火粒子屬性更新、池火與環(huán)境障礙物的碰撞檢測和池火粒子繪制在GPU端實(shí)現(xiàn),以滿足實(shí)時(shí)性渲染要求.
為了提高池火實(shí)時(shí)渲染效率,并結(jié)合基于GPU的改進(jìn)粒子系統(tǒng)模型,本文提出了具體的基于GPU的算法實(shí)現(xiàn)框架,減少CPU和GPU的通信,實(shí)現(xiàn)GPU通用計(jì)算和渲染的結(jié)合,達(dá)到實(shí)時(shí)渲染池火的目的.如圖3所示,在CPU端主要實(shí)現(xiàn)初始化粒子系統(tǒng)參數(shù)、分配存儲(chǔ)空間(標(biāo)量/矢量等)及圍繞交互應(yīng)用的粒子系統(tǒng)邏輯控制工作.通過將粒子初始數(shù)據(jù)傳輸至GPU顯存后,由GPU端完成重要的計(jì)算和繪制工作.在GPU端主要實(shí)現(xiàn)基于池火災(zāi)的粒子系統(tǒng)模型的計(jì)算、迭代更新池火粒子運(yùn)行狀態(tài)、池火邊界碰撞檢測以及池火繪制工作.將計(jì)算的頂點(diǎn)數(shù)據(jù)直接用于GPU的渲染,利用CUDA架構(gòu)的并行計(jì)算能力,將每個(gè)粒子映射到GPU處理器的每個(gè)線程,將粒子屬性數(shù)據(jù)存放在全局存儲(chǔ)器,每個(gè)線程塊中的各個(gè)線程唯一對(duì)應(yīng)于全局存儲(chǔ)器中對(duì)應(yīng)的一個(gè)粒子屬性數(shù)據(jù),不同線程塊中的不同線程讀取顯存中全局存儲(chǔ)器中對(duì)應(yīng)粒子的屬性數(shù)據(jù)進(jìn)行更新計(jì)算[10].通過著色器紋理、頂點(diǎn)、光源等數(shù)據(jù)整合處理后進(jìn)行粒子的繪制.
圖2 基于GPU的改進(jìn)粒子系統(tǒng)模型圖Fig.2 GPU-based improved particle system model
本實(shí)驗(yàn)硬件配置:CPU Intel Core(TM)i3-4160 3.6GHz,四核處理器,內(nèi)存為8GB,顯卡型號(hào)為NVIDIA GeForce 9600 GT,顯存為1GB.
軟件平臺(tái)為Windows 7旗艦版64位操作系統(tǒng),開發(fā)語言為C++,開發(fā)工具為Visual Studio 2013,OpenGL 4.3版本,OSG3.2.3版本,NVIDIA驅(qū)動(dòng)版本號(hào)為174.16.
圖4給出了采用本文池火災(zāi)實(shí)時(shí)渲染方法的效果圖,采用實(shí)驗(yàn)數(shù)據(jù)(保留一幀的截圖),當(dāng)前池火燃燒速率為0.39(kg/m2·s)、燃燒物質(zhì)為煤油、池火半徑為17.21m、池火高度12.32m.經(jīng)典粒子系統(tǒng)模擬火焰的過程,粒子的隨機(jī)運(yùn)動(dòng)一定程度上影響了火焰的真實(shí)感,本文通過引入池火災(zāi)模型作為粒子系統(tǒng)構(gòu)造的基礎(chǔ),通過建立基于池火災(zāi)的粒子系統(tǒng)模型對(duì)粒子運(yùn)行狀態(tài)控制,更貼近池火應(yīng)用場景.本文基于GPU的粒子系統(tǒng)實(shí)現(xiàn)模型,確保池火實(shí)時(shí)渲染效率,當(dāng)前渲染的頂點(diǎn)數(shù)1.8M,三角形面數(shù)1.6M,幀率達(dá)到53.6fps.
圖3 基于GPU的算法實(shí)現(xiàn)框架圖Fig.3 GPU-based algorithm implementation framework
圖4 池火災(zāi)模擬效果圖Fig.4 Pool fire simulation results
圖5 采用文獻(xiàn)[5]方法模擬出池火災(zāi)效果圖Fig.5 Pool fire effect via literature[5]
圖6 改進(jìn)粒子系統(tǒng)的池火效果圖Fig.6 Improved particle system pool fire effect
圖5是采用文獻(xiàn)[5]方法模擬池火災(zāi)效果圖,由于未考慮環(huán)境因素且影響火焰模擬效果的物理參數(shù)有限,火焰效果粗糙.圖6是采用改進(jìn)的粒子系統(tǒng)模型后池火災(zāi)效果圖,本文構(gòu)建的池火災(zāi)模型引入池火燃燒過程的關(guān)鍵物理量,并考慮環(huán)境因素影響如風(fēng)力對(duì)池火的影響,在燃燒過程中出現(xiàn)火焰聚攏效應(yīng),火焰真實(shí)感增強(qiáng),池火的形態(tài)會(huì)隨風(fēng)力變化而實(shí)時(shí)渲染.
圖7是采用文獻(xiàn)[4]算法模擬池火邊界碰撞效果圖,采用層次包圍盒算法來進(jìn)行碰撞檢測,圖8為采用本文算法模擬池火邊界碰撞效果圖,由于采用了ABT空間剖分算法和層次包圍盒算法相結(jié)合方式,可有效進(jìn)行邊界檢測并作出碰撞反應(yīng).
圖7 文獻(xiàn)[4]算法的池火邊界碰撞效果圖Fig.7 Boundary collision effect via literature[4]
圖8 本文算法的池火邊界碰撞效果圖Fig.8 Boundary collision effectvia our method
在文獻(xiàn)[6,8]僅使用CUDA架構(gòu)加速粒子屬性的更新,本文在GPU端實(shí)現(xiàn)迭代更新池火粒子運(yùn)行狀態(tài)和計(jì)算池火邊界碰撞檢測.分別用35000、400000個(gè)池火粒子來驗(yàn)證本文算法同使用 CPU 計(jì)算在性能上的差異,渲染速度結(jié)果如表3所示.
表3 渲染速度對(duì)比圖 Table 3 Rendering speed comparison
從表3可以看出,在幀率和每幀繪制的三角面片數(shù)量上,本文提出的池火渲染方法比傳統(tǒng)CPU實(shí)現(xiàn)池火渲染效果更好.在渲染35000個(gè)池火粒子時(shí)傳統(tǒng)CPU平臺(tái)下可達(dá)到平均 30.4幀/秒,基本滿足實(shí)時(shí)交互能力.但當(dāng)池火粒子數(shù)增加至400000個(gè)時(shí),傳統(tǒng)CPU平臺(tái)下的 FPS 減少到了平均14.1幀/秒.而采用本文的算法在CUDA平臺(tái)下仍然可以達(dá)到平均 64.4幀/秒,計(jì)算速度是傳統(tǒng)CPU平臺(tái)的4倍多.因此,與傳統(tǒng)CPU實(shí)現(xiàn)的算法相比較,本文提出的算法CPU的占用率大大降低,降低CPU計(jì)算負(fù)載,滿足實(shí)時(shí)性的要求.
本文提出一種基于改進(jìn)粒子系統(tǒng)的池火災(zāi)實(shí)時(shí)渲染方法,將池火災(zāi)數(shù)學(xué)模型融入到粒子系統(tǒng),建立了改進(jìn)的粒子系統(tǒng)模型,并綜合考慮外力環(huán)境因素及池火邊界的碰撞檢測.采用基于GPU的粒子系統(tǒng)實(shí)現(xiàn)模型,利用GPU強(qiáng)大的并行計(jì)算能力對(duì)粒子狀態(tài)更新加速,并使用基于自適應(yīng)二叉樹的剖分算法對(duì)池火邊界碰撞檢測進(jìn)行優(yōu)化實(shí)現(xiàn)加速,有效減少了內(nèi)存和顯存之間的數(shù)據(jù)傳輸,從而實(shí)現(xiàn)池火災(zāi)實(shí)時(shí)渲染過程優(yōu)化,使性能得到顯著提高,解決了池火災(zāi)模擬難以實(shí)現(xiàn)實(shí)時(shí)性和真實(shí)感的問題.