觸手擺動效果
實現步驟:
1.在Houdini中制作模型和生長動畫效果,先在houdini展好UV,讓美術制作相應的貼圖,也可以用美術提供的模型制作
2.利用VAT3導出模型、貼圖、材質球,在unity中使用官方的shadergraph文件(我使用的是自己精簡之后的)
3.在shader中用貼圖偏移頂點位置形成擺動效果,并將shadergraph轉成代碼接入管線shader
VAT原理:
U是頂點數,V是幀數
houdini中烘焙VAT時,如果頂點數大于貼圖U向像素,會自動放到下一行(一開始我以為頂點數最大支持8192,其實并不是)
每一幀存儲當前所有頂點的位置,像素rgb對應頂點的xyz坐標,頂點位置進行歸一化存進貼圖,在shader中反算出位置。
模型生長動畫
Houdini全部節點:
這個生長使用縮放實現的,其實還有很多種其他方案
實現縮放的代碼如下
原理:獲得模型包圍盒大小,然后歸一化,用Ramp控制作為比率乘到位置坐標上,然后對ramp K幀
使用labs的節點導出即可,節點使用可以參照Vertex Animation Textures in Unity | SideFX
選擇柔體模式,引擎種類,幀數,輸入的模型,貼圖格式,貼圖大小,點擊左上角渲染出圖(目前格式只能用exr,png有bug)
破碎效果也是類似的方式,在剛體模塊解算后選擇剛體模式導出即可,剛體、柔體、流體、粒子在引擎中的shader是不一樣的
生成的模型、貼圖、材質球
pos就是頂點位置貼圖,rot是生成法線和切線的貼圖,col是頂點色貼圖
把圖指上去即可,頂點色沒用到的話可以刪除,pos2是為了優化貼圖大小用的,測試發現至少這版本無太大意義
在unity設置模型設置和貼圖設置
觸手擺動頂點動畫
原理:用一張貼圖做UV滾動分別影響模型物體空間坐標的三個軸向
類似這種圖
下面是VAT3柔體+頂點動畫的shadergraph文件(只能用柔體,剛體效果不適用)
總結:實現VAT的方法很多,之所以選擇使用houdini的方式,是因為houdini的模塊能夠制作很多視覺效果,未來可以嘗試各種酷炫效果并導入到引擎實現
效率:模型264個頂點100幀,兩張圖, 206k*2 。1140頂點 100幀,兩張圖,900k*2。
問題:目前還是不支持生成2的n次冪正方形的圖,如果再深入研究的話,要修改這個節點
其他VAT調研:
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插件可以將現成的動畫FBX轉成點緩存
3.
能導出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轉VAT并有相應的shader