少了五毛錢不賣的酷炫火焰特效!3D粒子哦!
先展示一下最終效果,然后再逼逼

后邊圖片挺多的,使用流量看文章的,祝好運(yùn)。
你聽說過5毛錢特效嗎?

我是個(gè)電視迷,在讀大學(xué)的時(shí)候,經(jīng)常通宵刷劇。
往往有很多引人入勝的情節(jié),搭配著粗制濫造的特效。
所以我就經(jīng)常會(huì)吐槽,"我靠,這也太假了吧!"。
我就想啊,肯定是做后期的人水平不夠嘛,要是讓我來,肯定能做的吊炸天!
不能光是想啊,我還真的付出了實(shí)際行動(dòng),
我買了一本

然而,半個(gè)月過去了,我還在望著書發(fā)呆,
這個(gè)時(shí)候,我再刷劇的時(shí)候,就覺得,"嗯,這個(gè)特效也還挺好的..."。
我成功的做到了"21天,從入門到放棄"。

最新一直在學(xué)習(xí)Cocos Creator 3D,發(fā)現(xiàn)了引擎自帶的粒子系統(tǒng),
我心中的小火苗又燃燒起來了,哥們當(dāng)年只是暫時(shí)隱忍而已,終于到了我反擊的時(shí)候了!
5毛錢-火焰特效-方法1
新建一個(gè)粒子系統(tǒng),取名Fire1。


通過觀察現(xiàn)實(shí)中的火焰,我們其實(shí)可以認(rèn)為,火焰的運(yùn)動(dòng)軌跡是從一個(gè)點(diǎn)生成,然后不斷向上運(yùn)動(dòng)的,根據(jù)這個(gè)規(guī)律,我們先對(duì)發(fā)射器模塊的參數(shù)進(jìn)行調(diào)整。
展開 發(fā)射器模塊(ShapeModule) 。
將 粒子發(fā)射器半徑(Radius) 設(shè)置為0.2,默認(rèn)值是1,我們不需要那么粗的發(fā)射器。
將 ?開合角度(Angle) 設(shè)置為0,默認(rèn)值是25,讓圓錐形的發(fā)射器變成圓柱形的發(fā)射器。


此時(shí)粒子發(fā)射器變成了半徑為0.2的圓柱,粒子在圓柱下方隨機(jī)產(chǎn)生。
有小伙伴說了,這哪里是火焰?。?/p>
別急,這才剛開始呢!
現(xiàn)在可以看到粒子是不斷向上飛的,仿佛沒有盡頭一樣,我們來調(diào)整一下主模塊的參數(shù)。

將 粒子初始速度(StartSpeed) 設(shè)置為3,默認(rèn)值為5,這樣可以降低粒子的速度,也可以間接控制火焰的高度。
將 粒子生命周期(StartLifetime) 設(shè)置為0.8,默認(rèn)值為5,這是粒子從生成到消失的時(shí)間,可以通過其控制火焰的高度。注意不要和 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) 。
將 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) 設(shè)置為1,默認(rèn)值是5。火焰是不斷循環(huán)的,不需要那么久的運(yùn)行時(shí)間。
將 每秒發(fā)射的粒子數(shù)(RateOverTime) 設(shè)置為40,默認(rèn)值是10.粒子太少了的話,達(dá)不到燃燒的效果。
將 粒子初始大小(StartSize) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.5~0.8,這樣粒子的大小就會(huì)在0.5~0.8這個(gè)范圍內(nèi)隨機(jī)。


注意:整個(gè)粒子系統(tǒng)運(yùn)行的時(shí)間是由 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) ?和 粒子生命周期(StartLifetime) 加在一起的。
有興趣的小伙伴可以看一下,如果把 loop 選項(xiàng)去掉,總體的運(yùn)行時(shí)間是接近1。8秒的。

勾選 大小模塊(SizeOvertimeModule),我們來設(shè)置一下火焰粒子的大小變化。讓粒子從生成到消失慢慢變小。

怎么樣?現(xiàn)在有點(diǎn)感覺了吧!不過我們還要設(shè)置一下顏色。
勾選 顏色模塊(ColorOverLifetimeModule),我們來設(shè)置一下火焰色顏色。
選擇 漸變模式(gradient),設(shè)置為由黃到紅的透明的漸變色。

讓我們來看一下最終效果

