觸手?jǐn)[動效果
實(shí)現(xiàn)步驟:
1.在Houdini中制作模型和生長動畫效果,先在houdini展好UV,讓美術(shù)制作相應(yīng)的貼圖赛蔫,也可以用美術(shù)提供的模型制作
2.利用VAT3導(dǎo)出模型重父、貼圖、材質(zhì)球臭家,在unity中使用官方的shadergraph文件(我使用的是自己精簡之后的)
3.在shader中用貼圖偏移頂點(diǎn)位置形成擺動效果疲陕,并將shadergraph轉(zhuǎn)成代碼接入管線shader
VAT原理:
U是頂點(diǎn)數(shù),V是幀數(shù)
houdini中烘焙VAT時(shí)钉赁,如果頂點(diǎn)數(shù)大于貼圖U向像素蹄殃,會自動放到下一行(一開始我以為頂點(diǎn)數(shù)最大支持8192,其實(shí)并不是)
每一幀存儲當(dāng)前所有頂點(diǎn)的位置你踩,像素rgb對應(yīng)頂點(diǎn)的xyz坐標(biāo)诅岩,頂點(diǎn)位置進(jìn)行歸一化存進(jìn)貼圖,在shader中反算出位置带膜。
模型生長動畫
Houdini全部節(jié)點(diǎn):
這個(gè)生長使用縮放實(shí)現(xiàn)的吩谦,其實(shí)還有很多種其他方案
實(shí)現(xiàn)縮放的代碼如下
原理:獲得模型包圍盒大小,然后歸一化膝藕,用Ramp控制作為比率乘到位置坐標(biāo)上式廷,然后對ramp K幀
使用labs的節(jié)點(diǎn)導(dǎo)出即可,節(jié)點(diǎn)使用可以參照Vertex Animation Textures in Unity | SideFX
選擇柔體模式芭挽,引擎種類滑废,幀數(shù),輸入的模型袜爪,貼圖格式蠕趁,貼圖大小,點(diǎn)擊左上角渲染出圖(目前格式只能用exr饿敲,png有bug)
破碎效果也是類似的方式妻导,在剛體模塊解算后選擇剛體模式導(dǎo)出即可,剛體怀各、柔體倔韭、流體、粒子在引擎中的shader是不一樣的
生成的模型瓢对、貼圖寿酌、材質(zhì)球
pos就是頂點(diǎn)位置貼圖,rot是生成法線和切線的貼圖硕蛹,col是頂點(diǎn)色貼圖
把圖指上去即可醇疼,頂點(diǎn)色沒用到的話可以刪除硕并,pos2是為了優(yōu)化貼圖大小用的,測試發(fā)現(xiàn)至少這版本無太大意義
在unity設(shè)置模型設(shè)置和貼圖設(shè)置
觸手?jǐn)[動頂點(diǎn)動畫
原理:用一張貼圖做UV滾動分別影響模型物體空間坐標(biāo)的三個(gè)軸向
類似這種圖
下面是VAT3柔體+頂點(diǎn)動畫的shadergraph文件(只能用柔體秧荆,剛體效果不適用)
總結(jié):實(shí)現(xiàn)VAT的方法很多倔毙,之所以選擇使用houdini的方式,是因?yàn)閔oudini的模塊能夠制作很多視覺效果乙濒,未來可以嘗試各種酷炫效果并導(dǎo)入到引擎實(shí)現(xiàn)
效率:模型264個(gè)頂點(diǎn)100幀陕赃,兩張圖, 206k*2 颁股。1140頂點(diǎn) 100幀么库,兩張圖,900k*2甘有。
問題:目前還是不支持生成2的n次冪正方形的圖诉儒,如果再深入研究的話,要修改這個(gè)節(jié)點(diǎn)
其他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
這個(gè)unity插件可以將現(xiàn)成的動畫FBX轉(zhuǎn)成點(diǎ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