Unity3d粒子特效:製作火焰效果
效果
分析
真實的火焰效果,通常包括:火、火光、火星等組成部分,火焰燃燒的同時會對周圍環境進行烘焙。
1、針對火焰組成部分,我們可以分別建立粒子系統元件實現
2、火焰燃燒對周圍環境的烘焙效果,我們可以通過燈光實現,如點光源。
那麼,我們通過粒子系統 + 光源實現火焰效果,在Unity3d場景中結構應如下圖所示:
1、Fire 火,火焰的主體部分,因燃燒產生的劇烈化學反應,靈動多變;
2、Flash 火光,即火焰的閃光效果,忽明忽暗;
3、Spark 火星,因高溫而升起的燃燒碎屑,行蹤飄忽,顏色漸變,效果隨機;
4、Point Light 光亮,火焰燃燒對周圍環境的烘焙效果;
實現
1、新建工程
1.1、新建3D工程
1.2、匯入資源素材(後面會提供素材包)
1、天空盒1個
2、多幀火焰形態圖1個
3、地面圖1個
2、場景搭建
2.1、新建場景FireScene
2.2、設定場景天空盒,選擇BlueSkybox
原因:系統預設天空盒太亮,火焰效果對比不明顯,視覺衝擊力差。
設定天空盒方式:
Window --> lighting -->setting
2.3、建立平面(地面)
用於放置火焰,並作為被烘焙物件(即火焰的光照能顯示在該物體上)
1、建立Quad,改名Ground
2、置為原點位置,即座標(0,0,0)
2.4、調整攝像機視角
1、Scene場景中調整為合適視角(如上圖所示視角即可) 2、選中攝像機Main Camera 3、設定攝像機使用當前視角:GameObject --> Align With View
3、製作Fire效果(火)
為了最好體現火的形態變化,此處使用美術人員提供的火的多幀形態圖,作為粒子貼圖。
火的多幀形態圖,素材共4幀,兩行兩列
3.1、建立粒子系統物件,命名Fire,改其發射方向
正常的火焰效果,火焰粒子應是朝上方向發射;
而新建的粒子系統預設朝前播放粒子,所以需要x軸旋轉-90°,改為朝上發射
3.2、思考:火 需要使用粒子系統的哪些模組?
1、基礎模組,主要控制粒子生命時長、大小、方向、顏色、重力等 2、Emission模組,粒子主要模組,主要用於控制粒子發射 3、Shape模組,粒子主要模組,主要用於控制粒子發射器的形狀 4、Renderer模組,粒子主要模組,主要用於控制粒子渲染 5、Color over Lifetime,控制火的顏色隨生命週期而改變,可使火焰效果更真實生動 6、Texture Sheet Animation,用於控制火焰的多幀形態圖,隨機切換指定幀
3.3、先設定Renderer模組
1、Material 選擇多幀火焰圖
2、設定Sort Mode:Youngest in Front (即:後渲染出來的顯示在最上/前層)
3.4、設定Texture Sheet Animation模組
1、Tiles : 是指紋理在X(水平)和Y(垂直)方向上劃分的平鋪數量,此處分別設定為 2
2、Frame over Time:預設曲線,指定動畫幀隨著時間的推移如何增加。此處由逐幀變化,改為隨機固定某一幀
3、Cycles : 是指動畫序列在粒子生命週期內重複的次數,此處設定為4,當然也可根據自身喜愛更改數值
3.5、設定基礎模組
1、Duration 粒子發射時長,此處設定為1秒
2、Start Lifrtime 單個粒子的生命週期,隨機1秒以下,此處設定0.3 ~ 0.5秒
3、Start Speed 粒子速度0.1,火多幀圖上竄效果有波動,但不宜過大
4、Start Size 0.7 ~ 1 增加隨機性
5、Start Rotation -20° ~ 20° 增加隨機性
6、Gravity Modifier 重力修改器,因火為升力,此處需改為-1
7、Max Particles 最大數量為25,不宜過多
以上屬性可根據自身喜好,微調其數值
3.6、設定Emission模組
1、rate over Time 設定為25,與粒子最大數量一致即可
2、因火是平靜燃燒,不存在突然的爆發,所以不需要設定Bursts
以上屬性可根據自身喜好,微調其數值
3.7、設定Shape模組
1、Shape 無需改變(咱們實現的效果:火的燃燒點是1個)
2、Radius 改為0(系統預設置為0.01),使粒子產生位置固定
3.8、設定Color over Lifetime顏色
顏色可根據自身喜好,自行調整,須注意顏色漸變與透明度變化
4、製作火星(Spark)
火星的效果比較簡單:
1、在固定位置產生火星的粒子
2、粒子產生後向上升,隨位置升高速度漸慢,顏色也漸透明
3、為了體現火星的靈動性,火星大小、生命時長等均隨機
製作Spark會使用到粒子系統的哪些模組呢?
1、基礎模組,用於控制粒子的基礎屬性:生命時長、大小、顏色、重力等
2、Emission模組,用於控制粒子的發射
3、Shape模組,用於控制粒子發射器的形狀
4、Color over Lifetime模組,用於控制粒子顏色隨生命週期的變化
5、Size over Lifetime模組,用於控制粒子大小隨生命週期的變化
6、Limit Velocity over Lifetime模組,用於控制粒子限速
7、Renderder模組,用於控制粒子渲染(預設就行,無需調整)
4.1、基礎模組
1、Duration 發射週期與火的粒子系統一致吧
2、Start Lifetime 粒子的生命時長,咱們也隨機吧
3、StartSpeed 火星粒子的向上速度要更大一些
4、Start Size 火星粒子的起始大小應隨機
5、Start Color 火星粒子的預設顏色
6、Gravity Modifier 因火星粒子也是上升的力,應設定為負數(使用此屬性,效果更貼近真實)
7、Max Particles 最大數量不宜過多,因為正常燃燒時,火星數量不會太多
8、其他屬性預設(略)
以上屬性可根據自身喜好,微調其數值
4.2、Emission模組
RateOverTime: 隨單位時間生成粒子的數量,與最大數量一致吧
以上屬性可根據自身喜好,微調其數值
4.3、Shape模組
1、Shape形狀預設椎體即可,無需調整
2、Radius: 將椎體的半徑設定小一些,讓粒子出現的位置固定,微微隨機即可
3、其他屬性預設即可
以上屬性可根據自身喜好,微調其數值
4.4、Color over Lifetime模組
正常情況下,火星是在火焰中上端才能看見,且隨時間變化,慢慢灰掉(可理解成與夜色融合,即透明)
1、剛開始顏色透明
2、中間正常顯示
3、後面逐漸透明
4.5、Size over Lifetime模組
火星的粒子尺寸隨時間變化,視覺上更真實一些
4.6、Limit Velocity over Lifetime模組
當粒子速度超過速度限制時,粒子速度降低
Speed: 限速 2
Dampen: 粒子速度降低的分數 0.1
以上屬性可根據自身喜好,微調其數值
4.7 火星效果圖
4.8、火加上火星的效果圖 (截圖不怎麼明顯)
5、製作火光效果(Flash)
此效果實現起來也比較簡單,固定位置,隨機交替產生幾個的不同尺寸的粒子即可
製作Flash會使用到粒子系統的哪些模組呢?
1、基礎模組,用於控制粒子的基礎屬性:生命時長、大小、顏色等
2、Emission模組,用於控制粒子的發射
3、Shape模組,用於控制粒子發射器的形狀
4、Renderder模組,用於控制粒子渲染(預設就行,無需調整)
5.1、基礎模組
Start Lifetime: 粒子生命週期隨機時長(為實現忽明忽暗的閃動效果)
Start Size:粒子尺寸大小隨機(為實現忽明忽暗的閃動效果)
Start Color:顏色與火的顏色一致即可(色調統一)
Max Particles:正常的火焰閃動不會太厲害,所以粒子不宜過多,此處設定為5個
以上屬性可根據自身喜好,微調其數值
5.2、Emission模組
Rate over Time: 與粒子最大值一致即可,此處也為5個
5.3、Shape模組
閃光效果應基於火焰的位置,不應改變:
Radius: 為了讓粒子產生的位置不變,置為0.01即可
5.4、Shape效果圖(因錄屏工具原因,圖片非高清)
5.5、與火、火星一起的效果圖(因錄屏工具原因,圖片非高清)
6、燈光烘焙
新建點光源,設定光源位置、顏色和強度,如下圖:
6.1、火焰 + 燈光 效果圖 (因錄屏工具原因,圖片非高清):
7、素材提供
https://pan.baidu.com/s/1eugxPGWb5sVczJKyvLL