接下來然我介紹一下另外一種火焰的制作方法。
5毛錢-火焰特效-方法2
首先,我請(qǐng)UI小姐姐做了一張火焰的圖片,是這樣的。

新建材質(zhì),取名叫FireMaterial。


可以看到,可供粒子系統(tǒng)使用的 Effect 有紅框中的三種,這里我們要使用的就是builtin-particle。
builtin-particle:提供給粒子系統(tǒng)的 渲染模塊(Renderer) 中的 ?ParticleMaterial 使用,當(dāng)使用cpu渲染時(shí),必須使用此Effect,這個(gè)也是默認(rèn)選項(xiàng)。
builtin-particle-gpu:提供給粒子系統(tǒng)的 渲染模塊(Renderer) 中的 ?ParticleMaterial 使用,當(dāng)使用gpu渲染時(shí),必須使用此Effect。
builtin-particle-trail:提供給粒子系統(tǒng)的 渲染模塊(Renderer) 中的 ?TrailMaterial 使用。
然后,我們把美術(shù)小姐姐準(zhǔn)備好的圖片拖到 MainTexture 上,別忘記保存哦。

新建一個(gè)粒子系統(tǒng),取名Fire2,展開 渲染模塊(Renderer) ,將材質(zhì) FireMaterial 拖入到 ParticleMaterial 中。
。
我們想要的效果是,固定顯示四個(gè)序列圖中的隨機(jī)一張,
勾選 貼圖動(dòng)畫模塊(TextureAnimationModule),通過對(duì)材質(zhì)的觀察,我們可以看到圖片是2*2的序列圖。 將 橫向貼圖幀數(shù)(NumTilesX) 設(shè)置為2。 將 縱向貼圖幀數(shù)(NumTilesY) 設(shè)置為2。 將 **一個(gè)生命周期內(nèi)播放幾次循環(huán)(CycleCount)**設(shè)置為1,默認(rèn)值0. 將 一個(gè)周期內(nèi)動(dòng)畫播放的幀與時(shí)間變化曲線(FrameOverTime) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0~3,這樣初始幀就會(huì)在4個(gè)序列中隨機(jī)。


展開 發(fā)射器模塊(ShapeModule) ,將 粒子發(fā)射器半徑(Radius) 設(shè)置為0,因?yàn)槲覀兿M鹧鎻囊粋€(gè)點(diǎn)內(nèi)產(chǎn)生,而不是一個(gè)大的范圍。
接下來對(duì) 主模塊 進(jìn)行設(shè)置。
將 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) 設(shè)置為1,默認(rèn)值是5?;鹧媸遣粩嘌h(huán)的,不需要那么久的運(yùn)行時(shí)間。 將 粒子系統(tǒng)所能生成的最大粒子數(shù)量(Capacity) 設(shè)置為30,默認(rèn)值是100。 將 每秒發(fā)射的粒子數(shù)(RateOverTime) 設(shè)置為30,默認(rèn)值是10.粒子數(shù)量太多太少了都達(dá)不到預(yù)期的效果。 將 粒子生命周期(StartLifetime) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.3~0.4,火焰的粒子不需要運(yùn)行太久。 將 粒子初始速度(StartSpeed) 設(shè)置為0.1,默認(rèn)值為5,讓火焰有微微跳動(dòng)的感覺。 將 粒子初始大小(StartSize) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.5~0.8,這樣粒子的大小就會(huì)在0.5~0.8這個(gè)范圍內(nèi)隨機(jī)。 將 StartRotation(StartRotation) 選擇兩個(gè)常數(shù)的方式,設(shè)置為-30~308,給粒子添加隨機(jī)不同的旋轉(zhuǎn)角度。 將 粒子受重力影響的系數(shù)(GravityModifier) 設(shè)置為-1,火焰應(yīng)該是向上漂浮的,所以我們給他一個(gè)向上的重力系數(shù)。

此時(shí)可以看到,現(xiàn)在有點(diǎn)像火焰的感覺了,不過火焰并不是向上運(yùn)動(dòng)的,而是在自己的坐標(biāo)系內(nèi)向著Y軸正方向運(yùn)動(dòng)的,這顯然不是我們想要的效果。
將 控制粒子坐標(biāo)計(jì)算所在的坐標(biāo)系(SimulationSpace) 設(shè)置為World,默認(rèn)是Local,這樣火焰的運(yùn)動(dòng)就就在使用世界坐標(biāo)系了。


