皆様いかがおすごしでしょうか。歌乃です。

最近またUEを触り始めましたが、色々変わっていて正直手探り状態です(´・ω・`)

前回(UE5 に VRoid Studio で作ったキャラを取り込んでみる)からの続きです。

以下のような読者を対象にしてます。

  • UEの基本操作がわかり、BluePrintで簡単な処理を作れる。またはBPのサンプルを触ったことがある。
  • スケルトンやボーン、リグ、メッシュなど3Dアニメーションに関わる用語や仕組みがある程度わかる。
  • Blenderの基本操作がわかり、タイムラインでアニメーションを編集できる。

前回、無事VRMファイルの取り込みに成功し、リターゲットによってMannequin用のアニメーションをVRMスケルトンに変換しました。

その後、キャラクターBPを編集してABPとSkeletalMeshを差し替えて、サンプルプロジェクトでVRMが表示されるところまで出来ました。



サンプルプロジェクトでVRMが表示

しかし、IdolアニメーションやJumpアニメーションは問題なかったのですが、WalkとRunのアニメーションに問題がおきました。

何故かアニメーションの再生に位置の変化が反映してしまっています。

Anim_Run_problem

ちょっとわかりにくいかもしれませんが、通常、キャラオブジェクトの移動はキャラオブジェクト自体を動かすので、歩く、走るといったアニメーションは単体で再生すればその場で移動せずに駆け足しているような形になっています。

実際元のサンプルプロジェクトのMannequinではそういった状態のアニメーションになっています。

リターゲットに失敗したというか、他のアニメーションは問題ないように見えるので、WalkとRunのアニメーションの変換に何らかの問題があったものと思われます。

いままでの経験から原因としてはRoot BoneまたはPelvisやHipといった起点となるBoneになんらかの座標移動が設定されている感じです。

この後、いろいろと設定を変えて取り込みを試しましたが、どれもうまくいきませんでした(´・ω・`)

原因は予想がついているので根本的な解決(力技)を図ることにしました。



UE5にはアニメーションの編集機能がありますが、同時にアニメーションファイルからモーションデータをFBXファイルとして出力する機能がついています。

FBXファイルとして出力

この機能を利用して問題のあるWalkとRunのアニメーションデータをFBXとして取り出します。

アニメーションデータをFBXとして取り出し

こうして取り出したFBXファイルをBlenderでImportして編集します。

Blenderで編集

Root直下の「J_Bip_C_Hips」というボーンを編集します。ボーンに設定されているキーフレームを展開してY 位置(前後方向)のキーを1フレーム目を残して削除します(1フレームも削除して問題ないとは思いますが、念のために残してます)。

J_Bip_C_Hipsというボーンを編集

編集が済んだら、FBX形式でExportします。



UEに戻ってアニメファイルを編集します。エディター上部に「アニメーションを再インポート」がありますので、そこからBlenderで出力したFBXファイルを選びます。

アニメーションに存在するボーンが使用しているスケルトンアセットに存在しない、という警告が出ますが、無視して問題ありません。

アニメーションを再生してキャラが移動しないことを確認します。



アニメーションの編集(再取り込み)が完了したら実際にレベルを実行して動きを確認します。

Anim_run_result

いい感じになりました。




力技でしたが、とりあえず求める結果は得られました(゚∀゚)
この現象をもっとスマートに解決する方法はないものかしら。

12/11追記
解決策を見つけました。
まずは、元のアニメーションのルートモーションを無効にします。
ルートモーション
次にIKリターゲッタの中でチェーンマッピングからルートチェーンを選択し、IKセッティングの平行移動モードを「Globally Scaled」に変更します。
ue001_07
あとは通常通りエクスポートすればOKです。
UEフォーラムの以下のトピックを参考に致しました。感謝。
https://forums.unrealengine.com/t/retargeting-root-bone-ue5/506512

水平方向の移動はOKなんですが、垂直方向には追従してくれません。なんとかならんものか(´・ω・`)

続き>UE5 リターゲットしたアニメーションの修正 - Unreal Engine -



Post If you feel like it, I would be happy if you could post it.