愛鋒貝

標(biāo)題: UE4 2.5D Niagara Dash VFX [打印本頁]

作者: 小強(qiáng)實驗室    時間: 2022-1-18 18:22
標(biāo)題: UE4 2.5D Niagara Dash VFX
大家好,這里是Wild Wolf,距離上次更新快有半年時間了~~~
其實攢了很多內(nèi)容想寫,但是因為項目保密的關(guān)系不能寫~~不然就翻車了。。。
參與獨立游戲研發(fā)接近半年了,前期準(zhǔn)備階段就在嘗試去實現(xiàn)和解決各種腦海里想要實現(xiàn)的功能和效果,所以
本人作為一名TA幾乎參與了一款游戲開發(fā)所有模塊的工作,包括程序,動畫,材質(zhì),場景優(yōu)化,特效以及工具等等,小團(tuán)隊就這樣,身兼多職~~~
然后某一天主程序(連策劃都沒有,程序自己當(dāng)策劃  hhhhh -.-)說需要制作一個人物沖刺的特效,行,按照慣例先看看某tube或者B站有木有類似的效果,然后自己仿一個出來,這年頭沒有誰做特效從0開始的吧- -    都是東拼西湊完事~~~    然后問題就來了,因為做的獨立游戲是橫板2.5D,網(wǎng)上的效果以3D居多,看了一圈下來居然能參考的所剩無幾,有一個看上去感覺還行的但是制作方式有很大限制~~~   

(, 下載次數(shù): 18)

通過材質(zhì)偏移實現(xiàn)類似拖尾的效果,受限于材質(zhì)太單一

回到我們自己的主角上十個不同的材質(zhì)沒辦法這么做,所以只能靠自己,大概琢磨了兩三天玩出來一個不是那么復(fù)雜的效果~~~

(, 下載次數(shù): 19)
場景和人物資源東拼西湊的,后期全部要換掉,所以不礙事~~
Dash沖刺效果總共三個部分組成:
1,Niagara制作粒子拖尾和Sparks
2,Ghost Trails 幽靈拖尾
3,藍(lán)圖實現(xiàn)整體邏輯

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
首先對整體效果做一個拆分
1,Niagara制作粒子拖尾和Sparks:
進(jìn)入Niagara系統(tǒng),組成很簡單,兩個發(fā)射器

(, 下載次數(shù): 20)

分別負(fù)責(zé)采樣人物骨骼位置信息和閃光粒子

NE_SampleSkeletalMesh    單獨啟用效果

(, 下載次數(shù): 21)
可以看出,僅僅只是一個模擬速度感的一個抽象的效果,但其實是黏在主角人上的一堆模型~~~
關(guān)閉所有效果調(diào)節(jié)的Module的樣子~~

(, 下載次數(shù): 21)
(, 下載次數(shù): 19)

https://www.zhihu.com/video/1465016696888680448
就是在人物身上釋放一群模型同時跟隨人物移動~~如何實現(xiàn)的呢,其實官方在很早的直播就有講到~~包括印度阿三的教程也有涉及到~~~
傳送門:
兩個核心的Module->initialize Mesh Reproduction Sprite 和 Update Mesh Reproduction Sprite
為了細(xì)化每一個步驟,這里我們用小白人做演示:
新建一個NiagaraSystem,選擇Fountain,只保留基礎(chǔ)模塊,其它全刪

(, 下載次數(shù): 21)
接著添加Initialize Mesh Reproduction Sprite模塊,預(yù)覽模型選擇小白人

(, 下載次數(shù): 21)
加高粒子發(fā)射個數(shù)至20000,Emitter State修改粒子循環(huán)為只執(zhí)行一次,循環(huán)周期改為Infinite,粒子生命周期改為0.1秒,可以在預(yù)覽窗口看到效果

(, 下載次數(shù): 19)
拖入場景看到粒子附著在小白人身上~~

(, 下載次數(shù): 18)
但是這一步僅僅只是通過Niagara粒子系統(tǒng)采樣模型頂點的世界位置信息作為例子生成的位置,說簡單點,就是粒子剛剛出生,那么要讓粒子黏在小白人身上我們需要實時更新粒子的位置信息,這里就需要繼續(xù)添加
Module->Update Mesh Reproduction Sprite
修改粒子渲染為GPUSim,減少釋放個數(shù)到5000左右,修改粒子大小為4

