Unity3d粒子特效:製做火焰效果

效果


分析

真實的火焰效果,一般包括:火、火光、火星等組成部分,火焰燃燒的同時會對周圍環境進行烘焙。
一、針對火焰組成部分,咱們能夠分別建立粒子系統組件實現
二、火焰燃燒對周圍環境的烘焙效果,咱們能夠經過燈光實現,如點光源。工具

那麼,咱們經過粒子系統 + 光源實現火焰效果,在Unity3d場景中結構應以下圖所示:
動畫

一、Fire 火,火焰的主體部分,因燃燒產生的劇烈化學反應,靈動多變;
二、Flash 火光,即火焰的閃光效果,忽明忽暗;
三、Spark 火星,因高溫而升起的燃燒碎屑,行蹤飄忽,顏色漸變,效果隨機;
四、Point Light 光亮,火焰燃燒對周圍環境的烘焙效果;spa

實現

一、新建工程

1.一、新建3D工程
1.二、導入資源素材(後面會提供素材包)3d

一、天空盒1個
二、多幀火焰形態圖1個
三、地面圖1個

二、場景搭建

2.一、新建場景FireScene
2.二、設置場景天空盒,選擇BlueSkyboxcode

緣由:系統默認天空盒太亮,火焰效果對比不明顯,視覺衝擊力差。

設置天空盒方式:
Window --> lighting -->setting


2.三、建立平面(地面)對象

用於放置火焰,並做爲被烘焙對象(即火焰的光照能顯示在該物體上)

一、建立Quad,更名Ground
二、置爲原點位置,即座標(0,0,0)


2.四、調整攝像機視角blog

一、Scene場景中調整爲合適視角(如上圖所示視角便可)
二、選中攝像機Main Camera
三、設置攝像機使用當前視角:GameObject --> Align With View

三、製做Fire效果(火)

爲了最好體現火的形態變化,此處使用美術人員提供的火的多幀形態圖,做爲粒子貼圖。生命週期

火的多幀形態圖,素材共4幀,兩行兩列

3.一、建立粒子系統對象,命名Fire,改其發射方向圖片

正常的火焰效果,火焰粒子應是朝上方向發射;

而新建的粒子系統默認朝前播放粒子,因此須要x軸旋轉-90°,改成朝上發射

3.二、思考:火 須要使用粒子系統的哪些模塊?ci

一、基礎模塊,主要控制粒子生命時長、大小、方向、顏色、重力等
二、Emission模塊,粒子主要模塊,主要用於控制粒子發射
三、Shape模塊,粒子主要模塊,主要用於控制粒子發射器的形狀
四、Renderer模塊,粒子主要模塊,主要用於控制粒子渲染
五、Color over Lifetime,控制火的顏色隨生命週期而改變,可以使火焰效果更真實生動
六、Texture Sheet Animation,用於控制火焰的多幀形態圖,隨機切換指定幀

3.三、先設置Renderer模塊

一、Material 選擇多幀火焰圖
二、設置Sort Mode:Youngest in Front (即:後渲染出來的顯示在最上/前層)


3.四、設置Texture Sheet Animation模塊

一、Tiles : 是指紋理在X(水平)和Y(垂直)方向上劃分的平鋪數量,此處分別設置爲 2
二、Frame over Time:默認曲線,指定動畫幀隨着時間的推移如何增長。此處由逐幀變化,改成隨機固定某一幀
三、Cycles : 是指動畫序列在粒子生命週期內重複的次數,此處設置爲4,固然也可根據自身喜好更改數值

3.五、設置基礎模塊

一、Duration 粒子發射時長,此處設置爲1秒
二、Start Lifrtime 單個粒子的生命週期,隨機1秒如下,此處設置0.3 ~ 0.5秒
三、Start Speed 粒子速度0.1,火多幀圖上竄效果有波動,但不宜過大
四、Start Size 0.7 ~ 1 增長隨機性
五、Start Rotation -20° ~ 20° 增長隨機性
六、Gravity Modifier 重力修改器,因火爲升力,此處需改成-1
七、Max Particles 最大數量爲25,不宜過多

以上屬性可根據自身喜愛,微調其數值

3.六、設置Emission模塊

一、rate over Time 設置爲25,與粒子最大數量一致便可
二、因火是平靜燃燒,不存在忽然的爆發,因此不須要設置Bursts

以上屬性可根據自身喜愛,微調其數值


3.七、設置Shape模塊

一、Shape 無需改變(我們實現的效果:火的燃燒點是1個)
二、Radius 改成0(系統默認置爲0.01),使粒子產生位置固定


