[Blender]3Dモデルの回転・座標系がズレないようにUnityへ取り込む手順

2021年3月2日

3DCGモデリングソフト Blender で作成したアニメーション(アーマチュア)付きモデルを Unity で取り込む方法についてです。

Unity では、Blender のデータファイル(.blend)そのものやFBXなどの形式で出力したモデルを取り込んでシーン内で使用することができますが、いくつかの手順を踏まなければ予期せぬ異常が起こることがあります。

単純なモデルの場合は試験的機能とされる”Apply Transform“を利用すれば簡単に正常化できますが、アーマチュアを設定している場合は少し面倒なことになります。

取り込んだモデルが巨大化したり、正面を向いていなかったり、回転の値がおかしくなったり……など、このような事態が起こらないようにモデルを取り込むための手順について以下に記載します。動作を確認したOSやソフトの環境は以下のとおりです。

  • Blender(Windows/2.91)
  • Unity(macOS Big Sur/2020.2.1f1)

Blenderで行う処理

アーマチュアを設定し、アニメーションを含んだ3Dモデルを完成させたとします。例えば、以下のようなお辞儀をするサンドバッグ(?)を作ったとします。

Blenderで作成したアニメーション付き3Dモデル

デフォルトの設定でFBX出力して Unity で取り込んだ場合、スケールが100倍となり回転の向きも89.98度ズレるなどの異常が起こります。

スケールを正常化し、意図した向きを正面(Unityではローカル+Z方向)とするには、出力の前に以下の処理を行います。なお、これらの処理を行う際はアニメーションの再生フレームは 0 のところにしておいてください。

1. モデルの正面をマイナスY方向に向ける

モデルのメッシュと接続しているアーマチュアを選択し、Z方向を軸にして回転させ、モデルの正面が -Y となるようにします。既にそうなっている場合は次の手順に進んでください。

2. 一旦メッシュとアーマチュアの親子関係を解除する

オブジェクトモードでメッシュとアーマチュアの両方を選択し、ショートカットキー[Alt + P]で現れるメニューから”Clear and Keep Transformation“を選択します。

メッシュとアーマチュアの親子関係を解除する

これによってアーマチュアとメッシュの親子関係が解消されますが、後ほど修正します。

3. X軸に-90°の回転を適用

メッシュとアーマチュアを両方選択し、回転値を X = -90 としてください。その後、この回転を適用(Apply)し、表示が 0° になるようにしてください。

ApplyRotationによってアーマチュアとメッシュに回転を適用

Apply > Rotation によって TransformRotation が 0 になればOKです。

3. X軸に+90°の回転を行い、適用はしない

先程の回転と真逆の X = 90 の回転をメッシュとアーマチュアに入力します。入力はしますが適用はしないでください。つまり、Transform の Rotation には X = 90° となっている状態としてください。

Blenderで回転は行うが回転の適用は行わない

4. アーマチュアとメッシュを再接続

メッシュを選択してからアーマチュアを選択し、ショートカットキー[Ctrl + P]で現れるメニューから”Armature Deform“を選択します。”Armature Deform with 〜“ではないので注意してください。

ArmatureDeformによって親子関係を作る

Outliner でメッシュがアーマチュアの子要素となったことを確認してください。

5. FBX出力

上記の手順を行い、アーマチュアとメッシュが選択された状態のまま Export > FBX により出力を行います。

出力オプションでは、出力対象を”Selected Object“に限定し、”Apply Scaling”では Scale を”FBX Units Scale“に、Forward を”-Z Forward“にします。

回転とスケールを正常にするためのFBX出力設定

6. モデルをUnityに取り込んでみる

Transformの各値やアニメーションなどが適切に出力されているか確認してみてください。

回転やスケールを修正した3DモデルをUnityで取り込んだ例

モデルが+Z方向を正面にした状態でアニメーションしました。モデル内のアーマチュア・ボーンのスケールも 1 になっているはずです。

以上、Blender で作成したアニメーション付き3Dモデルを Unity で正常に取り込む方法についてでした。

他にもいくつか方法があるようですので、やりやすい方法を見つけると良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です