mixamoキャラクターをループアニメーションする複数の方法
hr.icon
1. はじめに
mixamoキャラクターをループアニメーションする方法は複数あり、用途に合わせて選択する。
特にアニメーションデータがIn PlaceかRoot Motionかによって手法が異なってくる。
1.1 In Place / Root Motionとは
In Place Animationの反対はRoot Motion。
Root MotionはRoot(World空間)を基準としたMotion(動き)という意味。
他の呼び方としてRoot Animation, Moving Animationがあるようだ。
https://youtu.be/pic1c0zadBI
mixamoでは下図右側のパラメータでIn PlaceのON/OFFが可能。
アニメーションデータによってはIn Place非対応のものもある(上映像のRunning Jumpも一例)。
※mixamoの初期フレームレートは30fps、blenderの初期フレームレートは24fpsであり、そのままだとblenderに読み込んだ際、アニメーションが若干遅くなるので、どちらかに合わせておく。
https://gyazo.com/1972900d382359aee0ed19342c330f0e
1.2 Root MotionをIn Placeにする方法(実験する)
mixamoのRunning JumpではIn Placeに対応していない。
https://gyazo.com/34e4e6c61a7650dc3dc2dc44f7c75ce1
実験方法
Root MotionのアニメーションをIn Placeにするには、Root MotionのArmatureを選択して、Graph EditorのHipのZ Locationのみを表示、Keyメニュ ー > Snap > Selection to Cursor Valueを行う。
上記のCursorは2D Cusorを意味しており、2D CursorのY値は意図的に変更(Yのナンバーボックスに数値入力もしくは左右ドラッグ or SHIF + RMB(XYとも変更))しない限りゼロのまま。そのため、Selection to Cursor ValueはY値をゼロにすることと同義になる。
https://gyazo.com/fbb4a6ce343b90cbaae0b66f5e1d36b1
2D Cursor参考
https://gyazo.com/0c18705a38459211844b3c60847fbb90
以下のIn Placer Addonを使えば、ワンクリックでRoot MotionをIn Placeにできる。
https://www.youtube.com/watch?v=le7exScwwrQ
hr.icon
2. 方法① NLAを利用した方法(Root Motion)
NLAでアニメーションを調整する場合に適している。
※In Placeの場合はRepeatの設定のみで簡単
単純に繰り返しただけのもの。
https://www.youtube.com/watch?v=Q3aSSgxGIPM
後ろにずらして調整したもの。
https://www.youtube.com/watch?v=aNt2_sy0EYM
hr.icon
3. 方法② In PlaceアニメーションのArmatureを移動
https://www.youtube.com/watch?v=lJB7jXPyxm8
hr.icon
4. 方法③ 真っ直ぐ歩かせる(Room Motion) ※実写合成の練習用
4.1 Pumpkinhulkの準備
mixamoで以下のデータをダウンロードする。
https://gyazo.com/ca904d1bcc9654e0e5fedba187b6c8e5
キャラクター:Pumpkinhulk L Shaw
アニメーション:Mutant Walking
Overdrive:0
Arm Space:60
Trim:0〜99
重要、1フレーム停止する感じになるとGraph EditorでMake Cyclicしても最後の2点の傾きで止まってしまう
一時的にIn Placeにチェックを入れて0〜99ででループ点がおかしくないことを確認する
In Placeは外す
DLしたファイル名の変更(設定がわかる状態にしておくとよい)
例)Mutant Walking_RootMotion_0to99.fbx
4.2 Blenderへ読み込み
Blenderへドラック&ドロップもしくはFile > Import > FBXから読み込む
Viewport Shading: Material Preview
https://gyazo.com/57cb60a9cb3eb65461eb9df5944b09a9
4.3 Graph Editor
Armatureを選択した状態
TimelineをGraphEditorに切り替える
Nキーでサイドバー表示、Modifiersタブを表示
View > Framw All
少しズームアウトする
https://gyazo.com/69bd21acd28f4427f8b27da97eeaeb4f
SHIFT+EでMake Cyclicを選択(=Add Modifier > Cyclic)
https://gyazo.com/cae99e8dfdb0765db035f7dd2f7cdbd9
前後に無限にループしたキーフレームが生成される
https://gyazo.com/ffcd1673824cd6a3bf513ba1a9c2f7df
再生してIn Placeのアニメーションがループすることを確認する
https://gyazo.com/55a07d29d0903bf76e1539910a1db948
HipのZ Locationのみを表示
スパナマークをOFFにして、F-Curve ModifiersをDisable(無効)にする
https://gyazo.com/bca4b12dc85058d39b9327676149ffed
SHIFT+EでLiner Extraporationに切り替える
https://gyazo.com/f8848114c000420eb526c0bce2ffc8b1
元のキーフレームの傾きに沿って延長される
https://gyazo.com/5b87c4ae3485e07d146d1e34cde7c35b
再生して無限(TimelineのPlayback範囲)に歩くことを確認
https://gyazo.com/e956392a0b18e372c955337dd3b525d8
メモ)Clear CyclicをするとModifier等のタブが消えるので、再度行う場合はSHIFT+EでMake Cyclicして、左の他の名前を選択して、もう一度編集する名前を選択すると出てくる(原因不明)
参考
今回紹介した手法
かなり省略されている。若干方法が異なる。
hr.icon
5. 方法④ パスに沿って歩かせる(In Place) ※実写合成の練習用
5.1 mixamoからDL(方法③とは異なるので注意)
キャラクター:Pumpkinhulk L Shaw
アニメーション:Mutant Walking
Overdrive:0
Arm Space:60
Trim:0〜99
In Placeにチェックを入れる
DLしたファイル名の変更
例)Mutant Walking_InPlace_0to99.fbx
https://gyazo.com/75bb1c546c0c0abf6fd4db62c3271c9e
5.2 Blenderへ読み込み
Blenderへドラック&ドロップもしくはFile > Import > FBXから読み込む
Viewport Shading: Material Preview
https://gyazo.com/57cb60a9cb3eb65461eb9df5944b09a9
5.3 In Placeのループ - 方法① Make Cyclic ※方法①と方法②のどちらでもよい
Armatureを選択する
Graph Editorに切り替える
SHIFT+EでMake Cyclicを行う
https://gyazo.com/7aaf94f65b94b97f483aef8fb4ae5f5e
5.4 In Placeのループ - 方法②
Armatureを選択
Nonlinear Animation Editorに切り替える
Push Down Actionを行い、キーフレームをAction Stripに変換する
https://gyazo.com/8720cd1e18e63eea17c7472d7a29cb66
サイドバーのStripタブでAction Clip > Repeatに必要な値を設定
https://gyazo.com/0d3e05813a44087da6a6f77ce06a9e33
5.5 パスの作成
3D ViewportでAdd > Curve > Pathを追加
https://gyazo.com/69e55dc98094f614f23dfec9f0ae4d43
Z視点に切り替える
NurbPathを選択
Edit ModeでSubdivideやExtrude、G(移動)キーを利用して調整
https://gyazo.com/d31d01b49b6b034467716372bea4a61e
Edit Mode OverlaysでNormal表示してパスの方向を確認
https://gyazo.com/05fbdea543885e972d977fed519b7d68
必要に応じてSegmentsメニュー > Switch Directionを行う
https://gyazo.com/332c5684f17f76d84f68167bcc8093c1
Object Modeに切り替える
Armatureを選択
Object Constrains Properties > Follow Pathを追加
Target: NurbsPath
Forward Axis: -Y
Follow Curveにチェック
Animate Pathをクリック 必ず
下図はSwitch Directionしている方向
https://gyazo.com/2038bc8e2f3732ccfc0f6092db7560ba
再生する
スピードが早いことを確認
https://gyazo.com/b33a698635b6ec3a312de6102ea60222
NurbsPathを選択
Object Data Properties(パスのアイコン) > Path Animation > Framesの値を調整
パスの長さやキャラクターの大きさにもよるが300〜500程度を目安に歩行の足がすべらないように調整
100刻み程度で調整後、50刻みでさらに調整
キャラクターが曲がる際、若干の滑りは発生する
Frames値が100%進んだときのフレーム
https://gyazo.com/ecd09b589837f38c8fce049e37ec783c
参考
この映像では無理やりOffsetをアニメーションしているが邪道なやり方だと思われる
Offsetはあくまでもパスの途中からスタートしたい場合の方法
上記はConeにキャラクターをParentしているが無理に必要ないだろう