(, 下載次數(shù): 19)
到這一步感覺好像沒什么變化哈~~~   稍安勿躁,進(jìn)入小白人的藍(lán)圖,在Mesh下面添加我們的粒子

(, 下載次數(shù): 18)
然后臨時關(guān)閉Update Mesh Reproduction Sprite進(jìn)程,同時修改粒子生命周期為1.0秒,運行效果如下

(, 下載次數(shù): 19)
這是因為粒子在Spawn的那一刻本身帶有速度屬性,所以會散開,官方是這么說,不細(xì)究~~
所以我們需要更新粒子在生成之后每一幀的位置,開啟Update .....

(, 下載次數(shù): 20)
粒子就正常了~~

(, 下載次數(shù): 15)
接著修改粒子發(fā)射模型,發(fā)射圓錐,修改模型朝向以及模型大小

(, 下載次數(shù): 20)

(, 下載次數(shù): 19)
就出現(xiàn)一群模型圍繞在人物身上的效果

(, 下載次數(shù): 20)
接著我們進(jìn)入一個橫板游戲的視角,調(diào)整對應(yīng)的數(shù)值看看效果

(, 下載次數(shù): 21)

(, 下載次數(shù): 20)
使用Spawn Per Unit  檢測到當(dāng)前有速度增量時生成粒子,然后調(diào)整模型的長度即可
接著新建一個材質(zhì)如圖

(, 下載次數(shù): 21)
邏輯很簡單,再稍加設(shè)置,效果如下

(, 下載次數(shù): 20)
橫板游戲,我希望效果不要蓋住我們的人物,感官上就感覺是效果渲染在人物后面一樣,這里我用了一個最簡單粗暴的方法,直接限制粒子模型的位置信息
新建一個自定義Module ,強(qiáng)行把粒子的軸向?qū)懸粋€固定值,相當(dāng)于把粒子壓成一個平面

(, 下載次數(shù): 18)

(, 下載次數(shù): 21)

(, 下載次數(shù): 19)
其實另一個角度看是這個樣子

(, 下載次數(shù): 19)
嗯~~各位輕噴~~~  2333
然后大家再調(diào)整下細(xì)節(jié)方面的東西就行了~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NE_Sparks  單獨啟用效果

(, 下載次數(shù): 19)

制作方式也很簡單,采樣模型頂點位置信息,然后反向噴射粒子完事~~~

(, 下載次數(shù): 18)
這里就不需要用Initialized了,直接采樣模型就行,然后添加了一個Inhert Velocity然后速度給一個負(fù)值就能讓粒子反向發(fā)射出去~~~

(, 下載次數(shù): 19)

(, 下載次數(shù): 18)
大致效果就出來了,然后再用藍(lán)圖傳遞一些細(xì)節(jié)的控制即可
兩者組合在一起即可

(, 下載次數(shù): 19)
到這里,Niagara部分完成~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
進(jìn)入第二部分:
Ghost Trails 幽靈拖尾
其實是虛幻商城的一個資源,魔改了之后的效果
單獨看看效果就是~~~

(, 下載次數(shù): 20)
其實就是在很短的時間內(nèi)連續(xù)釋放多個Pose然后消失掉~~~   

(, 下載次數(shù): 19)
具體實現(xiàn)過程就不啰嗦,有藍(lán)圖基礎(chǔ)的同學(xué)去某寶~~   呸。。。   虛幻官方商城直接可以買到~~
幾個關(guān)鍵步驟說一下:

(, 下載次數(shù): 21)

這里的開啟模型自定義深度渲染開關(guān)為后面材質(zhì)亂序做準(zhǔn)備

Copy Pose from Skeletal Component 這個節(jié)點就是拷貝當(dāng)前動畫的Pose然后復(fù)制

(, 下載次數(shù): 20)
然后TrailsCore在生成的時候添加一個Poseable Mesh用來承載拷貝過來的Pose

(, 下載次數(shù): 18)
接著替換給Mesh一鍵添加所有材質(zhì)

