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

?

基于攝像機(jī)位置的大規(guī)模粒子云繪制加速算法

2012-03-19 02:02葛奇鵬
關(guān)鍵詞:粒子系統(tǒng)視景云團(tuán)

葛奇鵬

(武漢717 研究所,湖北武漢430000)

0 引言

無論在娛樂、教學(xué)、軍事還是輔助設(shè)計(jì)領(lǐng)域,只要涉及天空仿真,便不可避免的要遇到云團(tuán)繪制問題,粒子系統(tǒng)很好的解決了這類不規(guī)則模糊物體的仿真問題,但是由于粒子系統(tǒng)本身具有大量冗余三角網(wǎng)格,即使在這個顯卡處理能力日新月異的年代,粒子系統(tǒng)的效率依然是個巨大的難題[1]。

前人在粒子系統(tǒng)的加速及優(yōu)化上做過很多工作,被廣泛使用的技術(shù)有BSP 樹技術(shù)、shader 技術(shù)等,但是這些技術(shù)都無法解決數(shù)據(jù)冗余問題,計(jì)算機(jī)依然在繪制大量對視覺效果無增益的粒子,實(shí)時繪制大規(guī)模云團(tuán)依然是一大難題[2]。

眾所周知,人在觀察時,對遠(yuǎn)處物體的精細(xì)度要求低于近處物體。如果能夠基于攝像機(jī)對遠(yuǎn)處物體進(jìn)行細(xì)節(jié)降階處理,不僅于顯示效果損傷較小,還能夠大大降低需要繪制的粒子數(shù)量,從而達(dá)到提高繪制速度的目的。本文將就這個問題進(jìn)行一些探討,并提出了一個可行的解決方案,達(dá)到了提高繪制速度的目的。

1 粒子云計(jì)算與繪制

為了解決火焰、水波、云彩等不規(guī)則模糊物體的模擬問題,Reeves 于1983年提出了粒子系統(tǒng)。粒子系統(tǒng)是由大量粒子結(jié)合在一起來表現(xiàn)模糊物體的系統(tǒng),其基本原理為:將模糊物體看作由大量不規(guī)則的、運(yùn)動的、隨機(jī)分布的粒子組成的粒子集。不同的粒子雖然屬性、形狀、物理化學(xué)性質(zhì)、運(yùn)動軌跡不同,但是他們都具有通用的屬性,在計(jì)算機(jī)里可以很方便的將其定義為粒子類,包含自身的外形、空間位置、紋理等等信息,他們不斷運(yùn)動,不斷改變形態(tài),合力表現(xiàn)景物的外部特征[3]。

三維云團(tuán)的模擬一般基于粒子系統(tǒng)?;舅枷胧钦J(rèn)為一個粒子為一個球形物體,粒子密度服從高斯分布。一個粒子的屬性包括:中心位置、半徑、密度、顏色等[4],通過分型算法可隨機(jī)生成各式各樣的云粒子點(diǎn)集,一般存儲在一個.mesh 文件中供調(diào)用。

本文例子中的云粒子類如下所示:

class SkyCloudParticle

{

…/ /省略了方法

protected:

float _rRadius;

float _rTransparency;

Vec3f _vecPosition;

Vec4f _vecBaseColor;

std::vector<Vec4f > _vecLitColors;

Vec3f _vecEye;

};

由于粒子系統(tǒng)極為龐大,成千上萬的粒子往往不可避免,雖然計(jì)算的時候會將粒子模型化、具體化,但是真正繪制的時候,往往用貼附粒子紋理的公告板代替。所謂公告板,就是一個始終朝向攝像機(jī)的有紋理的正方形面,相比于至少6個面的球體[5],公告板對視覺效果的影響很低,但是性能極大地改善。本文采用最簡易的公告板進(jìn)行粒子的繪制,效果如圖1所示。

圖1 使用公告板粒子渲染的大規(guī)模云團(tuán)

本文例子由OpenGL 實(shí)現(xiàn),另繪制了山巒、天空盒、海水等其他物體以增強(qiáng)可視效果。

