動畫設計

當前位置 /首頁/設計製作/動畫設計/列表

粒子系統的煙花動畫設計

計算機圖形技術中,將隨機分佈的粒子集合構成的景物形象定義成粒子系統,粒子本身是構成景物形象的最簡單圖元,通過區域性圖元的特徵和動態的變化展現出整個景物環境的變化,於是就能夠展現出隨機性,動態性以及模糊性等特徵,因此粒子系統被認為至今為止最為成功的一種能夠模擬不規則且具有模糊印象的圖形演算法,對自然界的雪花,霧氣,煙花,火焰,煙等景象能夠很少的模擬,粒子系統構建的影響通過渲染能夠展現出非常真實,現在很多好萊塢電影以及遊戲製作中,粒子系統圖形演算法得到了廣泛的應用,一起看看吧!

粒子系統的煙花動畫設計

  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顯示列表的繪圖功能,進一步優化了程式的效能,實現了基本的三維效果和實時性。