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

?

基于粒子系統(tǒng)的實(shí)時(shí)模糊場(chǎng)景實(shí)現(xiàn)

2011-05-08 02:09顧大曄
電子科技 2011年8期
關(guān)鍵詞:粒子系統(tǒng)坦克像素

顧大曄

(西安電子科技大學(xué)電子工程學(xué)院,陜西西安 710071)

從 Reeves在 1983年首先提出粒子系統(tǒng)的概念到現(xiàn)在,基于粒子系統(tǒng)的圖形生成算法,在計(jì)算機(jī)圖形學(xué)的發(fā)展中做出了較大貢獻(xiàn)[1]。尤其在不規(guī)則模糊景物生成方面,粒子系統(tǒng)的最大優(yōu)點(diǎn)就是,采用單個(gè)粒子形式的基本圖像實(shí)體的大量組合來(lái)描述不規(guī)則景物,由于可以對(duì)每個(gè)粒子進(jìn)行有效控制,所以較易實(shí)現(xiàn)雨、雪、煙、霧等模糊的自然場(chǎng)景,而這些是傳統(tǒng)計(jì)算機(jī)圖形學(xué)難以構(gòu)造的復(fù)雜形體,同時(shí)具有較強(qiáng)的真實(shí)感和實(shí)時(shí)性。

本文旨在完成DSP平臺(tái)下的場(chǎng)景模擬,由于硬件的限制,無(wú)法完成較復(fù)雜的算法運(yùn)算,以及使用時(shí)下很多流行的圖像API獲得更好的效果。本文選用了兩個(gè)典型的不規(guī)則場(chǎng)景,飛機(jī)干擾彈和坦克干擾彈爆炸進(jìn)行討論,重點(diǎn)介紹一些既快又能較真實(shí)地實(shí)現(xiàn)場(chǎng)景的方法。本文在 PC機(jī)上,使用 Watcom C進(jìn)行了C語(yǔ)言編程實(shí)現(xiàn)。

1 粒子系統(tǒng)簡(jiǎn)述

粒子系統(tǒng)是由大量粒子組成,每個(gè)粒子都是一個(gè)獨(dú)立的圖元實(shí)體。它具有一定的屬性,這些屬性一般有速度、位置、加速度、灰度、存活時(shí)間等,對(duì)于不同的系統(tǒng),粒子還有其自己相應(yīng)的屬性[2]。

粒子系統(tǒng)中每一個(gè)粒子都要經(jīng)歷產(chǎn)生、發(fā)展、運(yùn)動(dòng)到消亡的過(guò)程。粒子系統(tǒng)使用大量粒子按一定規(guī)則運(yùn)動(dòng)模擬自然場(chǎng)景,它所要解決的問(wèn)題基本上有:粒子怎樣生成,即粒子初始化的問(wèn)題;粒子如何變化,也就是粒子的運(yùn)動(dòng)問(wèn)題;運(yùn)動(dòng)過(guò)程中的粒子如何退出,粒子的消亡問(wèn)題。總結(jié)起來(lái),粒子系統(tǒng)的內(nèi)部運(yùn)動(dòng)可由下面的框圖說(shuō)明,如圖 1所示。

圖1 粒子系統(tǒng)結(jié)構(gòu)框圖

2 飛機(jī)紅外干擾彈的生成

(1)觀(guān)察場(chǎng)景。飛機(jī)通過(guò)發(fā)射紅外干擾彈來(lái)干擾敵方導(dǎo)彈的導(dǎo)引頭。它的作用原理不是本文討論范圍,主要觀(guān)察紅外干擾彈從發(fā)射開(kāi)始的運(yùn)動(dòng)場(chǎng)景。在現(xiàn)實(shí)場(chǎng)景中,紅外干擾彈從飛機(jī)上發(fā)射,剛開(kāi)始是一個(gè)快速燃燒的燃燒體。燃燒體燃燒時(shí)候很亮,而且產(chǎn)生濃煙。此外,燃燒體從飛機(jī)上釋放,具有一定向前的速度,而且受重力影響不斷下落。同時(shí),燃燒體和其尾部拖起的煙隨著時(shí)間不斷消失。

(2)建模詳述。根據(jù)觀(guān)察,可以用粒子系統(tǒng)建模。模擬干擾彈的運(yùn)動(dòng)要使用大量粒子。這些粒子可分為兩類(lèi):一類(lèi)是組成燃燒體的粒子;一類(lèi)是組成尾煙的粒子。這兩類(lèi)粒子并不是不同的粒子,而是粒子運(yùn)動(dòng)過(guò)程中的兩個(gè)部分。當(dāng)粒子剛生成時(shí),其產(chǎn)生于干擾彈的頭部,是組成燃燒體的粒子。組成燃燒體粒子的最重要屬性是像素值最大。這是模擬干擾彈頭部亮度高的關(guān)鍵。為模擬燃燒過(guò)程,粒子的像素從生成后逐漸降低。粒子群具有一定的初速度,同時(shí)又由于重力的影響,粒子群又具有向下的加速度。

