Blenderで作ったアニメーションをUnityで動かす

# はじめに
BlenderおよびUnity初心者向けの「Blenderで作成した3DモデルをUnityで動かす方法」の手順メモです。

【使用環境】
- Blender v2.91.0
- Unity 2020.1.11f1

【概要】
1. Blenderで3Dモデル・ボーン・アニメーション作成
2. .FBX形式で書き出す
3. Unityにインポート、マテリアルやライティング確認
4. 「Animation Controller」からアニメーションを設定

#準備
Blenderで3Dモデルを作成し、ボーンを入れる。
今回のためにこのようなもっちりしたキャラを作りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/19d1130b-0afa-99dd-79f1-30f114493dcc.png)
こんな感じでボーンが入っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/d4862683-6e4a-9f18-7cf3-cc193c93f4cb.png)
このうさちゃんを「Blender内でアニメーションをつけてUnityにインポートする」方法で動かします。

#Blenderでアニメーション作成
Blenderで作るアニメーションの種類は**「フレームレートアニメーション」**というものです。
**キー**となるポーズを**フレーム**に登録することで、中間が自動で補完されて動きます。
（思った通りに変遷しない場合は、キーフレームとキーフレームの間にさらにキーフレームを追加することで、アニメーション変遷の矯正を行います。）

1. 3Dビューポート画面からポーズモードに入る
1. G（移動）でボーンを動かして好きなポーズをとらせる
1. 今のポーズを登録するボーンを選択（Aで全選択可能）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/ac4b370c-ba08-4ed6-2a1d-3cdca2d1a911.png)
1. 好きなフレーム位置に、Iでキーフレームとして登録（位置、位置・回転、スケール、などの選択肢の中からとらせた動きに合わせて選ぶ）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/62b2806a-871f-a3ba-63eb-538a5bb14249.png)
1. 2から4を繰り返してアニメーション作成
1. 一連の動きを登録し終わったら**ノンリニアアニメーション画面**に移動しストリップ化![スクリーンショット 2020-12-08 233711.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/f830415a-9a55-c3e6-b21e-89492dd402c1.png)
1. アニメーションに名前を付け、必要に応じてアニメーションの長さ・再生速度の変更・リピート設定（チェックボックスをクリック）などを行う![スクリーンショット 2020-12-08 235817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/d4c7ebe1-e3e1-5f77-dd34-d8b28b391213.png)
今回は、尻尾を左右に振るSwingTailと、手足をバタバタさせるBatabataというアニメーションを作成しました。

#Unity用にエクスポート
1. ファイル > エクスポート > FBX (.fbx)を選択![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/712e6371-a649-0e00-4319-3281974765ef.png)
2. 今回作成したオブジェクトはメッシュとアーマチュアのみで構成されているため、ほかの選択項目を解除![スクリーンショット 2020-12-09 001352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/a3e7f5be-2bfa-ebe6-6af6-0f1c1e10c9e5.png)
この時**「トランスフォームを適用」**にチェックを入れましょう。これはBlender座標軸をUnity座標軸に変換してくれる機能です。BlenderとUnityでは座標系が違うので、これを適応しないと、UnityにインポートしたときモデルがZ軸に90度傾いた状態になります。
1. **「アニメーションをベイク」**にチェックが入っていることを確認
2. **「FBXをエクスポート」**でエクスポートしましょう！ 

#Unityにインポート
Assets > Import New Asset > 先ほど保存したFBXを選択、Hierarchyビューにドラッグ＆ドロップでインポートします。
するとこのような状態になりました。ライティングが機能しておらず、マテリアルもはがれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/4d30b57b-4292-4e41-f956-06f25ec9f7be.png)
ここで、Window > Rendering > Lighting、出てきたウィンドウの下部にある**Auto Generate**にチェックを入れましょう。
![スクリーンショット 2020-12-09 004609.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/846ac1b7-9d15-c8be-589b-7ed52f87ecbf.png)
するとうまく明るく表示され、マテリアルも復活しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/0e5fc6d9-f163-a172-23e2-19048a83f3dc.png)

#Unityで動かす
1. モデルにAdd Componentから**Animator**を追加
2. Projectの＋から**Animator Controller**を追加、画像の位置にドラッグ＆ドロップ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/bba3196e-8be5-13c8-13c3-a08fa7b7f904.png)
3. Animator Controller画面を開き、Projectからアニメーションをドラッグ＆ドロップ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920287/1b8dbe63-472c-1ae6-9e79-c896e69e6c5f.png)
4. 再生ボタンを押してうまく動いているか確認しましょう！


-----------
少しでも誰かのお役に立てたら幸いです。
ありがとうございました！