Unity學(xué)習(xí)筆記 Vol.71 使用Visual Effect Graph 制作多層次的特效
摘要

????VFX Graph 讓我們可以利用簡單易用的可視化工具,在Unity中制作出令人驚嘆的視覺效果。在本節(jié)中,我們將進(jìn)一步學(xué)習(xí) Unity 2019.3 中的 Visual Effect Graph 的用法。了解一些基礎(chǔ)知識(shí)和概念,幫助大家開始在 Unity 中設(shè)計(jì)視覺特效。了解詳細(xì)教程請參考官方視頻。

教程
????在這一節(jié)中,我們將近距離了解Unity 2019.3中Visual Effect Graph,學(xué)習(xí)基礎(chǔ)的知識(shí)和概念,幫助大家入門Unity視覺物效制作。在之前的專欄中,我們介紹了Visual Effect Graph,學(xué)習(xí)了如何通過修改紋理來制作炫酷的特效。

????而在本節(jié)中,我們將學(xué)習(xí)如何將多種技術(shù)組合起來,來制作出一種美觀的多層次特效。如果不熟悉Visual Effect Graph或者整個(gè)視覺特效,可以查看之前的專欄,理解本節(jié)中討論的部分概念。

????我們將使用Visual Effect Spaceship Demo場景,Spaceship Demo展示了各種可用Visual Effect Graph制作的特效。在這個(gè)鏡頭中,我希望用特效讓這臺(tái)控制臺(tái)表現(xiàn)為受損、故障的狀態(tài),顯示器上滾動(dòng)的紋理非常不錯(cuò),但我們還能加一些特效魔法,給效果添加些獨(dú)特又有意思的特性。

????新建一個(gè)Graph讓控制臺(tái)能冒出些火花,我們希望火花能間斷地生成。

????因此需要先添加Periodic Burst功能塊,將Delay Mode設(shè)為Random,Count設(shè)為1,Range設(shè)為0.5到1。

????接著是Initialize文本框,添加一個(gè)Random Lifetime功能塊,將范圍設(shè)為0.1到0.25,添加一個(gè)Size功能塊,將其設(shè)為1。

????在Output文本框中,將Main Textures設(shè)為Sparks火花紋理,將Uv mode設(shè)為flipbook。

????調(diào)整Flip Book Size匹配紋理的大小,接著將Color Mapping設(shè)為Gradient Mapped,將Blend Mode設(shè)為Additive。

????這下我們就有了一個(gè)火花紋理,目前粒子效果在生成時(shí)會(huì)在紋理的中心,但我們想讓火花從紋理的底部生成,那我們來調(diào)整下偏移屬性。

????在Output中添加Set Pivot XYZ功能塊,將y軸位置偏移-0.5個(gè)單位,這下火花的底部與控制臺(tái)對齊了。

????再添加Orient:Face Camera Plane功能塊,讓火花能一直面對著攝像機(jī)。

????到這看起來很不錯(cuò)了,生成的火花紋理可以很好地對齊控制臺(tái),而我們有四種可以使用的 紋理。

????我們?yōu)镮nitialize文本框添加Set Text Index Random功能塊,讓生成的火花能有一定的變化。

????最后,為粒子添加alpha和大小的修改,讓其從控制臺(tái)噴出后可以逐漸消失。

????在Output中,添加Scale over Life與Alpha over Life功能塊?,F(xiàn)在從控制臺(tái)迸出的火花更加好看了,不過光有火花沒那么亮眼,要想讓人眼前一亮,我們需要用其它效果層層疊加到火花上。
????Visual Effect Graph的一個(gè)優(yōu)點(diǎn)是,可以同時(shí)修改多個(gè)特效文本框,制作出多層次特效,我們再來拓展下Graph,添加一些會(huì)跟隨火花紋理,從控制臺(tái)迸發(fā)出的動(dòng)態(tài)粒子,目前的生成文本框每次僅會(huì)調(diào)用一個(gè)紋理,而要制作動(dòng)態(tài)火花,需要生成大量的粒子,因此我們得創(chuàng)建另一個(gè)Spawn (Context)。

????添加一個(gè)Single Burst功能塊,將Spawn Mode設(shè)為Random,我們需要有大量的粒子迸發(fā)出來,所以要將每次迸發(fā)的Count計(jì)數(shù)設(shè)為10到50,單個(gè)Single Burst功能塊在特效生成期間僅會(huì)觸發(fā)一次,而我們希望每次主紋理生成時(shí),火花粒子能重復(fù)生成,從第一個(gè)Spawn文本框拖出事件輸出,鏈接到第二個(gè)Spawn文本框start屬性上。