(3)根據(jù)步驟(2)中的詳述,可以進(jìn)行粒子的運(yùn)動(dòng)建模:

首先可得粒子運(yùn)動(dòng)的方程為

(4)粒子系統(tǒng)建模。運(yùn)動(dòng)方程建立后,可以確定粒子系統(tǒng)的初始化,粒子初始化所要求的屬性。此干擾彈的形成可用一個(gè)粒子系統(tǒng)來(lái)建模。粒子的結(jié)構(gòu)體可定義如下:

(5)貼圖處理。在此之前定義的粒子系統(tǒng)中每個(gè)粒子只是確定了那個(gè)粒子當(dāng)前位置的像素以及速度的變化,如果僅把這樣的粒子繪制出來(lái),得到的只是一些離散像素點(diǎn)的運(yùn)動(dòng),沒(méi)有任何真實(shí)感和模糊感。因此采用貼圖的方法來(lái)解決這個(gè)問(wèn)題。采用簡(jiǎn)單的貼圖方法:取貼圖大小為 4×4,設(shè)粒子位置為(x,y),則以粒子為中心給出 4×4區(qū)域大小的像素值。計(jì)算方法為

其中,P(i)為粒子像素值;Ptex為貼圖中像素值;(x0,y0)為粒子位置。算出閾值為 255。

(6)代碼實(shí)現(xiàn)。飛機(jī)干擾彈場(chǎng)景計(jì)算實(shí)現(xiàn)由以下幾個(gè)函數(shù)實(shí)現(xiàn):void Particle SysInit(PARTICLESYS * particlesys)進(jìn)行粒子系統(tǒng)的初始化;void SysMotion-Update(PARTICLESYS * particlesys,short timedelta)完成粒子系統(tǒng)的運(yùn)動(dòng)更新;void Particle Sys Update(PARTICLESYS* particlesys,short timedelta)完成粒子系統(tǒng)屬性的更新,主要是活動(dòng)粒子數(shù)的更新;char Particle Update(PARTICLES*particle,short timedelta)完成粒子屬性的更新。

3 坦克干擾彈的生成

(1)觀(guān)察場(chǎng)景。坦克干擾彈不同于飛機(jī)干擾彈。坦克干擾彈發(fā)射后通過(guò)在坦克前方爆炸形成霧墻來(lái)干擾敵方。觀(guān)察其爆炸過(guò)程可以分成 3個(gè)階段。第一個(gè)階段是燃燒占主導(dǎo)地位,此時(shí)的干擾彈快速燃燒,形成很亮很小的圓形區(qū)域;第二階段是爆炸為主導(dǎo),此時(shí)的干擾彈內(nèi)部膨脹,快速向四周擴(kuò)散,形成很大的煙霧區(qū)域;第三階段主要是爆炸動(dòng)作完成,煙霧慢慢消散的階段。前兩個(gè)階段都為快速突變實(shí)現(xiàn)階段,后一個(gè)為慢速漸變階段。

(2)建模詳述。要用粒子系統(tǒng)模擬(1)中觀(guān)察到的場(chǎng)景,需要大量的粒子。在第一階段,產(chǎn)生的粒子一開(kāi)始要具有最大的像素值,但像素衰減很快,具有一定大小向任意方向的加速度,模擬干擾彈的快速燃燒,形成小的亮斑。組成第二階段的粒子由于要模擬干擾彈從小到大的快速膨脹,所以此時(shí)的粒子一產(chǎn)生就要具有很大的向任意方向加速度,并且在較短的時(shí)間內(nèi)降低為 0。由于形成的霧墻消散慢,因此,這個(gè)階段的粒子的像素衰減慢。第三階段,在此過(guò)程中的粒子只要具有較小的運(yùn)動(dòng)速度,一定的像素衰減,而沒(méi)有加速運(yùn)動(dòng)。

(3)運(yùn)動(dòng)建模。根據(jù)步驟(1)的觀(guān)察和步驟(2)中的分析,將坦克干擾彈的運(yùn)動(dòng)建模分為 3個(gè)階段。

第一個(gè)階段:亮斑形成和慢慢消散階段。此階段在此階段中粒子運(yùn)動(dòng)方程為

ax(t),ay(t)先是在一定范圍內(nèi)生成一個(gè)隨機(jī)值,經(jīng)過(guò)短時(shí)間變?yōu)檩^小。vp(t)先是保持較小的值,然后變?yōu)橐粋€(gè)較大的值,保證亮斑很快消失。

第二階段:迅速爆炸和形成霧墻階段。此階段的粒子運(yùn)動(dòng)方程為

ax(t),ay(t)先是在一個(gè)大范圍內(nèi)生成的隨機(jī)值,經(jīng)過(guò)一定時(shí)間,爆炸完成后變?yōu)榱恪?/p>

