《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > 導(dǎo)彈煙霧的快速模擬
導(dǎo)彈煙霧的快速模擬
來源:微型機(jī)與應(yīng)用2013年第10期
袁雪霞1, 王繼州 2
(1. 鄭州經(jīng)貿(mào)職業(yè)學(xué)院 計(jì)算機(jī)系,河南 鄭州 450006; 2. 中原工學(xué)院 信息商務(wù)學(xué)院 計(jì)算
摘要: 在粒子系統(tǒng)方法的基礎(chǔ)上,提出了基于紋理球的快速導(dǎo)彈煙霧模擬方法。討論了算法的數(shù)據(jù)結(jié)構(gòu)、各參數(shù)設(shè)置及其對模擬效果的影響,其中關(guān)鍵參數(shù)主要包括紋理球的數(shù)量、大小、位置、偏移量、旋轉(zhuǎn)和紋理貼圖等。給出了具體的模擬步驟和實(shí)際的模擬效果,模擬的速度、效果等比較理想。
Abstract:
Key words :

摘  要:粒子系統(tǒng)方法的基礎(chǔ)上,提出了基于紋理球的快速導(dǎo)彈煙霧模擬方法。討論了算法的數(shù)據(jù)結(jié)構(gòu)、各參數(shù)設(shè)置及其對模擬效果的影響,其中關(guān)鍵參數(shù)主要包括紋理球的數(shù)量、大小、位置、偏移量、旋轉(zhuǎn)和紋理貼圖等。給出了具體的模擬步驟和實(shí)際的模擬效果,模擬的速度、效果等比較理想。
關(guān)鍵詞: 粒子系統(tǒng); 導(dǎo)彈煙霧; 紋理球; 噴射現(xiàn)象

    導(dǎo)彈發(fā)射時(shí)的煙霧特效是軍事模擬和航天領(lǐng)域仿真技術(shù)中特殊效果的一個(gè)重要組成部分。近些年來,導(dǎo)彈、火箭和煙霧的計(jì)算機(jī)模擬方法很多,如基于粒子系統(tǒng)的模擬方法,雖然基于純粹的粒子系統(tǒng)的方法已經(jīng)不是主流方法,但是對該方法加以改進(jìn)和運(yùn)用的嘗試一直都沒有停止[1-2]。從視覺效果的角度出發(fā),可以對大量的粒子加以紋理化,從而節(jié)省大量的系統(tǒng)資源,應(yīng)運(yùn)而生的是紋理貼圖的模擬方法[3-6]。該方法的基本思路是,運(yùn)用紋理映射的方法代替一定數(shù)量的粒子,從而達(dá)到一定的模擬效果。紋理方法在很大程度上都要進(jìn)行視覺合成和變換,在實(shí)際應(yīng)用的過程中需要附加額外的計(jì)算。
    本文主要對傳統(tǒng)的粒子系統(tǒng)方法中的參數(shù)設(shè)置進(jìn)行了一定的改進(jìn),使其隨機(jī)性得到了相應(yīng)的降低,便于人們進(jìn)行合理的控制。本文以模擬的實(shí)際效果為主要目標(biāo),結(jié)合快捷的紋理方法,直接采用紋理球進(jìn)行導(dǎo)彈煙霧的模擬,并且在導(dǎo)彈的運(yùn)動(dòng)變化過程中進(jìn)行形態(tài)和外觀上的數(shù)學(xué)控制,取得了較好的視覺效果,基本能夠達(dá)到實(shí)時(shí)模擬的要求。
1 基于紋理球的快速導(dǎo)彈煙霧模擬
1.1 煙霧外形

    導(dǎo)彈煙霧的外形極其不規(guī)則,為了簡化模擬過程、提高效率以及保持逼真的效果,本文簡化了導(dǎo)彈煙霧的模型,并根據(jù)其形體和變化因素,將其分為導(dǎo)彈噴出的尾焰和氣火焰產(chǎn)生的煙霧兩部分。
    導(dǎo)彈在發(fā)射時(shí),發(fā)動(dòng)機(jī)尾噴口會(huì)出現(xiàn)尾焰,擴(kuò)散到一定程度后產(chǎn)生大量的煙霧,隨著導(dǎo)彈的運(yùn)動(dòng),這些火焰和煙霧在空氣中形成航跡??梢哉J(rèn)為航跡是由從導(dǎo)彈尾噴口連續(xù)不斷噴出的一團(tuán)團(tuán)火焰球和煙霧球組成的,這樣就可以將粒子發(fā)射源附著在導(dǎo)彈尾部,在導(dǎo)彈發(fā)射階段連續(xù)不停地發(fā)射粒子團(tuán),每個(gè)粒子團(tuán)在自己的存活期內(nèi)按照一定的規(guī)律擴(kuò)散以至消失。只要粒子的生命足夠長,就能保證導(dǎo)彈消失在視野外之前保持整條航跡的形態(tài)。用帶紋理的小球代替粒子,則可以大大提高系統(tǒng)速度,只需控制好紋理球的效果屬性及變化即可。
1.2 煙霧的數(shù)據(jù)結(jié)構(gòu)
    基于紋理球的導(dǎo)彈煙霧模擬主要借助于傳統(tǒng)粒子系統(tǒng)的基本原理,用具有一定大小的紋理球來代替?zhèn)鹘y(tǒng)粒子系統(tǒng)中的大量粒子。從視覺效果的角度看,任意一個(gè)紋理球都可以代替數(shù)目眾多的粒子,因而節(jié)省了大量的存儲(chǔ)空間。單個(gè)紋理球的數(shù)據(jù)結(jié)構(gòu)如下:
Struct Texture{
        float  x,y,z  //紋理球的中心坐標(biāo)值
        float  r        //紋理球的半徑
        float  life      //紋理球的生命期
        float  a        //紋理球的透明度
      float  rp       //紋理球與噴口的相對距離
     float  rl                               //紋理球與軸心的偏移量
      *char  pic                       //紋理球的紋理貼圖
      float  roa                                   //紋理球的旋轉(zhuǎn)
        ........}TextureP
    在實(shí)際模擬的過程中,系統(tǒng)不斷產(chǎn)生紋理球并時(shí)刻變化其屬性值,直到消亡為止。
1.3 粒子的數(shù)量和位置
    要在給定導(dǎo)彈航跡區(qū)產(chǎn)生動(dòng)態(tài)的火焰煙霧效果(本文中的導(dǎo)彈煙霧實(shí)際包含火焰和煙霧效果),粒子的初始數(shù)量很重要,它直接影響著模擬的整體效果。數(shù)目過小,整體效果就會(huì)出現(xiàn)“間隙”;數(shù)目過大,計(jì)算和控制的時(shí)間就長,影響實(shí)時(shí)性效果。粒子源的初始位置是由導(dǎo)彈口位置所決定的,綁定在導(dǎo)彈口的坐標(biāo)處并隨著導(dǎo)彈的運(yùn)動(dòng)而實(shí)時(shí)地改變位置。粒子球與粒子源之間保持相對位置的變化,以便于系統(tǒng)進(jìn)行計(jì)算。
1.4 粒子生命期和透明度
    系統(tǒng)中的所有紋理球都時(shí)刻處于運(yùn)動(dòng)變化之中,紋理球在粒子源產(chǎn)生以后,賦予它最大的生命,每經(jīng)過一幀運(yùn)算,其生命隨之減少一定的數(shù)值,直到為零,該紋理球從顯示列表中被清除。這個(gè)生命期的值和紋理球的運(yùn)動(dòng)速率共同決定了場景中煙霧的整體存在,即煙霧擴(kuò)展范圍的大小。從視覺效果上看,許多紋理球是疊加在一起的,單一的紋理球不能完整地描述煙霧的特征,因而將其設(shè)置為透明。紋理球紋理的疊加可以表現(xiàn)出煙霧細(xì)節(jié)和整體視覺效果。
     當(dāng)然,紋理球也需要有規(guī)律地變化。模擬初期,紋理球比較少,適合運(yùn)用比較小的透明度;隨著紋理球的不斷增加,其疊加效應(yīng)越加明顯,因此應(yīng)該采用比較大的透明度。 通過調(diào)控可以使中心軸附近的紋理球稍微多一些,以表現(xiàn)比較濃的煙霧效果;偏離中心軸較遠(yuǎn)的地方紋理球稍微少一些,以表現(xiàn)比較稀疏的煙霧效果。
    在導(dǎo)彈煙霧的噴射過程中,由于所處航跡中的位置不同,粒子燃燒的時(shí)間也就不同。距離燃燒軸(參考軸)中心處越近,粒子溫度較高,其生命期較長;而在距離較遠(yuǎn)的地方,溫度比較低,其發(fā)光時(shí)間就短。引入的中心參考線近似于導(dǎo)彈煙霧的中心線,如圖1所示。