2 基于攝像機(jī)的分層加速

粒子系統(tǒng)的特點(diǎn)是粒子繁多,但是每個粒子的結(jié)構(gòu)都相對簡單,可削減性強(qiáng),對于較遠(yuǎn)的云團(tuán),減少一定數(shù)量的粒子是可以接受的。如果2 個粒子之間距離為L 時人眼可以感覺出差異,當(dāng)距離縮減為L/2 以下時,便可用一個粒子表示這2 個粒子,我們認(rèn)為云團(tuán)整體變成1/2 大小時,云團(tuán)的粒子數(shù)降低一半是不影響視覺效果的。

由此可推出公式:

M 為減少粒子的倍率;D 為粒子距離攝像頭的距離;?,β 皆為與視景體相關(guān)的參數(shù);F為相關(guān)函數(shù)。

基于攝像機(jī)的場景分層如圖2所示。在圖2 的視景體下,可以將裁減后的場景分為3個部分,紅色部分云團(tuán)使用全體粒子進(jìn)行繪制,藍(lán)色部分使用1/2 粒子進(jìn)行繪制,灰色部分使用1/4 粒子進(jìn)行繪制。

圖2 基于攝像機(jī)的場景分層

這種不規(guī)則分層方式消除了相當(dāng)數(shù)量粒子,而由于人眼的觀察特性,這些粒子的缺失是不影響視覺效果的,在加速的同時無畫面質(zhì)量的降低。

3 基于BSP 樹的算法實(shí)現(xiàn)及優(yōu)化

一種經(jīng)典的云團(tuán)繪制算法是利用BSP 樹以AABB 包圍盒為基礎(chǔ)將云團(tuán)進(jìn)行排序[6]。BSP 樹可以有效的加速遍歷,當(dāng)某一個分枝被檢測到不與視景體相交,則其下的所有子樹都無需繼續(xù)遍歷,用這種方法判斷哪些云團(tuán)需要繪制,哪些不需要,這樣可以節(jié)約大量計(jì)算時間,不僅如此,在本文的算法中,涉及到了云團(tuán)與3 部分視景體的碰撞檢測,同樣要使用到BSP 樹進(jìn)行加速。

3.1 使用BSP 樹對粒子繪制進(jìn)行加速

首先用AABB 包圍盒將云團(tuán)分割成以云團(tuán)為最小單位的BSP 樹,然后根據(jù)視景體進(jìn)行判斷,如圖3所示。

圖3 基于AABB 包圍盒的云團(tuán)BSP 組織

判斷哪些云團(tuán)需要被繪制的方法如下:

1)以一個AABB 包圍盒包圍視景體,遍歷BSP 樹進(jìn)行碰撞檢測,裁減掉不相交的BSP 分枝[7]。

2)用視景體遍歷剩下的BSP 樹作碰撞檢測,裁減掉不相交BSP 分枝,最后得到需要繪制的云團(tuán)列表[8]。

3.2 使用BSP 樹進(jìn)行分層判斷加速

判斷云團(tuán)階層的方式跟判斷哪些云團(tuán)需要被繪制的方法類似,設(shè)置3 個列表,分別存放一階、二階、三階云團(tuán)的代號。從一階視景體開始,將其用AABB 包圍盒包裹,與已確定要顯示的云團(tuán)BSP 樹進(jìn)行碰撞檢測,得到結(jié)果之后,再用實(shí)際視景體進(jìn)行碰撞檢測,得到一階云團(tuán),將這些云團(tuán)放入一階云團(tuán)列表,并從云團(tuán)顯示總表中移出。用同樣的方式將剩下的顯示總表與二階、三階視景體繼續(xù)進(jìn)行碰撞檢測。最后依次以繪制100% 數(shù)量粒子、50%數(shù)量粒子、25% 數(shù)量粒子的方式對一階、二階、三階云團(tuán)表進(jìn)行計(jì)算以及渲染。

4 本算法的加速效能計(jì)算