????現(xiàn)在,每當(dāng)?shù)谝粋€(gè)框的 Spawn事件被觸發(fā),第二框的Spawn事件也會(huì)被觸發(fā),與第一個(gè)效果同步。

????在Output中,將Main Texture設(shè)為Spark Single。

????同時(shí)為了顯示出火花,再添加Set Lifetime Random功能塊,將數(shù)值設(shè)為0.3到2。

????添加Set Velocity Random功能塊來加入爆炸效果,讓粒子向上運(yùn)動(dòng)、向兩側(cè)稍微偏移。

????在Update文本框中,再添加些重力效果,讓火花的運(yùn)動(dòng)更自然,這效果好多了,不過圖像上依舊能進(jìn)一步制作,讓粒子看起來更像從控制臺(tái)里跳出來的電火花,粒子有點(diǎn)太大了。

????那我們來添加Set Size Random功能塊,將大小設(shè)得小一點(diǎn)。

????接著在Output中,將Color Mapping從Default改為Gradient Mapped,將Blend Mode設(shè)為Additive,效果很不錯(cuò),不過我們還能繼續(xù)制作,讓火花看起來更棒。

????我們來添加Set Direciton by Speed功能塊,為火花制造些混亂的效果。功能會(huì)根據(jù)火花的矢量大小進(jìn)一步分隔開粒子。

????然后,在Update文本框中 添加Turbulance功能塊,功能會(huì)為粒子的移動(dòng)加入些干擾,讓火花看起來會(huì)四處彈跳,要讓效果正確動(dòng)作,我們需要為粒子添加些質(zhì)量。

????在Initialize文本框中,添加個(gè)Set Mass Random功能塊。

????再細(xì)微調(diào)整下干擾效果,讓阻力和力度隨時(shí)間而變化,新建兩個(gè)Sample Curve節(jié)點(diǎn),分別連接到Intensity和Drag屬性上,再添加一個(gè)Age Over Lifetime節(jié)點(diǎn)作為時(shí)間樣本,在Intensity曲線上,一開始將值設(shè)為4,再隨著時(shí)間迅速減小強(qiáng)度,在Drag曲線上,我們在粒子生命周期的起始處創(chuàng)建一個(gè)平緩的曲線,最大值約為0.2。
????看起來很不錯(cuò),我們還有最后一種方法,可為效果的爆炸添加更多動(dòng)感,火花在剛出現(xiàn)時(shí)一般會(huì)比較長,然后再慢慢冷卻、消失,我們可通過在生命周期中修改粒子的大小,來模擬這種效果。

????在Output文本框中,添加Multiply Scale功能塊,將Channel設(shè)為只影響Y軸,接著使用Sample Curve和Age over Lifetime節(jié)點(diǎn)來設(shè)置數(shù)值,火花應(yīng)在開始時(shí)較長,在與空氣接觸后迅速縮小,因此在曲線中將開始時(shí)數(shù)值設(shè)為約30,接著讓曲線大幅下落,隨時(shí)間推進(jìn)迅速減小粒子的大小。

????目前效果看起來很怪,因?yàn)榛鸹ǘ贾怀粋€(gè)方向,要讓效果能正確運(yùn)行,我們需要讓它能對齊粒子的方向。

????新加一個(gè)Orient Alone Verlocity功能塊到Output文本框中。


????我們可以繼續(xù)微調(diào)粒子的大小和尺寸,直到效果合適,這個(gè)單個(gè)粒子便會(huì)轉(zhuǎn)向運(yùn)動(dòng)的方向了,并且會(huì)在穿過空氣時(shí)冷卻下來,通過將兩種效果堆疊起來,我們制作出了一種很不錯(cuò)的機(jī)械故障特效。但是,我們可以為Visual Effect Graph繼續(xù)添加特效層和更多紋理。比如,如果想要凸顯出爆炸,可以添加上一層Gradient Mapped的煙霧效果,讓其看起來就像一個(gè)小火球從火源彈出來。

????此外我們還能在Additive Blend Mode下添加分層煙霧,讓它隨火花迸發(fā)出現(xiàn),接著可以添加第二層帶alpha的煙霧,設(shè)置一個(gè)較大的矢量,作為爆炸時(shí)升起的黑云,通過像這樣嘗試Visual Effect Graph中的幾種不同設(shè)置,將不同系統(tǒng)組合為層級(jí),可以輕松地制作出好看的視覺特效。
