皆様いかがおすごしでしょうか。歌乃です。
最近またUEを触り始めましたが、色々変わっていて正直手探り状態です(´・ω・`)
前回(UE5 に VRoid Studio で作ったキャラを取り込んでみる)からの続きです。
以下のような読者を対象にしてます。
前回、無事VRMファイルの取り込みに成功し、リターゲットによってMannequin用のアニメーションをVRMスケルトンに変換しました。
その後、キャラクターBPを編集してABPとSkeletalMeshを差し替えて、サンプルプロジェクトでVRMが表示されるところまで出来ました。
しかし、IdolアニメーションやJumpアニメーションは問題なかったのですが、WalkとRunのアニメーションに問題がおきました。
何故かアニメーションの再生に位置の変化が反映してしまっています。
ちょっとわかりにくいかもしれませんが、通常、キャラオブジェクトの移動はキャラオブジェクト自体を動かすので、歩く、走るといったアニメーションは単体で再生すればその場で移動せずに駆け足しているような形になっています。
実際元のサンプルプロジェクトのMannequinではそういった状態のアニメーションになっています。
リターゲットに失敗したというか、他のアニメーションは問題ないように見えるので、WalkとRunのアニメーションの変換に何らかの問題があったものと思われます。
いままでの経験から原因としてはRoot BoneまたはPelvisやHipといった起点となるBoneになんらかの座標移動が設定されている感じです。
この後、いろいろと設定を変えて取り込みを試しましたが、どれもうまくいきませんでした(´・ω・`)
原因は予想がついているので根本的な解決(力技)を図ることにしました。
UE5にはアニメーションの編集機能がありますが、同時にアニメーションファイルからモーションデータをFBXファイルとして出力する機能がついています。
この機能を利用して問題のあるWalkとRunのアニメーションデータをFBXとして取り出します。
こうして取り出したFBXファイルをBlenderでImportして編集します。
Root直下の「J_Bip_C_Hips」というボーンを編集します。ボーンに設定されているキーフレームを展開してY 位置(前後方向)のキーを1フレーム目を残して削除します(1フレームも削除して問題ないとは思いますが、念のために残してます)。
編集が済んだら、FBX形式でExportします。
UEに戻ってアニメファイルを編集します。エディター上部に「アニメーションを再インポート」がありますので、そこからBlenderで出力したFBXファイルを選びます。
アニメーションに存在するボーンが使用しているスケルトンアセットに存在しない、という警告が出ますが、無視して問題ありません。
アニメーションを再生してキャラが移動しないことを確認します。
アニメーションの編集(再取り込み)が完了したら実際にレベルを実行して動きを確認します。
いい感じになりました。
力技でしたが、とりあえず求める結果は得られました(゚∀゚)
この現象をもっとスマートに解決する方法はないものかしら。
12/11追記
解決策を見つけました。
まずは、元のアニメーションのルートモーションを無効にします。
次にIKリターゲッタの中でチェーンマッピングからルートチェーンを選択し、IKセッティングの平行移動モードを「Globally Scaled」に変更します。
あとは通常通りエクスポートすればOKです。
UEフォーラムの以下のトピックを参考に致しました。感謝。
https://forums.unrealengine.com/t/retargeting-root-bone-ue5/506512
水平方向の移動はOKなんですが、垂直方向には追従してくれません。なんとかならんものか(´・ω・`)
続き>UE5 リターゲットしたアニメーションの修正 - Unreal Engine -