1.5 紋理圖片的選用
     本文選用的紋理圖片,分為4大類,應(yīng)用于煙霧的火焰中心區(qū)、火焰擴(kuò)展區(qū)、煙霧中心區(qū)和煙霧邊遠(yuǎn)區(qū)4個(gè)區(qū)域,別有4、6、6、10張紋理圖片。劃分的依據(jù)為:在火焰的中心區(qū)域(該區(qū)域比較小),距離導(dǎo)彈口比較近,火焰溫度比較高,形態(tài)變化不明顯;在火焰的擴(kuò)散區(qū)(主要指距離噴口略遠(yuǎn)與火焰邊緣的區(qū)域),燃燒開始具有變化的細(xì)節(jié);在煙霧中心區(qū)(火焰區(qū)域的后面,與火焰區(qū)域有10%的重疊),煙霧濃度大,區(qū)別不明顯,但有一定的細(xì)節(jié),主要靠紋理圖片本身來表現(xiàn);在煙霧邊遠(yuǎn)區(qū)(煙霧的后半部分和邊緣區(qū)域),煙霧的細(xì)節(jié)非常豐富。各區(qū)域的界定和劃分主要依據(jù)實(shí)際的視覺效果,并沒有嚴(yán)格地區(qū)分,相互之間有一定的重疊。本文采用的部分紋理圖片如圖2所示。

    各種類型的圖片具有一定的相似性,也有必要的互補(bǔ)性,邊緣區(qū)的紋理圖片主要取自實(shí)際煙霧的邊緣和渦流區(qū)域,全部圖片放在不同的序列之中(便于分類調(diào)節(jié))。紋理圖片顯然是整個(gè)模擬過程和最終顯示效果的一個(gè)重要因素之一。為了使表現(xiàn)力更加豐富,必要時(shí)也可以根據(jù)具體要求對圖片庫進(jìn)行擴(kuò)充與修改。
1.6 紋理球的旋轉(zhuǎn)
    現(xiàn)實(shí)中的煙霧效果細(xì)節(jié)豐富、不斷變換,然而仔細(xì)分析導(dǎo)彈發(fā)射這個(gè)特殊現(xiàn)象發(fā)現(xiàn),由于噴射的火焰和煙霧速度極高、范圍相對比較集中,其細(xì)節(jié)在模擬表現(xiàn)時(shí)就顯得不是那么突出了,但是紋理球在場景中的旋轉(zhuǎn)也是不可或缺的,這樣可以增加算法的通用性。本算法中的紋理球按照設(shè)計(jì)要求進(jìn)行旋轉(zhuǎn),所表現(xiàn)出的形態(tài)更加豐富多彩,并能起到意想不到的理想效果。通過對TextureP->roa進(jìn)行隨機(jī)賦值,即可方便地加以實(shí)現(xiàn)(為了方便從不同的角度觀察煙霧,本文采用3個(gè)軸向上的旋轉(zhuǎn)),其控制過程需要實(shí)時(shí)地進(jìn)行。
1.7 系統(tǒng)的變化
    整個(gè)系統(tǒng)經(jīng)歷了粒子從噴口處產(chǎn)生、燃燒、變成煙霧、擴(kuò)散直到消失的過程,其間要受到風(fēng)力、重力、導(dǎo)彈運(yùn)行等作用的影響,其狀態(tài)隨著時(shí)間的推移而不斷改變。本文對導(dǎo)彈的運(yùn)動(dòng)采用直線或曲線軌跡的方法,粒子系統(tǒng)與噴口、中心線距離則采用相對距離的方法來模擬其變化效果。中心參考線在運(yùn)動(dòng)變化中起到了制約的作用,可以實(shí)時(shí)地改變中心參考線的形狀,配合各控制參數(shù)的共同作用,以改變整個(gè)模擬系統(tǒng)的形狀。
    導(dǎo)彈噴射速度比較快,沖擊力比較大,因此風(fēng)力在系統(tǒng)中的影響可以暫且忽略不計(jì),但在模擬其他煙霧效果時(shí)就必須重點(diǎn)考慮。
2 具體實(shí)現(xiàn)步驟和模擬結(jié)果
    建立粒子系統(tǒng)及其運(yùn)動(dòng)控制模型以后,雖然可以模擬導(dǎo)彈煙霧運(yùn)動(dòng)規(guī)律,但是在視覺效果方面需要做很多的工作,同時(shí)需要解決仿真中顯示速度的問題。具體的程序?qū)崿F(xiàn)步驟如下。
    (1)確定噴口位置及其變化路徑上各點(diǎn)坐標(biāo)(通常情況下取空間的一條直線或曲線);
    (2)設(shè)置一定的生成機(jī)制,在粒子產(chǎn)生和消亡時(shí)能夠及時(shí)更新粒子數(shù)目;
    (3)模擬場景的每一幀;
    (4)初始化粒子的各項(xiàng)控制參數(shù);
    (5)計(jì)算粒子與噴口的距離,以確定粒子此時(shí)處于火焰區(qū)還是煙霧區(qū);
    (6)計(jì)算粒子與中心線的偏移量,以確定粒子此時(shí)處于中心位置還是偏遠(yuǎn)位置,以便加載不同的紋理圖片;
    (7)根據(jù)步驟(5)和步驟(6)的結(jié)果并結(jié)合粒子的生命期調(diào)整各個(gè)控制參數(shù);
    (8)根據(jù)調(diào)整的結(jié)果繪制粒子并處理顯示等視覺要素;
    (9)刪除消亡的粒子和超出繪制區(qū)域的粒子。
    影響導(dǎo)彈煙霧外形的幾個(gè)關(guān)鍵參數(shù)有l(wèi)ife,a、pic、rp、pl等,控制好這些參數(shù),模擬的整體形態(tài)也就得到了很好的控制。