第三階段:爆炸完成,煙霧慢慢擴(kuò)散的過(guò)程。此階段的運(yùn)動(dòng)方程為

(4)粒子系統(tǒng)的建模。由于此爆炸分為 3個(gè)階段,而且實(shí)現(xiàn)需要大量的粒子。如果使用一個(gè)粒子系統(tǒng)則無(wú)法很好地控制爆炸過(guò)程,而且會(huì)造成大量粒子貼圖的重合,不僅不能很好地表達(dá)場(chǎng)景,而且使得運(yùn)算量加大。為解決上述問(wèn)題,采用多粒子系統(tǒng)的方案。具體實(shí)現(xiàn)如下,針對(duì)第一階段,構(gòu)建一個(gè)粒子系統(tǒng),完成第一階段后,由第一個(gè)粒子系統(tǒng)觸發(fā) N個(gè)粒子系統(tǒng),而第一個(gè)系統(tǒng)死亡。觸發(fā)方式是由第一個(gè)粒子系統(tǒng)中選用 N個(gè)向不同方向運(yùn)動(dòng)的粒子,根據(jù)這N個(gè)粒子的不同屬性來(lái)生成具有不同初始值的 N個(gè)粒子系統(tǒng)。然后由這 N個(gè)粒子系統(tǒng)完成第二階段。進(jìn)入第三階段,這 N個(gè)粒子系統(tǒng)開(kāi)始衰減,直到死亡。粒子與粒子系統(tǒng)的結(jié)構(gòu)體定義飛機(jī)干擾彈的基本相同,但加入了初始化標(biāo)志和觸發(fā)粒子系統(tǒng)的補(bǔ)償速度。

(5)貼圖處理。針對(duì)坦克干擾彈的分階段爆炸,采用分階段貼圖。在第一階段,由于爆炸范圍小,使用小貼圖,在第二和第三階段,使用的是大貼圖。設(shè)貼圖的大小為 m×n,具體貼圖方式如下

其中:P(i)為粒子像素值;Ptex為貼圖中像素值;(x0,y0)為粒子位置算出,閾值為 255;α為像素衰減因子。

(6)代碼實(shí)現(xiàn)。坦克干擾彈的代碼實(shí)現(xiàn)所需的函數(shù)與飛機(jī)干擾彈的函數(shù)基本相同,只是由于使用二級(jí)粒子系統(tǒng),所以每個(gè)函數(shù)都是一對(duì),針對(duì)不同的粒子系統(tǒng)完成不同的功能。

4 場(chǎng)景的實(shí)現(xiàn)效果

以下是在 PC機(jī)上,使用WATCOM C編譯器編譯生成的幾幀圖像。

5 結(jié)束語(yǔ)

從場(chǎng)景觀(guān)察,運(yùn)動(dòng)建模、粒子建模等幾方面介紹了粒子系統(tǒng)實(shí)現(xiàn)要求場(chǎng)景的步驟。這也是使用粒子系統(tǒng)模擬模糊、不規(guī)則場(chǎng)景的一般步驟。從圖 4可以看出粒子系統(tǒng)很好地完成了干擾彈爆炸的模擬。但文中所要求平臺(tái)是在嵌入式 DSP平臺(tái),而非實(shí)現(xiàn)上述圖像幀的 PC平臺(tái)。因此,在移植過(guò)程中,要考慮到算法的復(fù)雜度、粒子數(shù)、貼圖大小等開(kāi)銷(xiāo)因素。

[1]高穎,金巖通,楊永強(qiáng),等.虛擬視景系統(tǒng)中粒子系統(tǒng)的接口設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2006,18(2):384-386.

[2]EDWARD A.交互式計(jì)算機(jī)圖形學(xué)——基于OpenGL的自頂向下的方法[M].5版.張榮華,譯.北京:電子工業(yè)出版社,2009.

[3]彭群生,鮑虎軍,金小剛.計(jì)算機(jī)真實(shí)感圖形的算法基礎(chǔ)[M].北京:科學(xué)出版社,1999.

[4]王兆紅.基于云模型與粒子系統(tǒng)自然雨模擬[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(12):102-104.

[5]李松維,周曉光,王潤(rùn)杰,等.基于粒子系統(tǒng)煙霧的模擬[J].計(jì)算機(jī)仿真,2007,24(9):199-201,231.

猜你喜歡
粒子系統(tǒng)坦克像素
第一輛現(xiàn)代坦克的“前世今生”
像素前線(xiàn)之“幻影”2000
利用GPU加速的粒子系統(tǒng)全球流場(chǎng)可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
T-90 坦克
“像素”仙人掌
éVOLUTIONDIGAE Style de vie tactile
UE 4粒子系統(tǒng)與外部數(shù)據(jù)通信研究
超級(jí)坦克大亂斗
高像素不是全部
基于粒子系統(tǒng)的建模與仿真綜述