JKになりたい

何か書きたいことを書きます。主にWeb方面の技術系記事が多いかも。

【UE5】MixamoのアニメーションでVRMのキャラクターを動かせるようにする【IKリターゲティング】

数多のキャラクターやアニメーションが無料で、しかも商用利用もできてしまうという夢のようなサービスMixamo

このアニメーションを使ってゲームを作れたら最高ですよね。今回はVRMで作った自分のキャラクターモデルを動かしてみようと思います。

当然、ボーンが異なるのでそのままでは動きません。

そこで本記事ではUE5のIKリターゲティングを使って、MixamoのアニメーションでVRMを動かせるようにしていく手順を記載していきます(/・ω・)/

準備(1) MixamoでアニメーションをダウンロードしてUE5に取り込む

www.mixamo.com

ここで任意のアニメーションを選択し、fbxをダウンロードします。 ダウンロードしたファイルをImport Animationにチェックがついてることを確認し、Importしておきます。

準備(2) VRM4Uを使ってVRMをUE5に取り込む

はるべえさんが作成されているVRM4Uというプラグインで、簡単にVRMをUEに取り込むことができます。感謝。

ruyo.github.io

導入方法は上記サイト参照。PluguinsフォルダにD&Dで取り込むだけです。

(1) IKリグを作成

IKリターゲティングを使うためには、IKリターゲティング元(ソース)と先(ターゲット)に対してそれぞれIKリグと呼ばれるリターゲティングの設定をするためのアセットが必要です。

VRM4Uで取り込んだ場合、既に「Mannequin」「MannequinBone」「Humanoid」の三種のIKリグが提供されていると思います。

一方、Mixamoで取り込んだモデルに対しては生成されていないので、自分で作っておきます。

(コンテンツブラウザで)追加ー>アニメーションー>IKリグを選択し、Maxiamoで取り込んだモデルのスケルタルメッシュを選択して作成します。

(2) IKリグを設定

VRMの「Humanoid」のIKリグと先ほど作成したIKリグを開きます。 すると、既にIKリターゲティングの設定が色々

これと対応するように、先ほど作成したIKリグの設定を行っていきます。 チェーン名をHumanoidのIKリグと一致させて、対応するボーンを設定していきます。

MixamoのIKリグの設定は以下。

Spineだけ注意。これだけ開始ボーンと終了ボーンが異なります。 VRMは「J_Bip_C_Spine」から「J_Bip_C_UpperChest」となっていますので、これに対応したボーンを設定します。

Spine=脊椎の設定が一致しないと、足が浮いてしまう原因になります。

(2) IKリターゲッタを作成、設定

追加→アニメーション→IKリターゲッタから作成し、設定を行っていきます。

まず、Source IKRig AssetにMixamoのIKリグ、Target IKRig AssetにVRMのIKリグを設定します。

次に、チェーンマッピングの設定を行っていきます。これでソースとターゲットのIKリグの対応関係を設定していきます。

前パートで名前が一致するように作ったので、「チェーンの自動マップ」を押すと全て自動で設定されるはずです。

うまく設定されない場合や誤っているものがある場合は、手動で対応させていきましょう。

注意しないといけないのが、rootに対してHips、hipsに対してはNoneを設定していることです。ここだけ双方のIKリグと名前が一致していないので注意です。

(3) アニメーションをプレビューして確認後、エクスポート

チェーンマッピングの横に、Mixamoのアニメーションシーケンスが並んでいると思うので、こちらを選択するとアニメーションのプレビューができます。

これで問題なさそうであれば「選択したアニメーションをエクスポート」で完了です(/・ω・)/

youtu.be

ちなみに、Spineの設定や、先述したRootの設定が誤っていたりすると以下のように露骨に足が浮いたり、埋まったりします。 他にも、おかしな挙動をしている場合にはIKリグやマッピングに間違いがないか見直してみてください。

youtu.be

EX.髪も動かす

デフォルトでは「物理アセット」の設定により髪が動くようになっていますが、これはかなり違和感のある挙動になります。

なので、VRMSpringBoneに差し換えていきます。

詳細な手順は公式ドキュメントに書かれていますが、とても簡単なのでさらっと本記事でもメモを残しておきます。

(ドキュメント)アニメーションをリターゲット、揺れ骨を再現する - VRM4U

まずは、スケルタルメッシュからデフォルトで設定されている物理アセットの設定を外します。

で、アニメーションBPの最終Outputまでの間に「VRMSpringBoneノード」を入れ、このノードの設定「Vrm Meta Object」に当該VRMのMetaObjectを設定すれば完了です。

もろもろ全て設定が完了した状態。

youtu.be