Unity模型動畫學習筆記

1.模型動畫的類型:目前常用的就兩種,Generic和Humanoid,前者普遍適用於各種模型,但靈活性不高,後者只適用於人形動畫,但靈活性高

先說Generic,非人形的模型我們一般選擇該選項,然後在AvatarDefinition中可以選擇生成Avatar(若該模型有自己的模型動畫)也可以不生成使用其它相同骨骼的Avatar(常常用在該模型沒有自己的模型動畫但卻想要使用其它相同骨骼結構模型的動畫),這裏對骨骼結構相同的要求是非常嚴格的。

Avatar文件存儲的是骨骼映射的相關信息,Generic模式下就是按照相應模型的骨骼生成對應的Avatar文件,利用這種文件就可以控制與其匹配的骨骼的動畫,而Humanoid略有不同。

再詳細說下上面使用其它模型Avatar的情況,使用了其它模型的Avatar之後需要在Animator中的Avatar上使用相同的Avatar,狀態機也需要使用和Avatar原模型相同的狀態機,然後當前無動畫模型就可以使用相同骨骼結構的有動畫模型的動畫了。

這裏關於爲什麼能使用其它模型的動畫,我理解的是Animator在有Avatar和相應的動畫的情況下是直接對操控骨骼做動畫的,也就是模型的外表反而沒有那麼重要,兩個模型骨骼相同就可以播放相同的動畫了。

做過3D遊戲開發的朋友應該知道動畫狀態機在控制3D模型動畫的播放時也不是非要設置Avatar不可的,而這種情況我的理解是動畫狀態機只有在有Avatar的情況下才會檢測是否有相應匹配骨骼的動畫,然後直接利用Avatar播放動畫,沒有的情況下是會直接檢測動畫是否和模型匹配(這裏的檢測包括但不限於骨骼),匹配就可以播放,不匹配則不能播放。

然後是Humanoid,Humanoid與Generic的不同就在於Unity提供了一套中介骨骼,Avatar存儲的是模型骨骼與中介骨骼的映射信息(Generic下存儲的是與自己的骨骼的映射),且這個Avatar是可以編輯的,因爲有中介骨骼的存在,所以兩個模型的骨骼結構哪怕不嚴格相同,只要都設置爲了Humanoid類型,然後都有一個自己的骨骼與中介骨骼的映射信息,那麼動畫就可以共享了。

再說下Animator的設置,狀態機需要使用有動畫模型的,Avatar使用自己的就好,因爲中介骨骼的動畫已經有了(藉助有動畫模型的Avatar),所以就可以以中介骨骼的動畫爲參照,來實現自己模型骨骼的動畫了,Avatar起到橋樑的作用。

2.Animator的參數,Controller和Avatar就不用細說了

Apply Root Motion,是否讓根節點(指骨骼的根節點)的運動應用於每一幀,簡單說就是如果動畫本身帶有位移,勾選後在動畫播放時也會帶有位移,沒有勾選則只是原地播放動畫

Update Mode:Normal是在Update中更新,受到Time.timeScale的影響,Animate physics是在FixedUpdate中更新,Unscaled Time也是在Update中更新,但不受Time.timeScale的影響

Culling Mode:Always Animate,總是停止動畫的播放,Cull Update Transform,在Animator不可見時,會限制一些功能,具體請看

https://docs.unity3d.com/ScriptReference/AnimatorCullingMode.CullUpdateTransforms.html

Cull Completely,在Animator不可見時停止動畫的播放

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章