(, 下載次數(shù): 20)
材質(zhì)也很簡單,只不過為了修復(fù)UE4本身渲染本透明時候的亂序,多加了一部分邏輯用來處理亂序問題,就是個像素深度和自定義深度的對比,網(wǎng)上一堆教程和文章告訴你怎么做~~~
記得開起材質(zhì)的Allow Custom Depth Writes  允許半透明材質(zhì)寫入自定義深度,不然就對比了個寂寞

(, 下載次數(shù): 19)
同時開啟Used With Skeletal Mesh 和 Used With Clothing的開關(guān),不然材質(zhì)編不過去,無法給模型添加上材質(zhì)
(此處感謝騰訊天美大佬 @大畫渣 的幫助)
回到TrailCore

(, 下載次數(shù): 19)
拷貝Pose 賦予材質(zhì) 然后給一個當(dāng)前人物運動反方向的偏移作為初始化操作
接著進(jìn)入核心部分

(, 下載次數(shù): 18)
這一段就直接拷貝了代碼,然后去掉自己不需要的部分
其實邏輯很簡單,獲取當(dāng)前釋放瞬間游戲時間(這個時間一直在持續(xù)增加)然后跟定義好的Life Time做一個映射,然后把單位化的結(jié)果給材質(zhì)的Alpha,但是這個Alpha是0到1所以需要用一個Lerp反轉(zhuǎn)數(shù)據(jù)來實現(xiàn)模型消失的效果,當(dāng)Alpha無限接近于0的時候也代表這個模型即將被銷毀Destory。

(, 下載次數(shù): 20)
接著在人物沖刺的時候?qū)憘€邏輯子啊短時間內(nèi)釋放多個當(dāng)前pose的Mesh  也就是一個Actor,這個Actor只負(fù)責(zé)呈現(xiàn)出當(dāng)前動畫的Pose然后消失
看看幾種不同數(shù)值的對比  :
釋放間隔0.2  模型消失1.0

(, 下載次數(shù): 19)
釋放間隔 0.02  模型消失0.5

(, 下載次數(shù): 19)
然后再調(diào)整下其它參數(shù)比如材質(zhì)BaseColor,F(xiàn)renel,這些東西就差不多了
接著為了讓效果能通用,給別的角色也能用,我們得讓引擎知道怎么去拿人物的Mesh,可以使用最通用的方法,加標(biāo)簽Tag,視線轉(zhuǎn)移到我們的角色

(, 下載次數(shù): 19)
需要拿到的是Mesh,然后可以在初始化的時候自動給Mesh打上Tag,如圖

(, 下載次數(shù): 20)
然后找到帶有特定標(biāo)簽的Component即可

(, 下載次數(shù): 20)
到這里基本上快要完成了~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3,藍(lán)圖實現(xiàn)整體邏輯
創(chuàng)建一個Actor Component,然后通過添加Component的方式讓功能生效

(, 下載次數(shù): 19)
其實也是常規(guī)做法,讓功能的移植更方便~~~   
最后再把剩下的部分參數(shù)微調(diào)即可

(, 下載次數(shù): 20)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
此文章僅作為個人思路的參考,其實可以添加細(xì)節(jié)的地方有很多   
鑒于目前網(wǎng)絡(luò)上相關(guān)資料很少,所以就提供了自己的一個制作思路~~~
創(chuàng)作不易~~~   走過路過點個贊吧客官~~~   

-----------------------------
作者: 彤彤丶Safe    時間: 2022-1-18 19:24
很好 下一秒就是我的了[蹲]
作者: 北楓    時間: 2022-1-18 20:39
很棒,我已經(jīng)學(xué)會了[贊同]
作者: 想多了    時間: 2022-1-18 22:28
太屌了沃夫
作者: 海豚    時間: 2022-1-18 23:30
歡呼
作者: 晶晶    時間: 2022-1-19 00:53
可以可以
作者: 九月81    時間: 2022-1-19 02:08
大佬太強(qiáng)了
作者: 晚風(fēng)    時間: 2022-1-19 03:23
歡呼




歡迎光臨 愛鋒貝 (http://7gfy2te7.cn/) Powered by Discuz! X3.4