摘要:利用粒子系統(tǒng)的基本原理,將飛機(jī)水汽尾跡定義為一系列具有生命周期的不規(guī)則、隨機(jī)分布的粒子,給出相應(yīng)的動(dòng)力學(xué)模型和算法,實(shí)現(xiàn)飛機(jī)水汽尾跡的仿真。針對(duì)仿真過程中色彩轉(zhuǎn)換相對(duì)困難的問題,采用查詢預(yù)先存儲(chǔ)的RGB顏色分量的各級(jí)強(qiáng)度值的方式,結(jié)合DirectDraw的換頁技術(shù),加快了算法的運(yùn)行速度。
關(guān)鍵詞:粒子系統(tǒng);水汽尾跡;算法;換頁技術(shù)
中圖分類號(hào):TP391.9
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004—373X(2008)04—145—02
飛機(jī)水汽尾跡是虛擬戰(zhàn)場(chǎng)環(huán)境的重要組成部分,也是射擊類游戲中必不可少的特效。他具有不規(guī)則的幾何外形,也不同于靜態(tài)景物,具有內(nèi)在的不確定性。對(duì)于此類物體,計(jì)算機(jī)圖形學(xué)采用粒子系統(tǒng)來仿真。粒子系統(tǒng)是用來模擬自然景物中運(yùn)動(dòng)模糊物體的一種非常有效的模型,他根據(jù)粒子的產(chǎn)生、移動(dòng)和消失描述飛機(jī)水汽尾跡的微小變化,能夠達(dá)到很逼真的效果。
1 粒子系統(tǒng)
粒子系統(tǒng)是模擬自然景物的微小物理學(xué)模型,通常用于物體的爆炸、水汽尾跡以及其他模糊景物的模擬。粒子系統(tǒng)方法的基本思想是用許多形狀簡(jiǎn)單且賦予生命的微小粒子作為基本元素,把物體定義為許多不規(guī)則、隨機(jī)分布的粒子,而每個(gè)粒子均有一定的生命期,然后根據(jù)物體的動(dòng)態(tài)和靜態(tài)屬性以及物體的運(yùn)動(dòng)規(guī)律,決定是產(chǎn)生新的粒子還是清除超出生命期的粒子,具體分為以下3個(gè)步驟:
(1)粒子的產(chǎn)生
產(chǎn)生相應(yīng)的粒子加入仿真環(huán)境中,設(shè)置每個(gè)粒子的靜態(tài)屬性,如初始位置、方向、顏色、透明度、生命周期等。
(2)粒子的移動(dòng)
依據(jù)粒子的動(dòng)態(tài)屬性以及物體的物理學(xué)模型改變位置以及粒子的加速度。
(3)粒子的繪制
刪除超過生命周期的粒子,顯示其余的粒子組成的圖形。
2 飛機(jī)水汽尾跡仿真
2.1粒子的產(chǎn)生
粒子系統(tǒng)的粒子由基本粒子和隨機(jī)粒子組成,基本粒子構(gòu)成物體的主體形狀。為了讓尾跡看起來比較真實(shí),在實(shí)際應(yīng)用中,可將其運(yùn)動(dòng)軌跡看成是以水汽噴出點(diǎn)為中心左右偏移一定距離R的帶狀。因此,粒子的初始位置可根據(jù)式(1),式(2)設(shè)定。
2.3 粒子顏色的變化
在多數(shù)時(shí)候,在RGB空間實(shí)行數(shù)學(xué)轉(zhuǎn)換非常費(fèi)力,并且無法實(shí)現(xiàn)色彩動(dòng)畫,對(duì)于每一個(gè)象素,執(zhí)行式(6)
i×pixel(r,g,6)=pixel(i×r,i×g,i×b) (6)
要進(jìn)行3次乘法才能調(diào)制出顏色的變化,再加上必須從象素中提取RGB分量,變換完成后還要重新組合出RGB字。這對(duì)算法的復(fù)雜度有很大的影響??刹捎貌樵儽淼姆椒ㄟM(jìn)行簡(jiǎn)化處理,方法是創(chuàng)建一個(gè)二維數(shù)組查詢表,表的大小是用到的顏色值與需要的強(qiáng)度之積,計(jì)算所用到的水汽尾跡色彩的RGB值的各級(jí)強(qiáng)度值并將其儲(chǔ)存到表中。將RGB字作為表的索引,把顏色的強(qiáng)度作為第二級(jí)索引進(jìn)行查詢即可。
2.4尾跡的繪制
飛機(jī)尾跡粒子的繪制由粒子的生命周期決定,當(dāng)粒子處于生命周期時(shí)采用DirectDraw換頁技術(shù)進(jìn)行點(diǎn)繪制。換頁技術(shù)先在離屏緩沖中繪制一、兩幀備用的圖象,然后操作硬件激活其他表面使其可見。這樣免除了內(nèi)存塊拷貝的開銷,并將擦除圖像、生成顯示以及其他對(duì)每一幀畫面的操作放到后備緩沖中,由計(jì)算機(jī)后臺(tái)處理,有助于提高大型粒子系統(tǒng)的繪制速度。
要完成尾跡的點(diǎn)繪制,可根據(jù)其動(dòng)力學(xué)模型將粒子點(diǎn)的位置、顏色等狀態(tài)放在不同的離屏緩沖中,然后通過快速切換達(dá)到平滑動(dòng)畫的目的。
2.5 編程實(shí)現(xiàn)
在實(shí)際應(yīng)用過程中,首先要對(duì)粒子數(shù)據(jù)結(jié)構(gòu)進(jìn)行定義,其數(shù)據(jù)結(jié)構(gòu)可細(xì)分為粒子狀態(tài)、位置、速度、顏色、生命周期等:
定義好粒子的數(shù)據(jù)結(jié)構(gòu),在仿真過程中要首先生成粒子組;然后根據(jù)各粒子的狀態(tài),對(duì)粒子進(jìn)行添加、刪除和移動(dòng)等操作,最終形成水汽效果,具體算法如圖2所示。
圖3是在Windows環(huán)境下利用Visual C++6.0繪制的飛機(jī)水汽尾跡效果圖。
3 結(jié) 語
粒子系統(tǒng)在描述模糊運(yùn)動(dòng)物體中具有無可比擬的優(yōu)勢(shì),目前已經(jīng)有很多基于OpenGl。的仿真算法,但由于OpenGL紋理映射需要很大的內(nèi)存空間,渲染相對(duì)復(fù)雜,采用DirectDraw對(duì)于仿真速度有一定的提高。本文利用粒子系統(tǒng)原理,實(shí)現(xiàn)飛機(jī)水汽尾跡的仿真算法,并采用Di—rectDraw的換頁技術(shù)和查詢表改變RGB顏色的方式提高了渲染速度,對(duì)于爆炸、燃燒、火焰等游戲場(chǎng)景以及虛擬戰(zhàn)場(chǎng)的特效仿真有一定的指導(dǎo)意義。