參考:
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中有兩個跟這個有關的設置。


這兩個設置的地方會相互影響。
“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炫舞》《天龍八部》等月流水優異的產品。游旺網絡在初立之時便得到了資本市場的認可,快速獲得了天使投資開啟了創業之路。游旺網絡立志於做一家有理想且堅持正確價值觀的公司,跟團隊分享知識和財富。游旺網絡希望用游戲帶給人們興奮,刺激,歡樂,驚喜。