Blenderを使ってUnityで弓を撃つアニメーションを作成する

2021年4月22日木曜日

blender Unity アニメーション

t f B! P L

 はじめに

  • Unityで弓を撃つアニメーション(モーション)を使いたいが、無償のAssetでは見当たらなかった
  • カジュアルゲームなので弓の挙動と大体あっていればいい
  • Blenderで作ってUnityにエクスポートする方法がよさげなのでそれでやってみた
最終的にできたもの↓

開発環境

  • MacBook Air
  • Blender 2.83.10
  • Unity 2019.4.20f1(LTS)
  • 動作確認用モデル
    • Unity-Chan! Model ver1.2.2
      •  https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705
      • ↑からMyAssetに登録してWindow > Package Managerから導入する
    • SDユニティちゃん 3Dモデルデータ ver1.01
      • https://unity-chan.com/download/releaseNote.php?id=SDUnityChan
      • ↑からunitypackageをDLしてAssets > Import Packageから導入する

ステップ

  1. 事前にUnityで動作確認用のプロジェクトを用意する
  2. Blenderで骨格を準備する
  3. Blenderでアニメーションを作る
  4. BlenderからUnityにデータを渡す
  5. Unityで動作確認する

1. 事前にUnityで動作確認用のプロジェクトを用意する

  1. Unityで新規プロジェクト(3D)を作成する
  2. Humanoidに対応した人型モデルをインポートする(今回はUnityChan)
  3. 人形モデルのプレハブをシーンに配置して動作確認する
    1. プロジェクトウィンドウから以下の2つのプレハブをシーンに配置
      1. unity-chan! > Unity-chan! Model > Prefabs > unitychan
      2. UnityChan > SD_unitychan > Prefabs > SD_unitychan_humanoid
    2. プレハブとカメラを適当な位置に動かして動作確認する
  4. 人形モデルに最初からついている不要なスクリプトをオフする
    1. UnityChanの場合は以下のスクリプトがついているのでOFFする(チェックボックスを外すか、右クリックからRemove Componentする)
      1. Idle Changer
      2. Face Update
  5. 人形モデルに最初からついているコントローラーを外す
    1. AnimatorについているControllerの登録を外す



2. Blenderで骨格を準備する

  1. Blenderで新規プロジェクト(General)を作成する
  2. 最初からあるCubeを削除する
    1. Cubeを選択して "X" > Delete
  3. 人形アーマチュア(人形ボーン)を追加する
    1. "shift+A" > Armature > Humanoid (Meta-Rig)



3 Blenderでアニメーションを作る

  1. ポーズモードに変更する
    1. 左上からEditModeをPoseModeに変更(もしくは"Control+Tab"で切り替え)
  2. ポーズを作って登録する
    1. キーフレームを選択
      1. 画面下の数字が並んだパネルから数字部分を選択する
    2. 骨を回転するとき
      1. 動かしたい骨をクリックして選択(青色になる)
      2. "R" > マウス移動で回転 > マウスクリックで確定
      3. ※X軸で回転したいときは"R"のあとに"X"、Y軸は"Y"、Z軸は"Z"
    3. 視点を変えるとき
      1. マウスホイールドラッグで視点回転
      2. shift+マウスホイールドラッグで視点移動
      3. マウスホイール回転で近づく、遠ざかる
      4. "1" ~ "9", "0"で特定の視点にする
    4. ポーズをキーフレームに登録する
      1. "A"(全骨選択) > "I" > LocLotを選択
  3. 弓を引くアニメーションを作る
    1. 弓を引くときのフォームを確認しながら、ポーズを作って登録していく
      1. 参考:https://www.kyudo.jp/improve/
    2. キーフレームはとりあえず10間隔で登録



4 BlenderからUnityにデータを渡す

  1. アニメーションに名前をつける
    1. SceneCollectionからCollection > metarig > Animation > metarigActionの名前をHoldActionに変更
  2. FBX形式でエクスポートする
    1. 上のメニューバーからFile > Export > FBX (.fbx)を選択
    2. 出力先を事前に作っておいたUnityプロジェクトのAssetsに変更
    3. 出力ファイル名をShooter.fbxに変更
    4. 右側にある設定画面から以下の通り設定
      1. Include
        1. Object Typesで Armature と Meshだけ選択した状態にする(Shiftを押しながらクリックで複数選択できる)
      2. Armature
        1. Only DeformBonesのチェックする
        2. Add Leaf Bonesをチェックを外す
    5. Export FBXをクリック

5. Unityで動作確認する

  1. Unityで先程のFBX形式のファイルの設定をHumanoidにする
    1. プロジェクトウィンドウから先程出力したShooter.fbxを選択
    2. インスペクタから以下を設定
      1. Rig > Animation TypeをHumanoidに変更してApply
      2. Animationから以下の3つをチェック
        1. Root Transform Rotation > Bake Into Pose
        2. Root Transform Rotation(Y) > Bake Into Pose
        3. Root Transform Rotation(XZ) > Bake Into Pose
  2. 新規のアニメーションコントローラーを作成してUnityChanに登録する
    1. プロジェクトウインドウを右クリック > Create > Animation Controller
    2. 名前をShooterAnimControllerに変更
    3. シーンに配置しているUnityChanのプレハブを選択
    4. インスペクタからAnimatorコンポーネントの中のControllerにShooterAnimControllerを登録
  3. アニメーションコントローラーにBlenderで作ったアニメーションを登録する
    1. ShooterAnimControllerをダブルクリックしてAnimatorウインドウを出す
    2. Shooter.fbxの中にあるmetarig|HoldActionをD&DでAnimatorの状態遷移画面に追加
  4. 実行ボタンを押して動作を確認

あとはBlenderで待ちと射撃のアニメーションを作成して、UnityのAnimaterの状態遷移に登録してやれば思った通りのことができた


おわりに

Blenderを作って簡易的なモーションを作ることができた
頭の角度がなんか下向きでおかしいのでもう少し修正したい

最初は参考にしている書籍に従ってAnimation Riggingで作ろうと思ったが、こっちのほうが圧倒的に楽だった
AnimationRiggingはもっとゲームのオブジェクトと連動した動きをさせたいときに使うと良さそう(ゲームオブジェクトを目で追うようにするとか)

Translate

このブログを検索

  • ()
  • ()
もっと見る

QooQ