最后一步,給火焰上上色,勾選 顏色模塊(ColorOverLifetimeModule),調(diào)節(jié)一個(gè)你需要的顏色。

通過,調(diào)節(jié)不同的顏色參數(shù),可以達(dá)到很多不同的火焰特效。



要想把火焰效果做的完美,我們還需要,做一些錦上添花的優(yōu)化,比如不斷升起的火星,忽明忽暗的火光,這樣才會(huì)更逼真。
不斷升起的火星
新建粒子系統(tǒng),命名為Spark。
展開 發(fā)射器模塊(ShapeModule) 。
將 粒子發(fā)射器半徑(Radius) 設(shè)置為0.2,讓發(fā)射器的半徑和火焰的半徑差不多就可以了。
將 ?開合角度(Angle) 設(shè)置為0,讓圓錐形的發(fā)射器變成圓柱形的發(fā)射器。

主模塊設(shè)置
將 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) 設(shè)置為1,保持和火焰一致就好。
將 粒子系統(tǒng)所能生成的最大粒子數(shù)量(Capacity) 設(shè)置為20,火星的數(shù)量不宜過多。
將 每秒發(fā)射的粒子數(shù)(RateOverTime) 設(shè)置為20。
將 粒子生命周期(StartLifetime) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.3~0.5,火星生成之后大概0.3~0.5秒就會(huì)消失。
將 粒子初始大小(StartSize) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.08~0.12,火星的尺寸可以設(shè)置的小一點(diǎn)。
將 粒子初始速度(StartSpeed) 設(shè)置為8,默認(rèn)值為7,讓火星能達(dá)到的最大高度稍微高過火焰就好。

最后一步,調(diào)節(jié)一下火星的顏色,勾選 顏色模塊(ColorOverLifetimeModule),具體顏色可根據(jù)實(shí)際情況隨意調(diào)節(jié)。

看一下火星的效果

結(jié)合火焰一起的效果。


忽明忽暗的火光
新建粒子系統(tǒng),命名為Light。
展開 發(fā)射器模塊(ShapeModule) 。
將 粒子發(fā)射器半徑(Radius) 設(shè)置為0.01,火光和火星不同,只需要讓它在很小的方位內(nèi)生成就行了。
主模塊 設(shè)置。
將 粒子系統(tǒng)運(yùn)行時(shí)間(Duration) 設(shè)置為1。
將 粒子系統(tǒng)所能生成的最大粒子數(shù)量(Capacity) 設(shè)置為5,火光只需要很少的數(shù)量不斷生成就可以了。
將 每秒發(fā)射的粒子數(shù)(RateOverTime) 設(shè)置為5。
將 粒子初始速度(StartSpeed) 設(shè)置為0,火光不需要運(yùn)動(dòng),只需要在原地就好。
將 粒子生命周期(StartLifetime) 選擇兩個(gè)常數(shù)的方式,設(shè)置為0.2~0.5,讓粒子最長的生命周期比最短的還要大一倍,能最大程度感覺到閃動(dòng)的效果。
將 粒子初始大小(StartSize) 選擇兩個(gè)常數(shù)的方式,設(shè)置為1~2,以生成不同大小的火光。
將 粒子初始顏色(StartColor) 設(shè)置為接近火焰的顏色。


火光成品效果

Show Time

最后的話
一頓操作猛如虎,這樣,只值5毛錢的火焰特效就完成啦!
Cocos Creator 3D的粒子系統(tǒng)真心非常強(qiáng)大,理論上可以實(shí)現(xiàn)各式各樣的牛逼效果,
作為拋磚引玉的5毛錢特效,希望能引來更多小伙伴的作品出來!
等你來炫技!
奧利給!
工程使用Cocos Creator 3D 1。2制作,需要的朋友可以在公眾號(hào)后臺(tái)回復(fù) 5毛錢 獲取工程。
我要拉票了
五維剛開始寫文章不久,文筆還很生澀,我會(huì)努力寫的更好,把更有用的知識(shí)分享給大家。
如果你覺得這篇文章對(duì)你有用,受到一點(diǎn)點(diǎn)啟發(fā),請(qǐng)三連擊,在看,點(diǎn)贊,轉(zhuǎn)發(fā),支持一下五維!
“我是五維,一個(gè)進(jìn)擊財(cái)富自由的程序猿”
