unity, Root Motion


(引自:http://tieba.baidu.com/p/4323644080)

然后詳細看了下這個文檔:http://docs.unity3d.com/Manual/RootMotion.html

現在基本上明白了,下面記幾個要點:

1,在3dmax里建模的時候必須包含一個根骨骼,所有的位移動畫必須做在根骨骼上。

2,unity中進入fbx的Import Setting,選Animations屬性頁,創建Clips。

3,進入fbx的Import Settings,選里面的Rig屬性頁,為其中Root node選擇根骨骼。

3,此時再重新進入Animations屬性頁,就可以看到每個clip的面板里都出現了Root Transform Rotation,Root Transform Position(Y),Root Transform (XZ)這些選項了。

4,接下來把fbx拖到場景里,在其Animator組件中把Apply Root Motion選上。

5,當然,還有為Animator組件的Controller添加Animation Controller及創建狀態機節點之類的一些瑣事,這里就不提了。

這樣,動畫在切換時就可以累積位移(而非復位)了。

 

關於Root Transform的說明:

1,Root Transform是物體質心在一個水平平面上的投影,至於此水平平面是哪個平面,取決於Based Upon的設置。

Root Transform可以直觀地在clip面板下方的預覽窗口中看到:

那個圓圈就是Root Transform的位置。

預覽窗口中默認放的不是我們自己的fbx模型,而是這個小人兒,我們需要把自己的fbx模型拖到預覽窗口中。

2,Bake Into Pose的理解:

可以理解為Root Transform是模型的根節點,而Pose是Root Transform的子節點。

如果我們不勾選Bake Into Pose,則Root Transform運動帶動子節點Pose運動。

如果我們勾選了Bake Into Pose,則Root Transform中的動畫將被轉移到Pose中去,這樣Root Transform就靜止不動了,而只有Pose運動。

兩者看上去動畫效果一樣,區別就在於Root Transform動與不動。

什么情況下需要Bake Into Pose,什么情況下不需要Bake Into Pose呢?

由於我們勾選了Apply Root Motion,所以Root Transform進入累積模式,切動畫時下一個動畫會在上一個動畫結尾時Root Transform的位置開始播放(而不復位)。

但有時候我們會有這樣的需求:希望切動畫時,在XZ平面上位移累積,但在Y方向上位移不累積(復位)。

如果所有的Bake Into Pose都不勾選,則我們現在的效果是: 切動畫時,XZ平面上和Y方向上位移都累積。

現在,只要將Root Transform Position(Y)的Bake Into Pose勾選,就能取消Y方向上的累積了。

原理很明顯,因為Y方向上Root Transform不動了,所以定不會在Y方向上產生累積位移。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM