🏃‍♂️

グレイマンのようにMetaHumanを動かす方法

2021/05/02に公開

ThirdPersonCharacter(通称グレイマン)のデータを利用して、MetaHuman のキャラクターを動かす方法をまとめてみました。

https://youtu.be/83FCyonyS4Q

詳細は上記動画を参照いただければと思いますが、手順をまとめると以下のようになります。

流れ

  • UE4 で新規プロジェクトを作成する(テンプレートはThirdPerson)

  • Bridge から MetaHuman をエクスポートする(UE4へインポートする)

    • Missing と表示された3つの項目について Enable Missing... を選択しエディタを再起動する
  • アニメーションをリターゲットする

  • ブループリントを更新する

    • [方法1] ThirdPersonCharacter のブループリントベース
    • [方法2] MetaHuman のブループリントベース

アニメーションのリターゲット

  1. Content > Mannequin > Character > Mesh > UE4_Mannequin_Skeleton を開く

  2. メニューから Retarget Manager を開く

  3. Select Rig で Select Humanoid Rig を選択し保存する

  4. MetaHuman のスケルトンメッシュ(metahuman_base_skel アセット)を開く

    • 動画では Content > MetaHumans > Common > Female > Medium > NormalWeight > Body の階層にありますが、性別や身長などによって格納されているフォルダが異なるかもしれません
  5. メニューから Retarget Manager を開く

  6. Select Rig で Select Humanoid Rig を選択する

  7. Target を3カ所変更する

    • spine_01 -> spine_02
    • spine_02 -> spine_03
    • spine_03 -> spine_04
  8. Skeleton Tree タブを選択し、Option の Show Retargeting Options を選択する

  9. Root を右クリックし、Recursively Set Translation Retargeting Skeleton を選択する

  10. 以下の2カ所を変更する

    • Root ボーン -> Animation
    • Pelvis ボーン -> AnimationScaled
  11. MetaHumans フォルダ配下に Animations フォルダを作成する

  12. Content > Mannequin > Animations > ThirdPerson_AnimBP を右クリックして、Retarget Anim Blueprints > Duplicate Anim Blueprints and Retarget を選択する

    • 左ペインに表示されている metahuman_base_skel を選択する
    • MetaHuman 用のアニメーションであることが分かるように Prefix に MH_ を付ける
    • Change ボタンを押し、MetaHumans/Animation フォルダを選択する
    • Retarget ボタンを押す

ThirdPersonCharacter のブループリントベース

  1. Content > ThirdPersonBP > Blueprints > ThirdPersonCharacter を開く

  2. MetaHuman のブループリント(動画では Content > MetaHumans > Danielle > BP_Danielle) を開く(※ Danielle は作成したキャラクターの名前、適宜読み替えてください)

  3. BP_Danielle の Body 配下をコピーして、ThirdPersonCharacter にペーストする

  4. ペーストした Body の位置・回転を調整する(必要に応じてコライダーも修正する)

  5. ペーストした Body の Details にある Animation > Animation Mode を Use Animation Blueprint, Anim Class を 作成したアニメーションブループリント(動画では MH_ThirdPerson_AnimBP)に設定する

  6. BP_Danielle の Construction Script と Event Graph の内容をコピーして ThirdPersonCharacter にペーストする、関数や変数もペーストする

  7. コンパイル、保存して動作確認する

MetaHuman のブループリントベース

  1. Content > ThirdPersonBP > Blueprints > ThirdPersonCharacter を開く

  2. MetaHuman のブループリント(動画では Content > MetaHumans > Danielle > BP_Danielle) を開く(※ Danielle は作成したキャラクターの名前、適宜読み替えてください)

  3. BP_Danielle の Body の Details にある Animation > Animation Mode を Use Animation Blueprint, Anim Class を 作成したアニメーションブループリント(動画では MH_ThirdPerson_AnimBP)に設定する

  4. ThirdPersonCharacter の Event Graph のブループリントをコピーして BP_Danielle の Event Graph にペーストする

  5. ThirdPersonCharacter の変数2つコピーして、BP_Danielle にペーストする

  6. BP_Danielle のメニューから Class Settings を選択し、親クラスを Character に変更する

  7. BP_Danielle の Root を選択し、位置と回転を調整する(必要に応じてコライダーも修正する)

  8. Content > ThirdPersonBP > Blueprints > ThirdPersonGameMode を開く

  9. Default Spawn Class を ThirdPersonCharacter から BP_Danielle に変更する

  10. ワールドに配置している ThirdPersonCharacter をワールドから削除し、BP_Danielle をワールドに配置する

  11. ワールドに配置した BP_Danielle の Details > Pawn > Auto Possess Player を Player 0 に変更する

  12. ThirdPersonCharacter から CamearBoom と FollowCamera をコピーして、BP_Danielle にペーストする

  13. BP_Danielle の BP_Danielle(self) を選択し、Details > Pawn の Use Controller Rotation Yaw のチェックをはずす

  14. Character Movement(CharMoveComp) を選択し、Details > Character Movement(Rotation Settings) の Orient Rotatio to Movement にチェックを入れる

  15. コンパイル、保存して動作確認する

おまけ

以下の動画も同様の手順で対応しています。

https://twitter.com/hi_rom_/status/1387035177231142914

利用したアセットは以下になります。
https://www.unrealengine.com/marketplace/en-US/product/superhero-flight-animations?sessionInvalidated=true

参考

Exporting MetaHumans to Unreal Engine
https://docs.metahuman.unrealengine.com/en-US/HowTos/ExportingMetaHumans/ExportingToUnrealEngine/

アニメーション リターゲット
https://docs.unrealengine.com/ja/AnimatingObjects/SkeletalMeshAnimation/AnimationRetargeting/index.html

アニメーションを MetaHuman にリターゲティングする
https://docs.unrealengine.com/ja/Resources/Showcases/MetaHumans/RetargetingAnimationsOntoMetaHumans/index.html

Discussion