Niagara特效系統(tǒng)中的基本概念
Niagara系統(tǒng)
Niagara發(fā)射器
Niagara Module Script
參數(shù)
Niagara系統(tǒng)
“Niagara系統(tǒng)”?是一種資源,可以直接在內(nèi)容瀏覽器中被創(chuàng)建:

Niagara發(fā)射器
打開“Niagara系統(tǒng)編輯器”,可以看到當(dāng)前Niagara系統(tǒng)所擁有的發(fā)射器:

“Niagara系統(tǒng)”是“Niagara發(fā)射器”的容器,“Cascade粒子系統(tǒng)”是“Cascade粒子發(fā)射器”的容器。但是這里有一個區(qū)別是:“Niagara發(fā)射器”可以在內(nèi)容瀏覽器中創(chuàng)建一個Asset:

而隨后在“Niagara系統(tǒng)”中能以剛才創(chuàng)建的發(fā)射器Asset繼承來創(chuàng)建新的發(fā)射器:

這也許意味著“Niagara發(fā)射器”擁有比“Cascade粒子發(fā)射器”更復(fù)雜的邏輯,并且Niagara系統(tǒng)想要更高的復(fù)用性。
需要強調(diào)的是,這里的關(guān)系是繼承,不是引用(意思是并沒有新發(fā)射器出現(xiàn),只是引用了現(xiàn)存的發(fā)射器Asset)或者模板(意思是新發(fā)射器是用發(fā)射器Asset復(fù)制出來了,一旦創(chuàng)建之后便和Asset脫離了關(guān)系)。
繼承的關(guān)系稍微復(fù)雜,簡單地講,繼承可以讓它有父項的行為,但是可以有獨自的變化。例如MyTestEmitter這個資源有一個Ribbon Renderer

繼承它創(chuàng)建出的新發(fā)射器也將擁有Ribbon Renderer
,但卻不能刪除:

不過,新創(chuàng)建的發(fā)射器可以添加新東西并刪除:

Niagara Module Script
“Cascade粒子系統(tǒng)”中 “模塊” 的角色將由Niagara Module Script扮演。但結(jié)構(gòu)上存在區(qū)別:
Niagara Module Script 不僅可以加入到“發(fā)射器”中,還可以加入到“系統(tǒng)”中。
Niagara Module Script 將明確屬于一個階段。
例如,可以看到下面幾個階段:

系統(tǒng)
?生成
階段系統(tǒng)
?更新
階段發(fā)射器
?生成
階段發(fā)射器
?更新
階段粒子
?生成
階段粒子
?更新
階段粒子
?事件
階段
一個和“Cascade粒子系統(tǒng)”重要的區(qū)別是:
這里的Niagara Module Script實際是引用一種Asset

而打開這個Asset中,有一個類似藍圖的可視化編輯腳本:

例如這個Color模塊。它有三個輸入:Color、Scale Color、Scale Alpha。這些輸入?yún)?shù)可以在“Niagara系統(tǒng)編輯器”中編輯。而在Color模塊的編輯器里,將可以看到它具體的行為:
它將Color拆分為RGB部分和alpha部分。其中RGB部分將乘算上Scale Color;而Alpha部分將乘算上Scale Alpha和AlphaScale(發(fā)射器的參數(shù))。最終顏色的結(jié)果將被設(shè)置到Color上(這里的Color是一個粒子的參數(shù),不是模塊的名字)
“Cascade粒子系統(tǒng)模塊”是用C++寫的,只能由程序員編輯并重新編譯才可以使用。而Niagara Module Script則可以用上面這種方式直接用可視化腳本的方式來編輯。體現(xiàn)了Niagara一個重要的設(shè)計目標:“讓美術(shù)師可以直接全權(quán)掌控效果而不必求助于程序員”。
此外,值得一提的是:Niagara Module Script的C++類是UNiagaraScript
,而有另外兩種Asset也是這個C++類。
也就是說總共有三種Asset都是UNiagaraScript
類:

如果打開Asset,可以看到他們的模塊使用位掩碼
不一樣,例如Niagara Module Script將打開模塊
這一項:

其余的Script的作用待后續(xù)觀察。
參數(shù)
剛才研究Color
模塊時看到,它最后的行為其實就是為了設(shè)置一個參數(shù):

需要注意的是,參數(shù)都有個“命名空間”。例如Color
的命名空間就是粒子
。
命名空間的層級從上至下依次是:
用戶
引擎
系統(tǒng)
發(fā)射器
粒子
在處于相對下層的情境中可以使用相對上層的參數(shù),但只能修改自己這個層級的參數(shù)。
例如:MyTestVar
是一個系統(tǒng)
命名空間的參數(shù)。

如果嘗試在“Niagara系統(tǒng)”中修改這個參數(shù),是可以的:

但如果嘗試在“Niagara發(fā)射器”修改這個參數(shù),就會被禁止:

————————————————
版權(quán)聲明:本文為CSDN博主「YakSue」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013412391/article/details/107590714