觸手擺動效果

實現(xiàn)步驟:
1.在Houdini中制作模型和生長動畫效果,先在houdini展好UV,讓美術(shù)制作相應(yīng)的貼圖,也可以用美術(shù)提供的模型制作
2.利用VAT3導(dǎo)出模型、貼圖、材質(zhì)球,在unity中使用官方的shadergraph文件(我使用的是自己精簡之后的)
3.在shader中用貼圖偏移頂點位置形成擺動效果,并將shadergraph轉(zhuǎn)成代碼接入管線shader
VAT原理:


U是頂點數(shù),V是幀數(shù)
houdini中烘焙VAT時,如果頂點數(shù)大于貼圖U向像素,會自動放到下一行(一開始我以為頂點數(shù)最大支持8192,其實并不是)
每一幀存儲當前所有頂點的位置,像素rgb對應(yīng)頂點的xyz坐標,頂點位置進行歸一化存進貼圖,在shader中反算出位置。
模型生長動畫
Houdini全部節(jié)點:

這個生長使用縮放實現(xiàn)的,其實還有很多種其他方案
實現(xiàn)縮放的代碼如下

原理:獲得模型包圍盒大小,然后歸一化,用Ramp控制作為比率乘到位置坐標上,然后對ramp K幀

使用labs的節(jié)點導(dǎo)出即可,節(jié)點使用可以參照Vertex Animation Textures in Unity | SideFX

選擇柔體模式,引擎種類,幀數(shù),輸入的模型,貼圖格式,貼圖大小,點擊左上角渲染出圖(目前格式只能用exr,png有bug)
破碎效果也是類似的方式,在剛體模塊解算后選擇剛體模式導(dǎo)出即可,剛體、柔體、流體、粒子在引擎中的shader是不一樣的

生成的模型、貼圖、材質(zhì)球

pos就是頂點位置貼圖,rot是生成法線和切線的貼圖,col是頂點色貼圖
把圖指上去即可,頂點色沒用到的話可以刪除,pos2是為了優(yōu)化貼圖大小用的,測試發(fā)現(xiàn)至少這版本無太大意義

在unity設(shè)置模型設(shè)置和貼圖設(shè)置


觸手擺動頂點動畫
原理:用一張貼圖做UV滾動分別影響模型物體空間坐標的三個軸向
類似這種圖

下面是VAT3柔體+頂點動畫的shadergraph文件(只能用柔體,剛體效果不適用)
總結(jié):實現(xiàn)VAT的方法很多,之所以選擇使用houdini的方式,是因為houdini的模塊能夠制作很多視覺效果,未來可以嘗試各種酷炫效果并導(dǎo)入到引擎實現(xiàn)
效率:模型264個頂點100幀,兩張圖, 206k*2 。1140頂點 100幀,兩張圖,900k*2。
問題:目前還是不支持生成2的n次冪正方形的圖,如果再深入研究的話,要修改這個節(jié)點
其他VAT調(diào)研:
1.
Houdini的VAT3官方案例視頻及工程(推薦)
Vertex Animation Textures in Unity | SideFX
Vertex Animation Textures in Unreal | SideFX
2.
unity插件:Vertex Animation Tools | 動畫 工具 | Unity Asset Store
文檔:Polyflow - Vertex Animation Tools documentation
這個unity插件可以將現(xiàn)成的動畫FBX轉(zhuǎn)成點緩存
3.
能導(dǎo)出VAT的3dmax插件(Unreal專用)
Vertex Animation Tool | Unreal Engine Documentation
4.
國外大佬寫的Unity工具GitHub - Gaxil/Unity-AlembicToVAT: Alembic to VAT (Vertex Animation Texture) mini tool
可以將Alembic文件直接在unity轉(zhuǎn)VAT并有相應(yīng)的shader