![Unity上でBlenderのオブジェクト/ボーンアニメを両立](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity.jpg)
地味にBlenderのオブジェクトアニメーション*がインポート可能なUnityで、アーマチュアの一部として組み込まれたパーツを動かそうとしても、ボーンアニメーションと両立出来ない問題の解決法。
*(オブジェクトモードでオブジェクトのトランスフォームのキーを打つヤツ)
やりたい事
狂犬的な敵キャラに、歩行や攻撃等の通常アクションをさせつつ、目をクレイジーな感じに動かしたい。
結論
どう設定しても、Unity上では同一アーマチュアのボーンアニメーションと干渉する。
(厳密には、オブジェクトアニメーションの所有がアーマチュアの方になっている的な雰囲気)
対象パーツを別FBXに分けて出力して、Unity上で身体モデルの対象部位用のボーン下に設置すれば両立可能。
手順
【Blender】目のオブジェクトをアーマチュアから分離
【Blender】対象部位用ボーンを対象オブジェクト位置に合わせる
全身のボーンを初期ポーズにリセット
ボーンアニメーションの影響で、デフォルトポーズと変わっている場合は、一応リセットしておく。
- Sceneウィンドウ -> 身体のアーマチュアを選択。
- モードメニュー* -> モードタイプ: ポーズモードに変更。
*(上部メニューの下段、モード毎に変わるメニュー) - モードメニュー -> 選択 -> すべて
(ショートカット: Aキー)
![ポーズモードに変更してから全てのボーンを選択](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity001.jpg)
モードメニュー -> ポーズ -> トランスフォームをクリア -> すべて
![全てのボーンのトランスフォームをクリア](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity002.jpg)
目のオブジェクトの原点を調整
目のボーンに「位置コピー」を適用
- (モードを変えていた場合)モードメニュー -> モードタイプ: ポーズモードに変更。
- 目のボーンを選択。
- プロパティウィンドウ -> ボーンコンストレイントタブを開く。
![目のボーンを選択し、ボーンコンストレイントタブを開く](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity003.jpg)
- ボーンコンストレイント追加 -> 位置コピー
- ターゲット: 目のオブジェクトを指定。
- モードメニュー -> ポーズ -> 適用 -> 選択ボーンをレストポーズとして適用
- ボーンコンストレイント「位置コピー」を削除。
(左右毎に行う)
![目のボーンにボーンコンストレイント「位置コピー」を追加](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity004.jpg)
![ボーンコンストレイント「位置コピー」のターゲットに目のオブジェクトを指定](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity005.jpg)
![レストポーズに適用し、オブジェクトコンストレイント「位置コピー」を削除](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity006.jpg)
【Blender】身体/目モデルを別のFBXとして出力
目のオブジェクトの位置をクリア
目のボーン位置を目のオブジェクト位置にした = 目のオブジェクト位置がそのままだと二重に掛かるので、クリアしておく。
- モードメニュー -> モードタイプ: オブジェクトモードに変更。
- Sceneウィンドウ -> (Ctrlキーを押しながら)目のオブジェクトを全て選択。
- モードメニュー -> オブジェクト -> クリア -> 位置
![左右の目を選択し、オブジェクト位置をクリア](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity007.jpg)
最適な設定でパーツ毎にエクスポート
- Sceneウィンドウ -> 出力対象のオブジェクトのみを個別に選択。
(ボディ部分の時は、Ctrlキーを押しながらアーマチュア下のメッシュも選択する) - 上部メニュー -> ファイル -> エクスポート -> FBX (.fbx)
![分ける部位毎に選択し、FBX形式でエクスポート](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity008.jpg)
- 「内容」の項
- 選択したオブジェクト: 有効化
- オブジェクトタイプ: アーマチュア&メッシュ
(Shiftキーを押しながら選択)
- 「トランスフォーム」の項
- スケールを適用: すべてFBX
(Unity上で、アーマチュアのScaleがバグるのを防ぐ) - トランスフォーム適用: 有効化
(Rotationが分かり易くなる)
- スケールを適用: すべてFBX
- 「アニメーションをベイク」の項
- 全アクション: 無効化
(別にアクションを使っても良いが、モーション名が「アーマチュア名|モーション名」になるのでNLAストリップで出力する方が見栄えが良い)
- 全アクション: 無効化
![エクスポートオプションを適切に設定001](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity009.jpg)
![エクスポートオプションを適切に設定002](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity010.jpg)
【Unity】3Dモデルの設定
モデルのインポート&Animatorコンポーネントの追加
- Assetsウィンドウにドラッグ&ドロップして、3Dモデル&テクスチャをインポート。
- Assetsウィンドウ -> 3Dモデルを選択。
- インスペクター -> Rigタブ -> Avatar Definition: Create From This Modelを選択。
(身体/左右の目のモデル全てに行う)
![Avatar DefinitionをCreate From This Modelに変更](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity011.jpg)
Animator Controllerの作成
- (適したフォルダがない場合は、適当に新規フォルダ「Animators」等を作っておく)
- Assetsウィンドウ -> 右クリック -> Create -> Animator Controllerを選択。
(身体と左右の目のモデル別に作成) - Animatorウィンドウで、アニメーションも設定しておく。
![身体と左右の目のAnimator Controllerを作成](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity012.jpg)
身体モデルを設置&設定
- 身体モデルをシーン内に設置。
- 身体モデルのRootオブジェクトを選択。
- Animatorコンポーネント -> Controller: 前項で作成したAnimator Controllerを設定。
目のモデルを設置&設定
アニメーションの角度の変更はローカル角度として適用される為、直置きでなく若干補正が必要。
- ヒエラルキーウィンドウ -> 検索窓 -> eyeと入力。
- Eyeボーンを選択。
- 検索窓をクリア。
- 対象ボーン下に空のオブジェクトを作成し、向きを正面に合わす。
- Transformコンポーネント -> Rotation: (L: 0, 0, -90 / R: 0, 0, 90)
- 空のオブジェクト下に、目のモデルを設置。
- 目のモデルのAnimatorコンポーネントにも忘れずに、Animator Controllerを設定しておく。
![Eyeボーンを検索&選択](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity013.jpg)
![目のボーン下に空のオブジェクトを作成](https://www.zkn0hr.com/wp-content/uploads/2023/05/combining-blender-object-animation-and-bone-animation-in-unity014.jpg)
クレイジードッグの完成です。