摘 要: 在粒子系統(tǒng)方法的基礎(chǔ)上,提出了基于紋理球的快速導彈煙霧模擬方法。討論了算法的數(shù)據(jù)結(jié)構(gòu)、各參數(shù)設(shè)置及其對模擬效果的影響,其中關(guān)鍵參數(shù)主要包括紋理球的數(shù)量、大小、位置、偏移量、旋轉(zhuǎn)和紋理貼圖等。給出了具體的模擬步驟和實際的模擬效果,模擬的速度、效果等比較理想。
關(guān)鍵詞: 粒子系統(tǒng); 導彈煙霧; 紋理球; 噴射現(xiàn)象
導彈發(fā)射時的煙霧特效是軍事模擬和航天領(lǐng)域仿真技術(shù)中特殊效果的一個重要組成部分。近些年來,導彈、火箭和煙霧的計算機模擬方法很多,如基于粒子系統(tǒng)的模擬方法,雖然基于純粹的粒子系統(tǒng)的方法已經(jīng)不是主流方法,但是對該方法加以改進和運用的嘗試一直都沒有停止[1-2]。從視覺效果的角度出發(fā),可以對大量的粒子加以紋理化,從而節(jié)省大量的系統(tǒng)資源,應(yīng)運而生的是紋理貼圖的模擬方法[3-6]。該方法的基本思路是,運用紋理映射的方法代替一定數(shù)量的粒子,從而達到一定的模擬效果。紋理方法在很大程度上都要進行視覺合成和變換,在實際應(yīng)用的過程中需要附加額外的計算。
本文主要對傳統(tǒng)的粒子系統(tǒng)方法中的參數(shù)設(shè)置進行了一定的改進,使其隨機性得到了相應(yīng)的降低,便于人們進行合理的控制。本文以模擬的實際效果為主要目標,結(jié)合快捷的紋理方法,直接采用紋理球進行導彈煙霧的模擬,并且在導彈的運動變化過程中進行形態(tài)和外觀上的數(shù)學控制,取得了較好的視覺效果,基本能夠達到實時模擬的要求。
1 基于紋理球的快速導彈煙霧模擬
1.1 煙霧外形
導彈煙霧的外形極其不規(guī)則,為了簡化模擬過程、提高效率以及保持逼真的效果,本文簡化了導彈煙霧的模型,并根據(jù)其形體和變化因素,將其分為導彈噴出的尾焰和氣火焰產(chǎn)生的煙霧兩部分。
導彈在發(fā)射時,發(fā)動機尾噴口會出現(xiàn)尾焰,擴散到一定程度后產(chǎn)生大量的煙霧,隨著導彈的運動,這些火焰和煙霧在空氣中形成航跡??梢哉J為航跡是由從導彈尾噴口連續(xù)不斷噴出的一團團火焰球和煙霧球組成的,這樣就可以將粒子發(fā)射源附著在導彈尾部,在導彈發(fā)射階段連續(xù)不停地發(fā)射粒子團,每個粒子團在自己的存活期內(nèi)按照一定的規(guī)律擴散以至消失。只要粒子的生命足夠長,就能保證導彈消失在視野外之前保持整條航跡的形態(tài)。用帶紋理的小球代替粒子,則可以大大提高系統(tǒng)速度,只需控制好紋理球的效果屬性及變化即可。
1.2 煙霧的數(shù)據(jù)結(jié)構(gòu)
基于紋理球的導彈煙霧模擬主要借助于傳統(tǒng)粒子系統(tǒng)的基本原理,用具有一定大小的紋理球來代替?zhèn)鹘y(tǒng)粒子系統(tǒng)中的大量粒子。從視覺效果的角度看,任意一個紋理球都可以代替數(shù)目眾多的粒子,因而節(jié)省了大量的存儲空間。單個紋理球的數(shù)據(jù)結(jié)構(gòu)如下:
Struct Texture{
float x,y,z //紋理球的中心坐標值
float r //紋理球的半徑
float life //紋理球的生命期
float a //紋理球的透明度
float rp //紋理球與噴口的相對距離
float rl //紋理球與軸心的偏移量
*char pic //紋理球的紋理貼圖
float roa //紋理球的旋轉(zhuǎn)
........}TextureP
在實際模擬的過程中,系統(tǒng)不斷產(chǎn)生紋理球并時刻變化其屬性值,直到消亡為止。
1.3 粒子的數(shù)量和位置
要在給定導彈航跡區(qū)產(chǎn)生動態(tài)的火焰煙霧效果(本文中的導彈煙霧實際包含火焰和煙霧效果),粒子的初始數(shù)量很重要,它直接影響著模擬的整體效果。數(shù)目過小,整體效果就會出現(xiàn)“間隙”;數(shù)目過大,計算和控制的時間就長,影響實時性效果。粒子源的初始位置是由導彈口位置所決定的,綁定在導彈口的坐標處并隨著導彈的運動而實時地改變位置。粒子球與粒子源之間保持相對位置的變化,以便于系統(tǒng)進行計算。
1.4 粒子生命期和透明度
系統(tǒng)中的所有紋理球都時刻處于運動變化之中,紋理球在粒子源產(chǎn)生以后,賦予它最大的生命,每經(jīng)過一幀運算,其生命隨之減少一定的數(shù)值,直到為零,該紋理球從顯示列表中被清除。這個生命期的值和紋理球的運動速率共同決定了場景中煙霧的整體存在,即煙霧擴展范圍的大小。從視覺效果上看,許多紋理球是疊加在一起的,單一的紋理球不能完整地描述煙霧的特征,因而將其設(shè)置為透明。紋理球紋理的疊加可以表現(xiàn)出煙霧細節(jié)和整體視覺效果。
當然,紋理球也需要有規(guī)律地變化。模擬初期,紋理球比較少,適合運用比較小的透明度;隨著紋理球的不斷增加,其疊加效應(yīng)越加明顯,因此應(yīng)該采用比較大的透明度。 通過調(diào)控可以使中心軸附近的紋理球稍微多一些,以表現(xiàn)比較濃的煙霧效果;偏離中心軸較遠的地方紋理球稍微少一些,以表現(xiàn)比較稀疏的煙霧效果。
在導彈煙霧的噴射過程中,由于所處航跡中的位置不同,粒子燃燒的時間也就不同。距離燃燒軸(參考軸)中心處越近,粒子溫度較高,其生命期較長;而在距離較遠的地方,溫度比較低,其發(fā)光時間就短。引入的中心參考線近似于導彈煙霧的中心線,如圖1所示。
1.5 紋理圖片的選用
本文選用的紋理圖片,分為4大類,應(yīng)用于煙霧的火焰中心區(qū)、火焰擴展區(qū)、煙霧中心區(qū)和煙霧邊遠區(qū)4個區(qū)域,別有4、6、6、10張紋理圖片。劃分的依據(jù)為:在火焰的中心區(qū)域(該區(qū)域比較小),距離導彈口比較近,火焰溫度比較高,形態(tài)變化不明顯;在火焰的擴散區(qū)(主要指距離噴口略遠與火焰邊緣的區(qū)域),燃燒開始具有變化的細節(jié);在煙霧中心區(qū)(火焰區(qū)域的后面,與火焰區(qū)域有10%的重疊),煙霧濃度大,區(qū)別不明顯,但有一定的細節(jié),主要靠紋理圖片本身來表現(xiàn);在煙霧邊遠區(qū)(煙霧的后半部分和邊緣區(qū)域),煙霧的細節(jié)非常豐富。各區(qū)域的界定和劃分主要依據(jù)實際的視覺效果,并沒有嚴格地區(qū)分,相互之間有一定的重疊。本文采用的部分紋理圖片如圖2所示。
各種類型的圖片具有一定的相似性,也有必要的互補性,邊緣區(qū)的紋理圖片主要取自實際煙霧的邊緣和渦流區(qū)域,全部圖片放在不同的序列之中(便于分類調(diào)節(jié))。紋理圖片顯然是整個模擬過程和最終顯示效果的一個重要因素之一。為了使表現(xiàn)力更加豐富,必要時也可以根據(jù)具體要求對圖片庫進行擴充與修改。
1.6 紋理球的旋轉(zhuǎn)
現(xiàn)實中的煙霧效果細節(jié)豐富、不斷變換,然而仔細分析導彈發(fā)射這個特殊現(xiàn)象發(fā)現(xiàn),由于噴射的火焰和煙霧速度極高、范圍相對比較集中,其細節(jié)在模擬表現(xiàn)時就顯得不是那么突出了,但是紋理球在場景中的旋轉(zhuǎn)也是不可或缺的,這樣可以增加算法的通用性。本算法中的紋理球按照設(shè)計要求進行旋轉(zhuǎn),所表現(xiàn)出的形態(tài)更加豐富多彩,并能起到意想不到的理想效果。通過對TextureP->roa進行隨機賦值,即可方便地加以實現(xiàn)(為了方便從不同的角度觀察煙霧,本文采用3個軸向上的旋轉(zhuǎn)),其控制過程需要實時地進行。
1.7 系統(tǒng)的變化
整個系統(tǒng)經(jīng)歷了粒子從噴口處產(chǎn)生、燃燒、變成煙霧、擴散直到消失的過程,其間要受到風力、重力、導彈運行等作用的影響,其狀態(tài)隨著時間的推移而不斷改變。本文對導彈的運動采用直線或曲線軌跡的方法,粒子系統(tǒng)與噴口、中心線距離則采用相對距離的方法來模擬其變化效果。中心參考線在運動變化中起到了制約的作用,可以實時地改變中心參考線的形狀,配合各控制參數(shù)的共同作用,以改變整個模擬系統(tǒng)的形狀。
導彈噴射速度比較快,沖擊力比較大,因此風力在系統(tǒng)中的影響可以暫且忽略不計,但在模擬其他煙霧效果時就必須重點考慮。
2 具體實現(xiàn)步驟和模擬結(jié)果
建立粒子系統(tǒng)及其運動控制模型以后,雖然可以模擬導彈煙霧運動規(guī)律,但是在視覺效果方面需要做很多的工作,同時需要解決仿真中顯示速度的問題。具體的程序?qū)崿F(xiàn)步驟如下。
(1)確定噴口位置及其變化路徑上各點坐標(通常情況下取空間的一條直線或曲線);
(2)設(shè)置一定的生成機制,在粒子產(chǎn)生和消亡時能夠及時更新粒子數(shù)目;
(3)模擬場景的每一幀;
(4)初始化粒子的各項控制參數(shù);
(5)計算粒子與噴口的距離,以確定粒子此時處于火焰區(qū)還是煙霧區(qū);
(6)計算粒子與中心線的偏移量,以確定粒子此時處于中心位置還是偏遠位置,以便加載不同的紋理圖片;
(7)根據(jù)步驟(5)和步驟(6)的結(jié)果并結(jié)合粒子的生命期調(diào)整各個控制參數(shù);
(8)根據(jù)調(diào)整的結(jié)果繪制粒子并處理顯示等視覺要素;
(9)刪除消亡的粒子和超出繪制區(qū)域的粒子。
影響導彈煙霧外形的幾個關(guān)鍵參數(shù)有l(wèi)ife,a、pic、rp、pl等,控制好這些參數(shù),模擬的整體形態(tài)也就得到了很好的控制。
3 煙霧模擬效果與比較
圖3是本算法的主要效果。其中,圖3(a)是模擬的初步效果,模擬的連續(xù)性比較好,火焰和煙霧的核心地帶沒有明顯的“間隙”;圖3(b)是添加運動模糊以后的效果;圖3(c)是導彈沿著曲線運動的結(jié)果;圖3(d)是導彈噴口附近的細節(jié)效果。由模擬的效果可以看到,通過對紋理球各要素的調(diào)整,模擬的效果比較真實自然。
粒子系統(tǒng)的模擬方法優(yōu)點是計算簡單,運動變化及其控制模式不復雜并且靈活性比較強;缺點主要體現(xiàn)在大量粒子比較消耗系統(tǒng)資源,并且后期的真實效果需要進行大量的渲染。數(shù)學物理的方法可以實現(xiàn)較為真實的模擬效果,但計算相對比較復雜,模擬速度的提升空間較小、應(yīng)用范圍比較有限?;诩y理表現(xiàn)的方法用紋理片或紋理球代替大量的粒子,因而比較節(jié)省系統(tǒng)資源,其時間復雜度主要體現(xiàn)在整個系統(tǒng)的運動控制和模擬效果的變換與真實性的合成上。紋理片的方法需要在真實的場景變換中不斷調(diào)整其視覺角度,因而會出現(xiàn)一些扭曲和變形。紋理球的方法需要進行空間三維的分布與計算,但是可以表現(xiàn)立體的模擬效果,而無需進行實時的視角轉(zhuǎn)換。
本文利用粒子系統(tǒng)和紋理球的方法模擬了導彈發(fā)射的煙霧效果,描述了紋理球的關(guān)鍵屬性設(shè)置以及對于模擬效果的實際影響,在資源消耗、計算復雜程度、模擬效果和速度方面都具有一定的優(yōu)勢。所生成的煙霧特效不但形態(tài)、色彩比較真實,而且是三維立體的,這就使得用戶得以在導彈發(fā)射過程中從各個角度對其進行觀察。本算法允許用戶根據(jù)實際情況通過調(diào)整某些參數(shù),方便地對導彈煙霧的形態(tài)和色彩進行控制以適應(yīng)具體需要。
將該方法靈活運用于模擬類似的噴發(fā)氣體現(xiàn)象(如噴汽、噴泉、噴霧、噴火等),是今后可以探索的方向。
參考文獻
[1] 張海山,吳家鑄.基于粒子系統(tǒng)的火箭發(fā)射煙霧特效實現(xiàn)[J].微計算機信息(管控一體化),2008,24(12-3):248-249.
[2] 許春磊.基于粒子系統(tǒng)的尾焰實時模擬[J]. 臨沂師范學 院學報,2010,32(3):129-133.
[3] 劉耀周,張錫恩.基于粒子系統(tǒng)的導彈飛行航跡及煙霧的特效生成[J].計算機工程,2004,30(1):174-176.
[4] 王繼州,顧耀林.火焰的快速模擬[J].計算機輔助設(shè)計與圖形學學報,2007,19(1):102-107.
[5] 袁雪霞,尹新富. 煙霧的快速模擬[J]. 計算機工程與設(shè)計,2008,29(9):2392-2393,2396.
[6] 許國玉,張夢,沈志峰.曲線運動導彈的尾焰模擬研究[J].工程圖學學報,2008,29(6):57-61.