以本文程序?yàn)槔?,視景體投影為一個頂角為45°的等腰三角形。當(dāng)云團(tuán)足夠多時認(rèn)為一階、二階、三階中繪制的云團(tuán)與視景體面積成正比,則最終繪制的粒子數(shù)與未使用算法之前的比為:

可見減少的粒子數(shù)跟三階的分割比例有很大關(guān)系。當(dāng)一階越大,顯示效果越好,但繪制所需時間越多;反之當(dāng)三階越大,繪制速度極大提高,但繪制越粗糙。只要確保L1小于視景體長度的1/3,這種算法就能將繪制速度提高2 倍以上。

在本例中,多次試驗(yàn)得到結(jié)果為:不使用加速算法的場景繪制漫游平均幀數(shù)為27 幀,而使用之后可以提高到49 幀。

5 結(jié)束語

云團(tuán)的繪制是場景仿真中不可缺少的部分,從以往的經(jīng)驗(yàn)可得,云團(tuán)的繪制由于其固有屬性,占據(jù)了天空繪制60%以上的資源[9],提高云團(tuán)繪制速度即可提高天空場景的仿真速度。

本文的分階思想簡單明了,實(shí)踐證明提高了繪制速度,但是尚有可繼續(xù)挖掘的地方。本文只進(jìn)行了三階分階,如采用更加精細(xì)的分割,對視覺效果的影響可能會更低,剔除的無需繪制的粒子可能更多,但是計(jì)算量可能會增加,編程復(fù)雜度也可能會相應(yīng)增加,需要大量的研究和試驗(yàn),但卻不失為一個可以研究和探尋的方向[10]。

[1]陳華杰,余小清,唐經(jīng)洲,等.基于粒子系統(tǒng)與LOD 技術(shù)的實(shí)時雨雪效果模擬[J].計(jì)算機(jī)仿真,2008(4):194-197

[2]丁紀(jì)云,陳利平,李思昆.基于OpenGL 的煙花動態(tài)模擬方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002,28(4):240-241

[3]王功明,郭新宇,趙春江,等.粒子系統(tǒng)的優(yōu)化技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2008,25(2):495-497

[4]龔琳,顧大權(quán),范茵,等.三維云場景的模擬[J].解放軍理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,7(5):496-500

[5]郭佳佳.基于粒子系統(tǒng)的自然景物模擬研究[J].電腦知識與技術(shù),2009(4):1006-1008

[6]馬登武,葉文.虛擬現(xiàn)實(shí)技術(shù)及其在飛行仿真中的應(yīng)用[M].北京:清華大學(xué)出版社,2005:76-176

[7]胡英芳,黃強(qiáng)強(qiáng),江順亮.基于OpenGL 的離散粒子系統(tǒng)顯示方法及其改進(jìn)[J].計(jì)算機(jī)與現(xiàn)代化,2011(2):53-57

[8]汪繼文,陸和軍,張妍妍.基于粒子系統(tǒng)的水滴濺落模擬[J].科學(xué)技術(shù)與工程,2010(6):1547-1550

[9]Andersen S,Andersen L.Analysis of spatial interpolation inthe material-point method[J].Computers and Structures,2010 (6):506-518

[10]Fang Jiannong,Parriaux Aurele,Rentschler Martin,et al.Improved SPH methods for simulating free surface flows ofviscous fluids[J].Applied Numerical Mathematics,2009(3):251-271

猜你喜歡
粒子系統(tǒng)視景云團(tuán)
巴蜀少年齊上一堂云團(tuán)課
虛擬現(xiàn)實(shí)技術(shù)在游戲設(shè)計(jì)中的應(yīng)用及研究
利用GPU加速的粒子系統(tǒng)全球流場可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
面陣探測下的污染云團(tuán)紅外光譜仿真?
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
葡萄牙現(xiàn)明亮橘色云團(tuán)似握著火球的拳頭
全回轉(zhuǎn)拖輪運(yùn)動建模與視景仿真
基于Vortex與Vega Prime的車輛模擬器動力學(xué)與視景仿真
基于粒子系統(tǒng)的建模與仿真綜述
GPU支持下基于粒子系統(tǒng)編輯器的特效技術(shù)研究