在Unity實(shí)現(xiàn)VAT剛體錨點(diǎn)動(dòng)畫(huà)的問(wèn)題
都是VAT,只不過(guò)每個(gè)頂點(diǎn)都有錨點(diǎn)Index。所以只要烘培錨點(diǎn)的動(dòng)畫(huà)信息,用來(lái)做一些特效;不然每個(gè)頂點(diǎn)都烘VAT,VAT圖大小爆炸。熟悉Houdini的應(yīng)該不陌生:


在造GPU動(dòng)畫(huà)輪子的時(shí)候,需要處理角色的可換武器,也換成VAT流程。
那么可以把武器綁定的根節(jié)點(diǎn)作為錨點(diǎn),然后只烘這一個(gè)點(diǎn)的VAT。

問(wèn)題描述
整個(gè)和GPU動(dòng)畫(huà)原理一樣,MtoB(模型空間轉(zhuǎn)骨骼空間),BtoM(骨骼空間轉(zhuǎn)模型空間)。
問(wèn)題出現(xiàn)在MtoB上,也就是武器綁點(diǎn)的 BindPose(或者說(shuō)T-pose)上。由于武器綁點(diǎn)不參與蒙皮,所以無(wú)法通過(guò)skin.bindPoses獲取其Bind矩陣。
步驟1
是代碼新建一個(gè)臨時(shí)的gameObject,用來(lái)Instantiate fbx資源。這樣能獲取綁定時(shí)所有節(jié)點(diǎn)的初始位置。

步驟2
實(shí)踐發(fā)現(xiàn)即使通過(guò)臨時(shí)gameObject獲取了根骨骼的初始matrix,也不對(duì)。因?yàn)閷?dǎo)入時(shí)武器mesh有旋轉(zhuǎn),但VATMesh使用的時(shí)候沒(méi)有這個(gè)導(dǎo)入旋轉(zhuǎn),所以還得到臨時(shí)gameObject里找到1級(jí)孩子weapon節(jié)點(diǎn),把這個(gè)導(dǎo)入旋轉(zhuǎn)的影響給消除。


代碼,其中trans是武器綁點(diǎn)的transform: