Unity3D規則之Unity Root Motion / Bake into Pose 的問題


 

參考:

http://ru.unity3d-docs.com/Documentation/Manual/Animator.html

http://ru.unity3d-docs.com/Documentation/Manual/RootMotion.html

http://ru.unity3d-docs.com/Documentation/Manual/ScriptingRootMotion.html

 

 

在很多美術制作的動畫當中,模型的位置、角度往往會發生變化,我們需要決定是否將模型再動畫中發生的這些變換應用到實際模型。Unity中有兩個跟這個有關的設置。

只有開啟了Root Motion,動畫的位移旋轉才會影響到角色根結點(掛接Animator的結點)的位移旋轉。此選項 決定是否應用Root Transform,
只有開啟了Root Motion,且Avatar等設置正確,下邊兒的面板紅色部分才起作用。

這兩個設置的地方會相互影響。

 

“Bake into Pose".在untiy中將動畫中的變換分成兩種,Body Transform和Root Transform,我們可以設置動畫中的關於模型的一些變換(平移、旋轉等)是屬於Body Transform(pose)還是Root Transform(trajectory)的一部分。這里的Bake into Pose 也就是將變換設置為Body Transform(pose)的一部分。我們可以這樣去理解,

  • 如果是設置成Body Transform(pose)的話,就相當這些變換是屬於動畫本身的一部分,也就是說,不管設不設置Apply Root Motion,在場景中,我們都會看到模型位置或角度的變化。(因為Body Transform不影響模型實際的位置和角度,所以這里只是純粹的動畫效果,模型的位置和角度參數值不變
  • 如果設置成Root Transform,Root Transform將影響模型的實際位置和角度(前提是要設置“Apply Root Motion”,如果不設置Apply Root Motion的話,也就是說變換將不應用,場景中的模型位置或角度是不會有變化的(參數值自然也不變),就像一個行走動畫,可能一直在原地行走)。

然后我們來重點再看看這里的”Apply Root Motion".這里他會起到兩個作用,首先最重要的是,決定是否應用Root Transform,如果應用的話,那么在動畫的同時,模型的位置和角度會同時跟着變化。如果這里不勾選的話,那么就是說不應用Root Transform,這樣我們所有的Root Transform都將不起任何作用。(也就相當於於所有沒有Bake into Pose 的變換都沒有用了)。

Apply Root Motion的第二個作用是在動畫結束后,將Body Transform中的變化應用到模型(注意,這里是結束的時候才應用,也就是說動畫的時候,模型的position、rorate等參數是不變的,當動畫結束之后,開始新的動畫之前才會改變,注意這里跟前面提到的Root Transform的區別) 

 

上面就是關於Root Motion的理論,然后我們來個幾個實際的場景。

比如說我們有一個人物行走的動畫,我們來考慮一下幾種情況(這里以“Root transform position(XZ)為例)

1、勾選”Bake into Pose",不勾選“Apply Root Motion",勾選”Bake into Pose"后,變換屬於Body Transform,所以即使這里未勾選”Apply Root Motion“,但是動畫依然會在場景中體現,人物會按照動畫的路徑行走(但是如果我們觀察Inspector中模型的position參數,值一直不變)。但是因為沒有勾選Apply Root Motion,所以動畫結束后,變換不會應用到模型,所以如果這時候,如果開始一個新的動畫的話,模型會瞬間回到起始位置(新的動畫開始時候,模型處於行走動畫開始時的位置)。

解釋:  動畫帶位移,會自動播放位移,但是根結點不會有位移。

         程序播放新動畫的時候,就會從原點繼續播放,所以會迅速差值到模型開始的位置。

 

2、勾選”Bake into Pose",並勾選“Apply Root Motion",這里跟上面的情況唯一不同的就是,動畫結束后,開始新的動畫之前,變換會應用到模型。(模型的position在新的動畫開始之前會發生變化,新的動畫開始時候,模型處於動畫結束時的位置)

動畫結束后才會變換到應用的模型,動畫過程中根節點的位移也不會有反應

與上圖的區別是發現,旋轉跟着變了。。。

 

3、不勾選”Bake into Pose",勾選“Apply Root Motion",這時候,變換是作為Root Transform,所以因為這里勾選了Apply Root Motion,變換會應用到模型(模型的position跟着動畫不停的變化),自然,新的動畫開始時候,模型處於動畫結束時的位置。

 

 

 

 

 

4、不勾選”Bake into Pose",並且不勾選“Apply Root Motion",這里變化還是作為Root Transform,但是因為沒有勾選Apply Root Motion,所以變換將不被應用,所以模型將一直在本地不動,自然,新的動畫開始時候,模型處於行走動畫開始時的位置

 

 

  

 

上海游旺網絡科技誠聘手游C++服務器人才,資深3D美術,特效美術。

上海游旺網絡科技有限公司成立於2015年5月,是一家極具潛力的新創移動游戲公司。公司初創團隊均來自騰訊,盛大,暢游,墨麟,蝸牛等知名互聯網公司,公司創始人團隊參與制作過《鬼吹燈》《QQ炫舞》《天龍八部》等月流水優異的產品。游旺網絡在初立之時便得到了資本市場的認可,快速獲得了天使投資開啟了創業之路。游旺網絡立志於做一家有理想且堅持正確價值觀的公司,跟團隊分享知識和財富。游旺網絡希望用游戲帶給人們興奮,刺激,歡樂,驚喜。 

郵箱:hr@you-wants.com 

 


免責聲明!

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



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