MixamoからUE4にモーションデータをインポートしてグレイマンのスケルトンデータで動かそうとしたときに、日本語の事例情報が意外と少なくかなり苦労したので自分用の技術メモを残しておきます。
まだUEを触り始めて1か月もない程度の初心者なので無駄な工程・アラがあるかもしれません。そもそも技術記事を書くのも初めてなので粗相があったら怒らずにそっと教えてくれると泣いて感謝します。
実現すること
Mixamoからダウンロードしたモーションデータを、UEの標準スケルトンに導入する。もう少し具体的にいうとテンプレで用意されているグレイマンにmixamoのモーションを追加できるようにします。
Mixamoで入手したデータを直接UEにぶっこんでもMixamoとUEでボーン構造が異なる為、UEの標準スケルトンでうまく動かすことができないのでblenderのアドインを使用してボーン構造をコンバートし、UEにインポートすることでUEの標準スケルトンにモーションをスムーズに適用するできます。
参考にしたサイト・動画
(Youtubeより)
https://www.youtube.com/watch?v=MJJYL6ztkFM
⇒blenderのアドインのインストール・使い方の参考※英語です。
(UE4初心者が頑張ってるブログ様より)
http://mozpaca.hatenablog.com/entry/20161023/1477211854
⇒リターゲット手順の参考
使用したソフト
Unreal Engine(Ver4.25)
Blender(Ver2.83)
1.最初の準備...blenderに変換用アドオン導入
1-1.アドオンのファイルをダウンロードしてくる
こちらからzipファイルをダウンロードできます。
https://github.com/enziop/mixamo_converter
1-2.アドオンをblenderにインストールする
①Edit⇒Preferences..
②ダウンロードしたzipファイルを選択⇒InstallAdd-on
③無事インストール出来ていればサイドバー(旧プロパティシェルフ)に「Mixamo」が追加される
2.Mixamoから好きなモーションデータを入手する#
(Mixamo)https://www.mixamo.com/#/
2-1.Mixamoから好きなモーションデータを入手する(設定は以下画像を参考に)
※「inPlace」設定にチェック
※「Skin」の設定は最初の1つ目だけ「WithSkin」にして2つ目以降は「WithoutSkin」でダウンロードする
2-2.入手したモーションデータは新規にフォルダを作成してまとめておく
3.入手したモーションデータをblenderでコンバートする#
3-1.以下画像を参考にコンバートの設定して変換実行
※実行前にblenderの言語設定を英語にしておかないと実行時にエラーが出ます。
⇒出力指定したフォルダに変換したモーションデータが作成される
4.変換したモーションデータをUEにインポートする#
4-1.まずモデル付きモーションデータをUEのコンテンツブラウザにドラッグアンドドロップ
4-2.以下の画像を参考にインポート設定
4-3.次にモデルなしモーションデータをインポートしていく
5.インポートしたデータのリターゲット設定をする#
5-1.インポートしたデータのスケルトンデータを開き、まず「プレビューシーン設定」→「メッシュ」→「アセットに適用」
5-2.モデルをTポーズからAポーズに修正
※上記でも紹介した以下の記事中の「TスタンスのモデルをAスタンスにする」を参考に調整
(UE4初心者が頑張ってるブログ様より)
http://mozpaca.hatenablog.com/entry/20161023/1477211854
5-3.修正後、「リターゲットベースポーズを管理」→「ポーズを変更」→「現在のポーズを使用する」で修正後のポーズを反映させる。
5-4.「リターゲットマネージャ」→「リグを選択」→「ヒューマノイドリグを選択」→「自動マップ」
5-5.リグ設定を修正
コンバート後はボーン構造はUE標準と同じ構造になるので自動マップできる筈なんですが、何故か一部分が自動マップでうまく入らないので修正が必要です。ソース名とターゲット名が同一なるよう手動で修正してください。
※「詳細設定を表示」から指のリグも確認が必要です。結構違うリグが入ってしまっています。修正後のボーン情報を保存しておけば次以降はそれをロードするだけで修正できるかも。
5-6.修正後、保存する。
6.モーションデータをあてたいスケルトンデータにもリターゲット用リグを設定する#
インポートしたモーションデータの適用したいモデルのスケルトンデータ開き「リターゲットマネージャ」→「リグを選択」→「ヒューマノイドリグを選択」→「自動マップ」でリグを設定。こちらはもとから入ってるものなので当たり前ですが特に修正必要ありません。
今回はグレイマンを使います。
7.インポートしたAnimデータをリターゲットする#
7-1.インポートしたAnimデータを右クリック→「Animアセットをリターゲットする」→「Animアセットとリターゲットを複製する」
7-2.モーションを適用させるUE標準のスケルトンデータを選択→「リターゲット」
7-3.リターゲット先のスケルトンデータをもとにしたAnimデータが複製される。
他のモーションデータも7-1,2を繰り返すことで同様にAnimデータが作成されていくはずです。お疲れ様でした。
補足...自分が詰まったところ#
作成完了したAnimデータを見たらグレイマンの関節がねじ曲がってる部分があった
→インポートしたスケルトンのリグデータがうまく設定できていなかった。ソース名とターゲット名が同じになるよう手順5-5からやり直したら直った。
インポートしたAnimデータと複製したグレイマンのAnimデータを見比べると少し動きがずれてた
→元のスケルトンデータのAポーズとグレイマンのAポーズが少しずれいているせいだった。グレイマンのAポーズに極力近づけるように修正・保存後、再度手順7を実行することでほぼ同じ動きをするようになった。
これをやるだけで丸1日潰れてしまった。。。