3.八、設置Color over Lifetime顏色

顏色可根據自身喜愛,自行調整,須注意顏色漸變與透明度變化


四、製做火星(Spark)

火星的效果比較簡單:

一、在固定位置產生火星的粒子
二、粒子產生後向上升,隨位置升高速度漸慢,顏色也漸透明
三、爲了體現火星的靈動性,火星大小、生命時長等均隨機

製做Spark會使用到粒子系統的哪些模塊呢?

一、基礎模塊,用於控制粒子的基礎屬性:生命時長、大小、顏色、重力等
二、Emission模塊,用於控制粒子的發射
三、Shape模塊,用於控制粒子發射器的形狀
四、Color over Lifetime模塊,用於控制粒子顏色隨生命週期的變化
五、Size over Lifetime模塊,用於控制粒子大小隨生命週期的變化
六、Limit Velocity over Lifetime模塊,用於控制粒子限速
七、Renderder模塊,用於控制粒子渲染(默認就行,無需調整)

4.一、基礎模塊

一、Duration 發射週期與火的粒子系統一致吧
二、Start Lifetime 粒子的生命時長,我們也隨機吧
三、StartSpeed 火星粒子的向上速度要更大一些
四、Start Size 火星粒子的起始大小應隨機
五、Start Color 火星粒子的默認顏色
六、Gravity Modifier 因火星粒子也是上升的力,應設置爲負數(使用此屬性,效果更貼近真實)
七、Max Particles 最大數量不宜過多,由於正常燃燒時,火星數量不會太多
八、其餘屬性默認(略)

以上屬性可根據自身喜愛,微調其數值

4.二、Emission模塊

RateOverTime: 隨單位時間生成粒子的數量,與最大數量一致吧

以上屬性可根據自身喜愛,微調其數值


4.三、Shape模塊

一、Shape形狀默認椎體便可,無需調整
二、Radius: 將椎體的半徑設置小一些,讓粒子出現的位置固定,微微隨機便可
三、其餘屬性默認便可

以上屬性可根據自身喜愛,微調其數值


4.四、Color over Lifetime模塊

正常狀況下,火星是在火焰中上端才能看見,且隨時間變化,慢慢灰掉(可理解成與夜色融合,即透明)
一、剛開始顏色透明
二、中間正常顯示
三、後面逐漸透明


4.五、Size over Lifetime模塊

火星的粒子尺寸隨時間變化,視覺上更真實一些


4.六、Limit Velocity over Lifetime模塊

當粒子速度超過速度限制時,粒子速度下降
Speed: 限速 2
Dampen: 粒子速度下降的分數 0.1

以上屬性可根據自身喜愛,微調其數值

4.7 火星效果圖

4.八、火加上火星的效果圖 (截圖不怎麼明顯)

五、製做火光效果(Flash)

此效果實現起來也比較簡單,固定位置,隨機交替產生幾個的不一樣尺寸的粒子便可

製做Flash會使用到粒子系統的哪些模塊呢?

一、基礎模塊,用於控制粒子的基礎屬性:生命時長、大小、顏色等
二、Emission模塊,用於控制粒子的發射
三、Shape模塊,用於控制粒子發射器的形狀
四、Renderder模塊,用於控制粒子渲染(默認就行,無需調整)

5.一、基礎模塊

Start Lifetime: 粒子生命週期隨機時長(爲實現忽明忽暗的閃動效果)
Start Size:粒子尺寸大小隨機(爲實現忽明忽暗的閃動效果)
Start Color:顏色與火的顏色一致便可(色調統一)
Max Particles:正常的火焰閃動不會太厲害,因此粒子不宜過多,此處設置爲5個

以上屬性可根據自身喜愛,微調其數值

5.二、Emission模塊

Rate over Time: 與粒子最大值一致便可,此處也爲5個

5.三、Shape模塊

閃光效果應基於火焰的位置,不該改變:

Radius: 爲了讓粒子產生的位置不變,置爲0.01便可


5.四、Shape效果圖(因錄屏工具緣由,圖片非高清)

5.五、與火、火星一塊兒的效果圖(因錄屏工具緣由,圖片非高清)

六、燈光烘焙

新建點光源,設置光源位置、顏色和強度,以下圖:

6.一、火焰 + 燈光 效果圖 (因錄屏工具緣由,圖片非高清):

七、素材提供

https://pan.baidu.com/s/1eugxPGWb5sVczJKyvLLpYg

相關文章
相關標籤/搜索