yu00’s blog

プログラミングに関する備忘録です

MixamoアニメーションをBlenderで調整しUnityで読み込む

はじめに

Mixamoは大量の3Dモデルのアニメーションが無料で利用できるサイトです。
またMixamo公式からControl Rig(IK)を設定するBlenderアドオンが公開されており、
簡単にアニメーションを作成できます。
今回はMixamoアニメーションを自作のモデルに適用し、
Blenderでアニメーションを調整し、
Unityでアニメーションを読み込む方法を説明します。

手順概要

以下のような例で手順を説明します。手順2まではすでに終わっているものとし、
手順3から説明します。

  1. Blenderで自作モデルを作成
  2. Unityで自作モデルををセットアップ
  3. Mixamoセットアップ ← ここから説明
  4. Mixamoから「歩く、振り返る」アニメーションをダウンロード
  5. Blenderでアニメーションをインポート
  6. Blenderでアニメーションを「歩く→振り返る」に合成
  7. Blenderでアニメーションをエクスポート
  8. Unityでアニメーションをインポート
  9. Unityでモデルにアニメーションを適用

前提知識

  • BlenderでFBXモデルをエクスポートしUnityでインポートできる
  • BlenderでNonlinear Animationを使い既存のアニメーションを合成できる
  • Unityで既存のアニメーションクリップを使いモデルにアニメーションを適用できる

手順

開始状態

以下のように自作Unity用モデルがセットアップされた状態で始めます。

今回は受付嬢さんを使用します。

ボーン名は次のようにUnityの名前に合わせます。

Blender : アドオンのインストール

以下2つのアドオンをインストールします

Blender : Mixamo元モデルのダウンロード

Unity用モデルをMixamoモデルに変換するため、
Mixamoから元モデルをダウンロードします。

  • https://www.mixamo.com/
  • Charactersタブ
  • 適当なキャラクターを選択
    • 注意 : 標準のx-bot, y-botはMixamo add-on for Blenderに対応していないため別キャラクターにしてください
    • 今回はMichellにします
  • DOWNLOAD

Blender : Mixamoアップロード用モデルに変換

Mixamoにアップロードするためのモデルを作成します

  • Armatureを複製します。ここではArm_MixamoUploadとします
  • Mixamo元モデルをインポートします。ここではArm_MixamoOrgとします
  • Miscタブ > PyBone Convertor から以下設定でConvertします
    • Arm_MixamoUploadを選択
    • Script : ${.}/unity_to_mixamo.py
    • Source Armature : Arm_MixamoOrg
    • Align Roll : Check
    • Add not existing bones : Check
    • Remove not existing bones : Check

Arm_MixamoUploadのボーンがMixamo用に変換されます

  • Arm_MixamoUploadのアーマチュアだけをArm_MixamoUpload.fbxとしてエクスポートします。設定はUnityと同じです

Mixamo : アニメーションのダウンロード

  • Mixamoサイト > UPLOAD CHARACTER でArm_MixamoUpload.fbxをアップロードします
  • Animationタブで検索し、WalkingとRight Turnをダウンロードします

Blender : Control Rigの作成

Control Rigを適用したモデルを作成します

  • 自作モデルのArmatureとメッシュを複製します。ここではArm_MixamoCtrlとします
  • Miscタブ > PyBone Convertor から以下設定でConvertします
    • Arm_MixamoCtrlを選択
    • Script : ${.}/unity_to_mixamo.py
    • Source Armature : Arm_MixamoOrg
    • Align Roll : Check
    • Add not existing bones : Check
  • Mixamoタブ > Control Rig > Create Control Rig でControl Rigを作成します

Blender : アニメーションの合成

アニメーション作成
  • WalkingとRight Turnをインポートします
  • 分かりやすいようにアーマチュアとアニメーションをOrgWalking, OrgTurnにリネームします

  • Arm_MixamoCtrlを選択します
  • Mixamoタブ
    • Source Skeleton : Arm_OrgWalking
    • Apply Animation to Control Rig
  • Animation Workspace > Nonlinear Animation からArm_MixamoCtrlのActionをPush Downします
  • OrgTurnも同様に行います

  • Unityで取り込むために1フレーム目にTPoseアニメーションを作成します
    • Poseモード
    • Armature > Clear Tramsformする
    • 全ボーンを選択
    • Iキーでキーを挿入
    • ActionをPush Down
  • Nonlinear AnimationでWalkingとTurnを合成します

アニメーションベイク
  • Pose Modeにします
  • ボーンを全選択解除します
  • Object Data Property > Layers で2番目を選択します
  • ボーンを全選択します
  • Nonlinear Animation > Edit > Bake Action で以下をチェックしてベイクします
    • Only Selected Bones
    • Visual Keying
    • Clean Curves

  • Action名を分かりやすいものに変えます。ここではWalkingTurnとします
  • Arm_MixamoCtrlのアーマチュアだけをArm_MixamoCtrl.fbxとしてエクスポートします

Unity : アニメーションのインポート

  • Arm_MixamoCtrl.fbxを選択します
  • Rig
    • Animation Type : Humanoid
    • Apply
  • Arm_MixamoCtrl.fbxの中からArm_MixamoCtrl|WalkingTurnアニメーションクリップを選択します
  • Ctrl+Dでアニメーションクリップを複製します
    • 複製後はArm_MixamoCtrl.fbxを削除しても問題ありません
  • Arm_MixamoCtrl_WalkingTurnアニメーションクリップの設定を以下のようにします
    • Root Transform Rotation/Position(Y)/Position(XY)
      • Bake into Pose : Check
      • Based Upon(at Start) : Original

  • AnimatorにArm_MixamoCtrl_WalkingTurnを設定して完了です