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