Blenderで作った3Dモデルのスケール・回転がUnity上でおかしくなる場合の対処法

スケールと回転がおかしい Unity

Unityでゲームを作っているとBlenderで作った3Dモデルをインポートして使いたくなる場合がありますよね。しかし普通にFBX出力したモデルをUnityにインポートすると、下の図のようにスケールや回転がおかしなことになってしまいます(※具体的には回転が-89.98・スケールが100になる)。

モデルの回転やスケールがおかしくなった場合の例

おそらくこの記事をご覧の皆さんもこういうトラブルに見舞われて困っていらっしゃると思いますので、今回はこの「スケール・回転がおかしくなる問題」の対処法について説明します。

Blender側で簡単にできる対処法

では早速ですが、今回の問題(=Blenderから出力したFBXモデルをUnityにインポートするとスケールと回転が変になる問題)の解決策を説明していきます。やり方はメッシュのタイプによって2通りに分かれます。

  1. 変形しない3Dモデルの場合
  2. 変形する3Dモデルの場合

それぞれ詳しく見ていきましょう。

変形しない3Dモデルの場合

まずは変形しないメッシュの場合です。変形しないメッシュの場合はとても簡単で、FBXのエクスポートウィンドウの右側にある「トランスフォームを適用」オプションにチェックを入れるだけです。

「トランスフォームを適用」オプション

このオプションをONにすることで、(後で説明しますが)BlenderとUnityの座標空間の違いを吸収することができ、Unityにインポートしたときに正しいスケール・回転になります。

ただし注意点として、これは執筆時点では実験的なオプションなので「アーマチュアやアニメーションが壊れる可能性がある」とのことです。したがって変形する3Dモデルの場合はこの後説明する方法を行いましょう。

変形する3Dモデルの場合

次はボーンを仕込んだ3Dモデル等、変形することを前提としたモデルの場合です。この場合もFBXのエクスポートウィンドウの右側にあるメニューを変更するのですが、ここでは「スケールを適用」オプションを「FBX単位スケール」に変更します。

「FBX単位スケール」オプション

こうすると出力したFBXをUnityにインポートしたときにルートオブジェクトのスケール・回転が正常になります。ただボーンのオブジェクトの回転だけは変になってしまうのですが、これはどうしようもありません。

Blenderで作ったモデルをUnityにインポートするとおかしなことになる理由

さてここからは余談ですが、そもそもBlenderで作ったモデルをUnityにインポートするとおかしなことになる理由を簡単に説明しておきます。

端的に言うとこのような問題が起きる理由は「UnityとBlenderの座標系が違うから」です。どういうことかというと、具体的には例えば

  • Unity:上下方向はY軸
  • Blender:上下方向はZ軸

といった感じになっていますよね。こうした違いがあることからデフォルト設定では正常なスケール・回転でインポートできないと考えられます。

おわりに

以上、ごく簡単ではありますが「Blenderで作った3DモデルをUnityにインポートしたときにスケールや回転がおかしくなる問題」への対処法をご説明しました。

何も知らない状態だとかなり面食らう問題だと思いますが、今回ご紹介したやり方で簡単に修正できるのでぜひ試してみてください。