在前期關(guān)于Unreal 4 引擎的技術(shù)推文中,UWA重點(diǎn)介紹了粒子系統(tǒng)的重點(diǎn)模塊和高級(jí)功能。本文將進(jìn)行介紹Unreal 4引擎中的新粒子系統(tǒng):Niagara。需要說(shuō)明的是,目前的Niagara粒子系統(tǒng)仍處于測(cè)試階段,并非最終完成版。
這是UWA發(fā)布的第10篇Unreal 4技術(shù)文章,之前我們已經(jīng)詳細(xì)介紹過(guò)渲染系統(tǒng)、動(dòng)畫系統(tǒng)以及部分粒子系統(tǒng)的功能介紹,詳情請(qǐng)轉(zhuǎn)至UWA博客(blog.uwa4d.com)。同時(shí),特別感謝Unreal中國(guó)團(tuán)隊(duì)對(duì)于本篇文章中Unreal引擎相關(guān)內(nèi)容的審核,并在UWA團(tuán)隊(duì)學(xué)習(xí)其引擎的道路上提供的大力支持。
一、Niagara使用
1.1 開(kāi)啟功能
在最新的Unreal 4引擎中,Niagara模塊已經(jīng)被加入到引擎的插件中。需要使用時(shí),只需通過(guò)菜單Edit->Plugin打開(kāi)Plugin窗口,搜索”Niagara”并選擇Enabled即可,如下圖所示:
然后,在Content Browser中點(diǎn)擊鼠標(biāo)右鍵會(huì)出現(xiàn)新的菜單選項(xiàng)FX,該子菜單中包含了Niagara的各種資源選項(xiàng),如下圖所示:
其中,上圖紅色框中顯示了Niagara中包含的各種資源:Niagara System為粒子系統(tǒng)資源,Niagara Emitter為發(fā)射器資源,Niagara Script為粒子系統(tǒng)邏輯腳本資源,Niagara Parameter Collection為參數(shù)集合資源。接下來(lái),本文將分別對(duì)其進(jìn)行介紹。
1.2 Niagara System
Niagara System資源類似于Cascade中的Particle System資源。其創(chuàng)建方式可以通過(guò)右鍵菜單”FX->Niagara System”創(chuàng)建,將其拖入場(chǎng)景中時(shí),引擎會(huì)自動(dòng)創(chuàng)建Niagara Actor,并在其Niagara Component中引用該Niagara System資源:
其中,上圖紅色框顯示了Niagara System資源,紅色箭頭表示將其拖入場(chǎng)景,藍(lán)色框表示引擎生成的Niagara Actor,綠色框表示在其Niagara Component中引用拖入的Niagara System資源。
雙擊Niagara System資源可打開(kāi)編輯器,如下圖所示:
其中,上圖紅色框顯示了Niagara System包含兩個(gè)Niagara Emitter,在其區(qū)域內(nèi)通過(guò)右鍵菜單可添加更多Niagara Emitter。Niagara System與Cascade的Particle System類似,可以包含多個(gè)Niagara Emitter,其執(zhí)行順序是從上至下。上圖中綠色框顯示了Niagara System的腳本節(jié)點(diǎn)圖,其中包含兩部分:Spawn和Update。Spawn只在該Niagara System初始化時(shí)執(zhí)行一次,Update則會(huì)在每一幀都執(zhí)行。從Niagara System的節(jié)點(diǎn)圖中可知,其執(zhí)行過(guò)程是順序執(zhí)行其包含的所有Niagara Emitter的Spawn和Update節(jié)點(diǎn)。
1.3 Niagara Emitter
Niagara Emitter類似于Cascade中的Emitter。只是在Cascade中,Emitter的創(chuàng)建和編輯都在Particle System資源中,而在Niagara中它成為一個(gè)獨(dú)立的資源。通過(guò)右鍵菜單”FX->Niagara Emitter”可創(chuàng)建該資源,雙擊該資源可打開(kāi)其編輯器,如下圖所示:
在目前最新的4.18.3版本中,新創(chuàng)建的Niagara Emitter會(huì)出現(xiàn)一系列報(bào)錯(cuò)信息。上圖紅色框顯示了錯(cuò)誤信息。同時(shí)打開(kāi)Selected Emitter Graph窗口會(huì)發(fā)現(xiàn)Emitter的節(jié)點(diǎn)圖默認(rèn)情況下為空。此時(shí)可先點(diǎn)擊上圖中的一系列Fix Error按鈕,引擎會(huì)自動(dòng)添加相應(yīng)的Module,并生成相應(yīng)的節(jié)點(diǎn)圖。添加完成后如果發(fā)現(xiàn)還有錯(cuò)誤提示,可先關(guān)閉Emitter編輯器界面,重新打開(kāi),錯(cuò)誤提示便會(huì)消失,如下圖所示:
其中,上圖中Emitter的Module設(shè)置界面中顯示了6種不同類型的Module。設(shè)計(jì)者在這6種類型中添加不同的Module可以實(shí)現(xiàn)不同的粒子效果,其操作方式與Cascade中的Emitter添加Module非常相似。但與Cascade最大的不同點(diǎn)在于,Niagara中的這些Module除了可以使用引擎內(nèi)置的之外,還可以使用設(shè)計(jì)者通過(guò)節(jié)點(diǎn)圖編輯的自定義Module。而用戶自定義節(jié)點(diǎn)圖即為Niagara Script,本文將在后續(xù)內(nèi)容中進(jìn)行說(shuō)明。
Niagara Emitter中不同塊的Module執(zhí)行時(shí)機(jī)也不相同:
Emitter Spawn 表示Emitter Spawn時(shí)執(zhí)行的Module,并且只執(zhí)行一次
Emitter Update 表示Emitter Update時(shí)執(zhí)行的Module,每幀都執(zhí)行
Particle Spawn 表示Particle Spawn時(shí)執(zhí)行的Module,并且只執(zhí)行一次
Particle Update 表示Particle Update時(shí)執(zhí)行的Module,每幀都執(zhí)行
Add Event Handler 表示Emitter事件相關(guān)的Module
Render 表示Emitter渲染相關(guān)的Module
打開(kāi)Selected Emitter Graph窗口可以看到此時(shí)引擎已經(jīng)自動(dòng)生成了節(jié)點(diǎn)圖,并且節(jié)點(diǎn)圖分為上述不同類型,如下圖所示:
其中,上圖紅色框顯示了Set Particle Position節(jié)點(diǎn),綠色框顯示了該節(jié)點(diǎn)是用于在Particle Spawn時(shí)執(zhí)行并輸出結(jié)果。
而Emitter節(jié)點(diǎn)圖正好對(duì)應(yīng)了添加的Module,如下圖所示:
其中,上圖紅色框顯示了Emitter Module設(shè)置界面中Set Particle Position Module,綠色框顯示了其屬于Particle Spawn類型。
由此可見(jiàn),Niagara的總體結(jié)構(gòu)與Cascade十分相似,都是分為兩層:?jiǎn)蝹€(gè)Particle System可包含多個(gè)不同的Emitter,通過(guò)設(shè)置不同Emitter以及參數(shù)可實(shí)現(xiàn)不同效果。但Niagara比Cascade更為強(qiáng)大的是,它能讓設(shè)計(jì)者自定義Module,其編輯方式為節(jié)點(diǎn)圖。
1.4 Niagara Script
Niagara Script在目前4.18.3版本中直接通過(guò)右鍵菜單創(chuàng)建會(huì)導(dǎo)致編輯器崩潰。繞開(kāi)該問(wèn)題的一個(gè)方式是先打開(kāi)一個(gè)引擎內(nèi)置的Script,然后將其另存為新的腳本,再進(jìn)行編輯。為了使Emitter每幀都發(fā)射粒子,我們可以在Emitter Update中添加Spawn Rate Module,如下圖所示:
其中,紅色框顯示了Spawn Rate Module,綠色框顯示了目前發(fā)射的粒子數(shù)、Emitter的耗時(shí)以及所占用內(nèi)存,通過(guò)該數(shù)據(jù),設(shè)計(jì)者可以控制粒子的性能。雙擊紅色框內(nèi)的Spawn Rate即可打開(kāi)該Script,如下圖所示:
然后,將其另存為新的名字,即可創(chuàng)建出一個(gè)Niagara Script。在Niagara Script詳細(xì)信息界面中可選擇不用Usage來(lái)實(shí)現(xiàn)不同用途,其中包括:Module、Function以及Dynamic Input。分別表示該Script是用作Module,函數(shù)以及輸入?yún)?shù),如下圖所示:
Module Usage Bitmask參數(shù)表示如果該Script是當(dāng)作Module使用,其使用的類型是哪些。該設(shè)置能夠在Module設(shè)置時(shí)根據(jù)歸類進(jìn)行提示,并提供快速選擇。Category參數(shù)方便對(duì)Script進(jìn)行分類,在設(shè)置時(shí)可根據(jù)分類快速查找。
其中,上圖紅色框宣示了Module Usage Bitmask的選項(xiàng)。在上圖中Emitter Spawn Script和Emitter Update Script被選中,因此在Module編輯界面添加Module時(shí),在Emitter Spawn和Emitter Update兩類中會(huì)出現(xiàn)該Script。
此時(shí),我們雖然添加了Spawn Rate Module,使得場(chǎng)景中出現(xiàn)了粒子,但是默認(rèn)情況下粒子為灰色,難以分辨。因此,我們將Render中的材質(zhì)修改一下,便可看到預(yù)覽場(chǎng)景中出現(xiàn)了該材質(zhì)的粒子,如下圖所示:
其中,上圖紅色方框顯示了修改粒子材質(zhì)為M_Spark。于是可在左圖預(yù)覽界面中看到粒子。為了讓粒子動(dòng)起來(lái),我們還需在Particle Update類型中添加Update Velocity Module:
并且,修改Particle Spawn中的Set Particles Velocity Module的Velocity參數(shù)z為10.0:
即可看到粒子向z方向移動(dòng):
我們用上述方法實(shí)現(xiàn)了簡(jiǎn)單的粒子移動(dòng),但Niagara提供的功能和節(jié)點(diǎn)遠(yuǎn)不止如此。通過(guò)編輯節(jié)點(diǎn)圖,設(shè)計(jì)者可以控制粒子發(fā)射以及運(yùn)動(dòng)的整個(gè)過(guò)程,從而可以實(shí)現(xiàn)任意想要的粒子效果。
二、Niagara與Cascade比較
總體來(lái)說(shuō),UWA認(rèn)為Niagara粒子系統(tǒng)在功能方面的優(yōu)勢(shì)主要有以下兩種:
(1) Niagara提供了類似于BluePrint的編輯方式,從而使粒子系統(tǒng)的制作更加方便、更加靈活;
(2) 不光對(duì)粒子發(fā)射器可以進(jìn)行控制,同時(shí)讓用戶可以對(duì)粒子也可以進(jìn)行控制,從而可以讓用戶自定義粒子的運(yùn)動(dòng)狀態(tài),進(jìn)而制作出更為復(fù)雜的粒子特效。
當(dāng)然,老版本Cascade粒子系統(tǒng)已經(jīng)包含了大量常用的粒子系統(tǒng)效果。UWA認(rèn)為,如果Cascade能夠滿足您的需求,則直接使用Cascade進(jìn)行編輯即可,畢竟使用已有功能可以節(jié)省開(kāi)發(fā)時(shí)間。而當(dāng)Cascade中提供的功能無(wú)法滿足需求時(shí),則可考慮使用Niagara。設(shè)計(jì)者可以通過(guò)Niagara實(shí)現(xiàn)更加符合項(xiàng)目需求的、特殊的粒子效果。
聯(lián)系客服