Unity學(xué)習(xí)筆記 Vol.72 使用 Visual Effects Graph 渲染粒子
摘要

????在本節(jié)中,我們將介紹在Unity中使用Visual Effects Graph渲染粒子的一些基礎(chǔ)知識(shí)。我們將學(xué)習(xí)什么是Visual Effect Graph(VFX Graph)工具,以及它如何使用,能制作出什么內(nèi)容,我們還將了解在Unity中入門視覺特效制作時(shí),需要知道的基礎(chǔ)概念。如果你是名特效藝術(shù)家,想要在Unity中制作高性能視覺特效,或者你是名老用戶,希望明確VFX Graph與舊版工具,如現(xiàn)有粒子系統(tǒng)的不同,關(guān)注我就對(duì)了。詳細(xì)教程及項(xiàng)目下載鏈接請(qǐng)參考官方視頻。

教程
????在討論Unity的視覺特效時(shí),我們一般討論的是一個(gè)在2D、3D空間生成像素點(diǎn)的系統(tǒng),這些點(diǎn)又稱作"粒子“。我們可以修改系統(tǒng)的屬性,確定粒子的生成數(shù)量,移動(dòng)方式和渲染方式。

????粒子系統(tǒng)可以為游戲制作各式視覺特效,比如煙霧、火焰、雨水或爆炸,你見到的許多游戲視覺特效,都是用粒子系統(tǒng)制作的。

????要在Unity中制作視覺特效,我們可以使用內(nèi)置的粒子系統(tǒng),或者VFX Graph。

????VFX Graph是一個(gè)節(jié)點(diǎn)式工具,具備強(qiáng)大、易用的使用方法,用以制作實(shí)時(shí)視覺特效。

????VFX Graph將許多計(jì)算轉(zhuǎn)移到了GPU,允許制作上百萬個(gè)粒子,模擬巨大、復(fù)雜又耗能極高的特效,VFX Graph即能用于高清渲染管線和通用渲染管線,VFX Graph作為高清渲染管線的一部分已經(jīng)預(yù)裝在了管線中,但在通用渲染管線里,需要先用Package Manager安裝。

????選擇Window > Package Manager,選擇VFX Graph點(diǎn)擊Install將其添加到項(xiàng)目中。

????我們將使用Visual Effect Spaceship Demo場景,Spaceship Demo展示了許多種可用VFX Graph制作的效果。
?

???我們可在Project窗口新建視覺特效,選擇Create > Visual Effects > Visual Effect Graph。

????每個(gè)VFX Graph將作為一個(gè)視覺特效資源儲(chǔ)存在項(xiàng)目中,方便重復(fù)使用、指定到項(xiàng)目中,不用在場景中選中特效便能編輯效果。

????選中資源時(shí),我們能在檢視器中查看特效的預(yù)覽,能看到在創(chuàng)建新的VFX Graph時(shí),系統(tǒng)會(huì)生成一個(gè)默認(rèn)效果。

????我們可在GameObject上添加Visual Effect組件,將特效添加到場景中。

????或者選擇創(chuàng)建菜單中的Visual Effects > Visual Effect。

????在檢視器中將VFX資源指定到組件內(nèi)。

????也能直接將VFX資源拖到層級(jí)或場景視圖中,系統(tǒng)會(huì)自動(dòng)創(chuàng)建起帶有組件的對(duì)象,創(chuàng)建好特效后,再來看看如何在VFX Graph中制作特效。

????雙擊VFX Graph資源打開圖表,能看到圖中已經(jīng)有渲染視覺特效所需的文本框、功能塊,但是為了學(xué)習(xí),我們刪去這部分,從零開始制作視覺特效。

????在VFX Graph中制作粒子特效需要四種文本框,一個(gè)Spawn文本框。

????一個(gè)Initialize文本框。


????Update文本框和Output文本框。
????首先講Spawn文本框,Spawn文本框決定了特效的 初始化方法,控制系統(tǒng)的啟動(dòng)時(shí)間與方式,按下空格鍵。

????在Spawn框內(nèi)加入功能塊,來控制粒子系統(tǒng)的運(yùn)行時(shí)間,我們希望效果能每過幾秒生成個(gè)粒子,那添加個(gè)Periodic Burst功能塊,將Count設(shè)為1,Delay為2。

????設(shè)置完后,新建Initialize文本框,設(shè)定粒子的初始屬性,一開始先使用簡單的Set Velocity功能塊,讓粒子隨時(shí)間向上運(yùn)動(dòng)。

????接著創(chuàng)建Update文本框,Update文本框?qū)⒂糜诳刂泼繋系牧W颖憩F(xiàn),目前不必更改。

????最后,我們需要使用Output文本框來渲染粒子,Output文本框確定了粒子的 類別、朝向及使用的著色器類型,在新建的Output文本框中設(shè)定將粒子渲染成Quad(四邊形)。

????再看到場景,我們現(xiàn)在每隔幾秒會(huì)生成一個(gè)向上運(yùn)動(dòng)的粒子,目前Output文本框使用了臨時(shí)的粒子圖像作為紋理。

????我們暫時(shí)把它改為另一種粒子紋理,粒子還有點(diǎn)小。

????在Initialize文本框新加Set Size功能塊,稍微放大點(diǎn)大小。

????這下粒子更加明顯了。

????但一移動(dòng)相機(jī),粒子就會(huì)變扁,這是因?yàn)榱W幽J(rèn)會(huì)在Transform的前方向上被渲染。

????我希望粒子能一直正對(duì)攝像機(jī),那在Output文本框中新加一個(gè) Face Camera Position功能塊。

????這下不論攝像機(jī)從哪看,粒子會(huì)一直面朝著攝像機(jī),這是種常用的粒子技術(shù),渲染紋理的四邊形會(huì)一直面對(duì)攝像機(jī),便能制作出一種高性能的3D對(duì)象效果,VFX Graph工作流有一個(gè)優(yōu)點(diǎn),同個(gè)資源可制作出不同的特效,部分屬性可顯露在檢視器中。

????在圖表中,為黑板新建一個(gè)屬性,稱為Velocity,設(shè)定其為Exposed,把它拖入圖表,連接到Velocity功能塊上,接著新加Set Color功能塊,在黑板中新建對(duì)應(yīng)屬性。

????這下我們就能在檢視器中調(diào)整屬性、修改特效的外觀了,因?yàn)楸┞冻龅膶傩詴?huì)覆寫VFX Graph的屬性。

????我們可用同個(gè)特效資源創(chuàng)建新實(shí)例,制作出同個(gè)特效的變體。

????最后,我們來讓粒子能在生命周期中淡入淡出,在Initialize文本框中新加Set Lifetime功能塊。

????要想在生命周期間的每幀上修改alpha,需要在Update文本框中添加Set Alpha Life功能塊。

????這下所有粒子都會(huì)淡入淡出了,在短短幾分鐘內(nèi),我們就使用這些資源制作出一個(gè)基本的視覺特效,希望你了解了使用VFX Graph是多么簡單,在Unity中設(shè)計(jì)、制作視覺特效有多么輕松。在學(xué)習(xí)了本節(jié)里的技術(shù)后,再多多嘗試不同的功能塊,你應(yīng)該就能在自己的項(xiàng)目中制作出帥氣的視覺特效了。