Unity3D骨骼動畫的分解(CleanData.Ani詳解)

瘋光無線發表於2015-03-03

CleanData是什麼

CleanData以前沒有特定的名字,(在easydown這個開源專案中,作為一個GameObjParser模組存在)。
在某三國專案中,我們使用GameObjParser將NGUI 的預設儲存為自定義格式(替代了assetbundle方案),以實現不論任何平臺都可以使用同一份資源。
在easydown的演示中GameObjParser也將一個簡單的模型場景儲存為自定義格式並載入。
so.CleanData是想去做AssetBundle的工作,但是格式是我們自定義的,細節更透明。這些資訊,甚至可以用到別的引擎裡。

假如有一天我們要離開U3D的話。

CleanData.Ani 是CleanData中針對骨骼動畫的部分

以一個角色為例,CleanData.Ani有一些輯器指令碼,匯入CleanData之後。在Animator元件上就會出現一些工具
"Create FBAniclip" 會把Animator的 controller中配置的動畫(.anim)存為(".fbani.asset")。
這已經是一種自定義的動畫格式
它使用一個新的元件來控制動畫播放,這個元件支援在editor模式中直接預覽動畫。

此處的這個".fbani.asset"還是屬於unity的 asset格式,只能用於在unity編輯器中操作,和使用ab打包。
這裡還沒展現出我們自己寫一套動畫資料,自己寫一個動畫播放元件的意義所在。
不過你如果比較一下播放效能,你會發現,我們自己寫的動畫播放元件居然比原生的快。
(除了我們做的事情可能更少以外,這也說明unity原生動畫效能還有很大的提升空間,坐等官方優化)。

 

然後關鍵的部分來了,unity的.anim 你沒有辦法執行時載入,所以你也不能執行時下載一個骨骼動畫,給角色加上去。
但是fbani可以,注意那個"export bin",這會把當前動畫儲存為".fbani.bytes"檔案,放在streamingassets目錄下。

然後就可以實現執行時載入骨骼動畫了

另外,還有個數字你可能也有興趣關注一下

我們自定義格式儲存動畫的容量只有.anim檔案的十分之一左右。

 

配合CleanData,已經可以實現整個角色模型和動畫一起儲存為自定義格式並還原,你是不是開始腦洞大開了呢?

ByTheWay,如果連Anim檔案也不從Max裡來,行不行呢,也是可能的。
Skele.UserEcho.com

提供了一個外掛。可以在untiyeditor裡直接修改角色動畫,並儲存.anim檔案。

這個扭曲的動畫是我用他的外掛扭的,我也實在沒有扭動作的天賦和耐心


我們可以使用他,或者對他進行改造,直接編輯.fbani 檔案,跳過.anim都是可行的。
這將是一個願景型的工作,FB引擎希望有一天可以做到MUGEN那個程度,角色,招數隨便編輯。
到那一天,脫離MAX直接來修改動畫,就會變得有用了。

 

相關文章