MMD聯(lián)動Unity學習筆記 Vol.10.2

前言
????之前官方達哥講得Visual Effect Graph還有東西沒有完全吃透,筆記也沒寫全,這期還是補充。主要內(nèi)容是Point Cache(點緩存)和Binder(綁定)功能。

Point Cache(點緩存)

????點緩存我們是使用其它3D軟件,比如3DMax制作模型,但是輸出不是使用FBX,而是用點緩存的格式(通常為pc2文件格式)。輸出之后就可以給特效使用。
????需要注意的是,Unity使用并不是一般pc2格式文件,Up用Blender導出的pc2文件并不能用于Unity中(不排除姿勢不對的可能)。但使用Unity自帶的烘焙工具對FBX文件中的網(wǎng)格進行加工是可以正常使用的。它的后綴是Unity特有的pcache格式。另外,據(jù)說Houdini可以制作出Unity可以使用的點緩存文件,而Up并不會Houdini,所以暫時無法親身驗證。

范例
????下面我們用一個舉例來看看效果。首先,要創(chuàng)建設置為點緩存的點緩存資源。你需要為Point Cache節(jié)點設置Point Cache Asset文件,并且需要提前從紋理和網(wǎng)格信息創(chuàng)建Point Cache Asset文件。

? ? 要創(chuàng)建點緩存資源文件,請從Unity菜單中選擇Window-> Visual Effects-> Utilities-> Point Cache Bake Tool。

????當點緩存烘焙工具啟動后,我們選擇模型設置在Mesh后空白處(您可以在Mesh中設置其他網(wǎng)格形狀)。
????這次我們只在該位置使用Point Cache,因此我們將取消Export的勾選。點數(shù)是從網(wǎng)格形狀創(chuàng)建的點數(shù)。完成后,按“Save to pCache file(保存到pCache文件...)”按鈕以保存“點緩存資源”文件。點緩存資源文件現(xiàn)已完成。

VFX操作
????在Assets區(qū)域中,右鍵單擊并選擇Create-> Visual Effects-> Visual Effect Graph,并將文件命名為MyVFX。在層次面板上拖放MyVFX文件。

然后創(chuàng)建一個VFX游戲對象,選擇它并在Inspector中按Visual Effector的Edit按鈕。

創(chuàng)建Spawn
????我們將所有文本全部刪除。并在任意位置按空格鍵,從Context(文本)中選擇Spawn,然后創(chuàng)建Spawn文本。

Spawn上下文是生成粒子的文本,因此將塊設置為在此生成。選擇Spawn文本后,按空格鍵并選擇Spawn>Single Burst。將Single Burst的計數(shù)設置為5000并生成5000個粒子。

創(chuàng)建Initialize
????接下來,當沒有任何內(nèi)容時,按空格鍵選擇Context(文本)>Initialize(初始化)。Initialize文本是初始化每個粒子的文本。拖動并從Spawn文本的Spawn事件連接到Initialize的文本。將Initialize的容量設置為5000。容量是最大顆粒量。選擇Initialize的文本,按空格鍵并選擇Attribute> Map> Set Position from Map。

創(chuàng)建點緩存節(jié)點
????在VFX中沒有任何內(nèi)容的情況下按SPACEBAR,然后選擇Operator-> Utility-> Point Cache。在“點緩存”中,拖放先前創(chuàng)建的“點緩存資源”文件并進行設置。

從Map屬性連接到點緩存位置和初始化設置位置。

創(chuàng)建更新上下文
????在VFX中的任意位置按空格鍵,然后選擇Context>Update。Update文本是更新粒子信息的文本。從Initialize文本中的Particle拖到要連接的Update文本。
創(chuàng)建一個塊來改變粒子的角度
????選擇Update文本后,選擇Space(空間)>Attribute(屬性)>Set(設置)>Set Angle(設置角度)。選擇“設置角度”塊后,在“檢查器”中的Random(隨機)選擇“Per Component(每個組件)”。
????由于塊名稱更改為Set Angle.XYZ Random,因此分別為XYZ for Max輸入360。設置Angle.XYZ Random隨機確定Min和Max之間的XYZ角度。

創(chuàng)建一個塊來改變粒子的比例
????選擇更新文本后,按空格鍵選擇Attribute(屬性) >Set(設置) >Set Scale(設置比例)。選擇“設置比例”塊后,將“檢查器”中的“隨機”更改為“每個組件”。
????設置Scale.XYZ塊名稱將更改為Random,因此為Min的XYZ輸入-0.2,為Max的XYZ輸入0.2。

創(chuàng)建一個塊來更改粒子的顏色
????選擇更新文本后,按空格鍵并選擇Attribute(屬性) >Set(設置) >Set Color(設置顏色)。選擇“設置顏色”后,將“檢查器”中的“隨機”更改為“每個組件”。
????將Set Color Random塊中的Max的XYZ設置為0并使其變黑。

為粒子創(chuàng)建渲染塊
????現(xiàn)在我們已經(jīng)創(chuàng)建并更新了粒子,我們將創(chuàng)建一個渲染塊。按空格鍵,在VFX窗口中沒有任何內(nèi)容,然后選擇Context>Lit Cube Output(亮點方形輸出)。Lit Cube Output文本是輸出受光影響的立方體的文本。通過從Update Update粒子拖放到Lit Cube Output文本來連接。

????選擇Lit Cube Output文本后,將Inspector的Use Base Color Map設置為None。

使用點緩存完成效果的示例
????樣品現(xiàn)已完成。在生成器文本中指定的粒子數(shù)是在Point Cache塊中指定的網(wǎng)格點上生成的。在“更新”文本中,更改粒子的個別角度,比例和顏色,并將其顯示在多維數(shù)據(jù)集中。
????此示例中,角度,比例和顏色在更新文本中更改,因此轉換更快。如果要更改間隔,最好使用輸出文本中的時間系統(tǒng)塊隨時間更改屬性。

只需幾個簡單的設置即可創(chuàng)建出色的效果。(^ ^)/
參考:UnityのVFXのPoint Cacheを使ったサンプル
https://gametukurikata.com/effect/vfxpointcache

Binder(綁定)功能

????比如我這里有一個煙霧特效,通常來說噴發(fā)口在鼠標這邊,你可能希望噴出來的特效是在原地的,或者是按照它的路徑運行。一般來說,你把特效綁在某物件上,物件移動,特效會整體隨著物件移動,這不是我想要的。
????下面我們用VFX的綁定功能來解決這個問題。

????首先我們給粒子特效添加VFX Position Binder組件。

????這里我們可以看到參數(shù)綁定下面有紅色的方塊,點中下面三角提示綁定未正確設置,說明需要指明Position和Target(Transform)。假如我們有一個Cube(新建一個)做為粒子煙霧的噴發(fā)器。
????我們給粒子VEG中Initialize文本增加一個Set Position的塊,然后打開黑板,添加一個Vector3的變量,記得把它暴露出去,將它和Set Position節(jié)點連接起來。接著我們在VFX Parameter Binder組件里,把Target設置為Cube。這時我們移動Cube,就會發(fā)現(xiàn)粒子會很自然地隨著盒子移動,而不是死板地跟隨,不會因為特效噴出去而受到影響,這讓我們可以很方便地綁到很多物件上。