3 煙霧模擬效果與比較
    圖3是本算法的主要效果。其中,圖3(a)是模擬的初步效果,模擬的連續(xù)性比較好,火焰和煙霧的核心地帶沒有明顯的“間隙”;圖3(b)是添加運(yùn)動(dòng)模糊以后的效果;圖3(c)是導(dǎo)彈沿著曲線運(yùn)動(dòng)的結(jié)果;圖3(d)是導(dǎo)彈噴口附近的細(xì)節(jié)效果。由模擬的效果可以看到,通過對紋理球各要素的調(diào)整,模擬的效果比較真實(shí)自然。

    粒子系統(tǒng)的模擬方法優(yōu)點(diǎn)是計(jì)算簡單,運(yùn)動(dòng)變化及其控制模式不復(fù)雜并且靈活性比較強(qiáng);缺點(diǎn)主要體現(xiàn)在大量粒子比較消耗系統(tǒng)資源,并且后期的真實(shí)效果需要進(jìn)行大量的渲染。數(shù)學(xué)物理的方法可以實(shí)現(xiàn)較為真實(shí)的模擬效果,但計(jì)算相對比較復(fù)雜,模擬速度的提升空間較小、應(yīng)用范圍比較有限?;诩y理表現(xiàn)的方法用紋理片或紋理球代替大量的粒子,因而比較節(jié)省系統(tǒng)資源,其時(shí)間復(fù)雜度主要體現(xiàn)在整個(gè)系統(tǒng)的運(yùn)動(dòng)控制和模擬效果的變換與真實(shí)性的合成上。紋理片的方法需要在真實(shí)的場景變換中不斷調(diào)整其視覺角度,因而會(huì)出現(xiàn)一些扭曲和變形。紋理球的方法需要進(jìn)行空間三維的分布與計(jì)算,但是可以表現(xiàn)立體的模擬效果,而無需進(jìn)行實(shí)時(shí)的視角轉(zhuǎn)換。
    本文利用粒子系統(tǒng)和紋理球的方法模擬了導(dǎo)彈發(fā)射的煙霧效果,描述了紋理球的關(guān)鍵屬性設(shè)置以及對于模擬效果的實(shí)際影響,在資源消耗、計(jì)算復(fù)雜程度、模擬效果和速度方面都具有一定的優(yōu)勢。所生成的煙霧特效不但形態(tài)、色彩比較真實(shí),而且是三維立體的,這就使得用戶得以在導(dǎo)彈發(fā)射過程中從各個(gè)角度對其進(jìn)行觀察。本算法允許用戶根據(jù)實(shí)際情況通過調(diào)整某些參數(shù),方便地對導(dǎo)彈煙霧的形態(tài)和色彩進(jìn)行控制以適應(yīng)具體需要。
    將該方法靈活運(yùn)用于模擬類似的噴發(fā)氣體現(xiàn)象(如噴汽、噴泉、噴霧、噴火等),是今后可以探索的方向。
參考文獻(xiàn)
[1] 張海山,吳家鑄.基于粒子系統(tǒng)的火箭發(fā)射煙霧特效實(shí)現(xiàn)[J].微計(jì)算機(jī)信息(管控一體化),2008,24(12-3):248-249.
[2] 許春磊.基于粒子系統(tǒng)的尾焰實(shí)時(shí)模擬[J]. 臨沂師范學(xué) 院學(xué)報(bào),2010,32(3):129-133.
[3] 劉耀周,張錫恩.基于粒子系統(tǒng)的導(dǎo)彈飛行航跡及煙霧的特效生成[J].計(jì)算機(jī)工程,2004,30(1):174-176.
[4] 王繼州,顧耀林.火焰的快速模擬[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2007,19(1):102-107.
[5] 袁雪霞,尹新富. 煙霧的快速模擬[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2008,29(9):2392-2393,2396.
[6] 許國玉,張夢,沈志峰.曲線運(yùn)動(dòng)導(dǎo)彈的尾焰模擬研究[J].工程圖學(xué)學(xué)報(bào),2008,29(6):57-61.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。