Blender用のmixamo_converterプラグインをインストールする
Blender用プラグインのmixamo_converterをダウンロードします。
https://github.com/enziop/mixamo_converter
GitHubでCodeボタンを押し、DownloadZipを選択してダウンロードします。
READMEを見る限り、2.80以降に対応しているとあり2.92でも動作確認できました。
Blender 3.00ではエラーが発生し動作しません。
Blenderは頻繁にバージョンアップが行われるのでBlenderLauncharでバージョン管理し、プラグインを使用する時だけ2.92を起動するようにした方が無難です。
BlenderLaunchar(https://github.com/DotBow/Blender-Launcher)リンク
Blenderを起動し、メニューバーからEdit -> Preferencesを選択します。
え?Blenderを持っていない?無料なのでダウンロードして下さい。
えっ?Blenderの操作は難しいらしいから出来ない?大丈夫です、Blenderの操作は殆ど行いません、今回はプラグインの変換ボタンを押すだけです。
左のボタンからAdd-onsをクリックし、右上のInstall an add-onボタンをクリックします。
ダウンロードしたmixamo_converter-master.zipを選択して、Install Add-onボタンを押します。
Mixamo Converterがリストに追加されるのでチェックボックスにチェックを入れます。
3D Viewエディターの右上にある<ボタンを押してサイドメニューを表示させます。
サイドメニューからMixamoを選択してプラグインが入っている事を確認します。
mixamoで移動するアニメーションを取得する
mixamoのサイトで適当なアニメーションを選択し、一つだけWith Skin設定でダウンロードします。
With Skin設定にする事によりMeshもダウンロードされる事になるのでダウンロードに時間がかかります。
With Skin設定のデータは一つだけあれば良いので、
続いてSword And Shield AttackをWithout Skin設定でダウンロードします。
Blenderで変換する
適当にフォルダを作成し、Baseフォルダの中にダウンロードしたファイルを移動します。
WithSkinのデータは名前を変更して語尾にWithSkinを付けました。
変換後のデータを出力先フォルダも作成してConvertと名付けます。
BlenderのMixamoConverterプラグインでAdvanced Optionsボタンを押し、以下設定を行います。
- Convert SingleをOFF
- Remove NamespacesをOFF
- Use Unreal Engine bone namesをON
- Input Pathにダウンロードしたファイルがあるフォルダを指定(先程作成したBaseフォルダ)
- Output Pathに変換後のファイルを出力するフォルダを指定(先程作成したConvertフォルダ)
設定完了したら一番したのBatch Convertボタンを押します。
Convertフォルダに変換した.fbxファイルが出力されます。
ちなみにRemove NamespacesをON、Use Unreal Engine bone namesをOFFにすると、ボーンはmixamoのボーンにrootが追加されただけのものになります。
UseX,UseY,UseZを全てOFFにすると、Rootの位置は固定されます。
変換するアニメーションがrootを移動させたい場合と移動させたくない場合で出力フォルダを分けて変換した方がいいです。
変換したfbxをインポートする
まず最初に変換したWithSkinの.fbxファイルをUE4でインポートします。
WithSkinの.fbxファイルをインポートする場合はSkeletalMeshとImport Meshにチェックが入っている事を確認して、Import Allボタンを押します。
スケルトンとアニメーション等がインポートされました。
Capoeri_WithSkin_Animを開くとSkeletonTreeにrootがあり、UE4マネキンと同じボーン名になっている事を確認出来ます。
(Capoeiraアニメーションは変換すると左足のアニメーションがバグってしまいますが、先に進んで下さい。)
続いて変換したWithout Skinの.fbxファイルをUE4でインポートします。
Import Meshのチェックを外し、
Skeletonには先程インポートされたSkeletonを指定して、Import Allボタンを押します。
root付きのSkeletonで、アニメーションで移動したメッシュの下にrootが追従している事を確認します。
当然このSkeletonはmixamoから直接ダウンロードしたroot無しのSkeletonとは別物になっていますので、mixamoの無変換Skeletonでこのアニメーションは使用出来ません。
変換したアニメーションのリターゲット
変換したアニメーションのリターゲットは非常に簡単です。
基本的には
「Adobe mixamoでメッシュとアニメーション取得とリターゲット 」で説明した内容と同じですが、
変換されてボーン名がUE4用になっているので各ボーンを手動で設定する必要はありません。
インポートしたスケルトンを開き、RetargetManagerのSet up RigにあるSelect RigでHumanoidを選択します。
ボーン名が一緒なので自動でTargetに適切なボーン名が自動選択されます。
あと忘れがちですがPreview Scene SettingsのMeshの所にあるApply To Assetボタンを押し忘れない事。
あとはいつも通りにリターゲットしたりアニメーションで右クリックしてDuplicate Anim Assets and Retargetを選び、
UE4_Mannequin_Skeletonを選択して、Retargetボタンを押します。
リターゲットしたアニメーションを開くとRootMotionが無くなったように見えますが、実際にRootMotionを使用する時にはちゃんと動作しますので安心して下さい。
リターゲットしたアニメーションのRootMotionの動作確認
せっかくなのでRootMotionの動作確認をします。
リターゲットしたアニメーションを開き、
RootMotionのEnableRootMotionをONにし、
RootMotionRootLockをAnim First Frameにします(Ref Poseだとアニメーションの最後のポーズに依存してキャラクターの角度が変わってしまう為)。
ちなみにリターゲット前のアニメーションで同じ設定をすると、Viewportのrootが移動しなくなりますがそれで正常動作です。
新しいAnimationBPクラスを作成し、スケルトンはUE4_Mannequin_Skeletonを選択し、
UE4_TestAnimと名付けます。
UE4_TestAnimを開き、RootMotionModeがRootMotionfromMontagesOnlyになっている事を確認します。
AnimGraphに適当なアニメーションを再生させ、アニメーションモンタージュ割り込みの為にSlot'DefaultSlot'ノードを挿入します。
リターゲットしたアニメーションを右クリックし、CreateAnimMontageを選択し、
Big_Jump_Montageを生成します。
新しいCharacterBPを作成しMyCharacterと名付けます。
SpringArmコンポーネントとCameraコンポーネントを追加し、後ろから見えるようにします。
Meshコンポーネントを選択し、AnimClassにUE4_TestAnimを設定し、SkeletalMeshにSK_Mannequinを設定します。
root位置を目視する為、CapsuleComponentを選択して、Hidden in GameをOFFにします。
EventGraphに処理を追加し、キーボードのAを押したら先程作成したアニメーションモンタージュが再生されるようにします。
適当なレベルを作成して、World SettingのGameModeでDefaultPawnをMyCharacterに設定します。
ゲームをプレイしてキーボードのAキーを押してアニメーションを確認します。
アニメーションの動きに合わせてカプセルも一緒に動いている事を確認し、アニメーション終了時にその場に留まる事を確認します。