範文齋

位置:首頁 > 行業範文 > 工程

粒子系統的煙花動畫設計

工程6.86K

粒子系統構建的影響通過渲染能夠展現出非常真實,現在很多好萊塢電影以及遊戲製作中,粒子系統圖形算法得到了廣泛的應用,本文通過分析現實煙花的爆炸過程設計了具體的煙花粒子模型,並加入了紋理映射,讓煙花粒子的綻放變得更具有立體感。下面是小編爲大家整理關於粒子系統的煙花動畫設計,歡迎大家閱讀!

粒子系統的煙花動畫設計

1 粒子系統基礎概念

粒子系統本身是一個集合體,因爲現實世界中很多景觀都是模糊的,而且還具有流動變化的屬性,粒子系統就是將這種模糊又變化的粒子組成一個結合,形成粒子系統,這個系統具有離散和連續兩大屬性,通過粒子對空間的充斥和運動,且粒子之間相對獨立,同時相互不能穿透,在時空上具有一定的變化,同時擁有顏色,亮度,形狀以及立體體積的外觀形象以及具有運動的特性和生命週期。其中顏色及亮度及形狀會隨着時間的變化而變化;粒子在不同的應用環境中會具有不同的屬性,比如在霧氣中,就和在煙花中的屬性就有偏差,每個粒子都會有生命週期,所謂粒子生命週期包括新生,活動和死亡,在粒子的生命週期裏,粒子從形狀和運動狀態會發生變化,這個變化過程是隨即的,因爲粒子系統本身就是描述模糊景物,因此涉及到粒子的各種參數是隨機的,包括初始值也要隨機。目前粒子模型主要有兩種,一種是虛擬,另一種就是實體,無論是虛擬還是實體都具有模糊特徵,比如虛擬的雪花,煙霧,實體景物中的人和動物的運動等。對於簡單的模糊景物就能夠通過改變動力學方程參數值來模擬動態效果,複雜景物就需要對這個物體進行分割,然後針對每一個小部分列出動力學方程,然後針對每個部分來進行幀計算,再繪製成整體。

2 煙花粒子系統分析

2.1 煙花粒子模型系統分析

因爲煙花的形狀是千差萬別的,但是都具有一些基本的特徵,因此在煙花粒子建模方面就應該把握住核心特徵,並且結合不同的煙花形狀來設置不同的參數來實現,比如現在廠家的煙花形狀就有球狀,風車狀,天女散花狀以及菊花狀等,這些不同形狀的煙花實際上僅僅需要通過設置不同的參數和動態模型就能夠實現不同的燃放效果。煙花粒子模型的主要模式就是分成兩個部分,一個就是燃放點,另一個就是爆炸點,無論是燃放點和爆炸點都是隨機的,不過這個隨機過程分爲橫向和縱向之分,一般燃放點都是屏幕的下方,爆炸點會有兩種情況,一種是爆炸點和燃放點一致,另一種就是爆炸點和燃放點的軌跡一致,但是這個爆炸點是在屏幕的上方,結合煙花的燃放模式,所以在煙花模型的主要特徵上來分析,那就是在燃放點不會釋放所有粒子,只要將一個粒子向空中運動,並給這些粒子賦初始值,另一種就是在空中爆炸,此時通過設置不同的初始值來展現煙花粒子的不同形狀,同時通過紋理映射技術來讓煙花粒子展現出立體效果。

(1)天女散花模型

這個煙花粒子系統模型的燃燒點和爆炸點是結合的,因此燃放和爆炸運動軌跡初始點是同一個點,粒子要在第一幀產生,在隨後時空裏要對粒子的屬性進行隨機設置,保證一定粒子數。如果太少就不會產生天女散花的效果,而數目太多,處理速度變慢,就會影響實時效果。因爲煙花在燃放過程中會出現不同的形狀,如果和現實一樣太過於困難,通過設置不同粒子形狀能夠解決這一問題。並將這些不同的粒子形狀按照(1、2、……n)序列號設置,並對這些粒子使用隨機函數賦值,同時初始值就應該映射紋理,提升粒子的三維屬性。目前粒子初始形狀公式爲:形狀=int(形狀均值+rand(形狀方差));對於這個公式中的int函數是定義粒子的初始屬性。而下面的位置,速度和顏色公式則主要定義粒子在空間變化的屬性。

位置公式:位置P(fi)=P(fi-1)+ V(fi -1)dt

速度公式:速度V(fi)=V(fi-1)+ adt

顏色公式:顏色C(fi)=C(fi-1)+ △Cdt

粒子存活時間公式:生存期L(fi)=L(fi-1)-1

小a是粒子運動的加速度,△C則是粒子的顏色變化比率,生存期的.公式設置的目的就是讓粒子產生到消亡能有一個時間上和變化上的界定。

(2)牡丹和激光模型

這個模型是讓粒子在空中燃放,粒子在初始幀產生之後,在後面的運動中不會再產生新粒子,其中粒子的屬性,活動及消亡條件如同天女散花模型,然後將球狀的煙花模型投影到平面,再加上變化的紋理映射,再結合BillBoarding技術就能夠得到類似牡丹或者激光的煙花模型。

2.2 煙花粒子系統的實現

(1)煙花粒子系統基本數據結構

structfire_point t {

float tdir; //定義運動粒子方向

float tspeed; ;//初始速度

float tr,g,b;//初始基本顏色屬性

float tx,y; ;//粒子隨機座標位置

};

structfirework

{

int ttype; ;//定義煙花的形狀模型

float tx,y; ;//燃放位置

float tt; ;//粒子存活時間

float tdir;

int tflag,counter;

structfire_point tfp[MAX_POINTS];//爆炸粒子

structfirework k*next; ;//進入下一個煙火

};

(2)煙花粒子系統的生成步驟

以下簡單探討一下天女散花煙花模型的繪製,其一在燃燒點添加煙花粒子;其二給初始粒子賦值;其三繪製初始煙花粒子;其四根據虛擬時間對每一幀的煙花粒子通過公式賦予不同的屬性;其五粒子在運動過程中添加紋理映射;其六粒子生存期值減1;其七部分煙花粒子消亡;其八隨機產生新的煙花粒子;其九繪製新的煙花粒子。圖3是通過煙花模擬示意圖。

3 總結

通過對天女散花等煙花粒子系統模型的應用,同時結合了紋理映射和BillBoarding 技術能夠有效的展現出四種煙花的燃放過程,這四種燃放模型具有一定的通用性,只需要改變不同的參數就能夠達到不同的效果,同時利用了OpenGL顯示列表的繪圖功能,進一步優化了程序的性能,實現了基本的三維效果和實時性。