今回は、Blenderで制作したモデルをFBXとして出力してUnityにインポートする際の、特に座標系の重要な設定について書きます。
UnityとBlenderを使う上で注意すべきことは、Unityは左手系であり、Blenderは右手系であるということです。これは座標系の違いですが、Blenderでは更に画面上はZ軸が上方向でY軸が奥方向となっているので、またここで混乱が生じます。
この混乱において出力されたモデルは、Blender上では立っていたのに、Unityでは寝そべったりするものだから、困惑とストレスは限界に・・・。
UnityのためにBlenderを使う上で、ここは一番のストレスの元だと思っています。Blenderで楽しくモデリングして、完成したものをそのままUnityで使いたい、動かしたいだけなのです。よって、本記事では出来るかぎり簡単な手順を確立したいと思います。
なお、Blenderファイルを直接Unityに取り込むこともできますが、今回の記事ではそのケースについては触れないのでご了承ください。
画面に見たままを設定する
Blender上で3Dモデルが完成し、Unityへ出力する準備が整いました。まずはCtrl + AでApplyを実行し、Transformを初期化します。そして、対象オブジェクトを選択した状態で、File > ExportメニューからFBXを選択すると出力ダイアログが出て、右側に設定メニュー群が表示されます。
今回は選択したオブジェクトを出力したいのでLimit toはSelected Objectsを選択します。Object typesは"Mesh"を選択。ボーンがあるモデルの場合は、Armatureも複数選択します。Apply Scalingsは"FBX Units Scale"にすると、Unity上で変換やスケール調整をする必要がなくなります。
さて問題の軸の選択です。Blenderは右手系ですが、実際の画面上ではZ軸が上方向にに向けられています。例えば、画面上でモデルを立たせると、座標軸の正しい向きを考えるとモデルは実は寝そべったような向きになっている、ということになります。
ただでさえ右手系ということに混乱しているのに、この座標軸の関係性は考えれば考えるほどよく分からなくなってきます。
なので単純に考えます!画面に映ったまま、見たままの状態でそのモデルはどこを上としているか、前方にしているかを見ることで、それを設定していきます。
そのモデルの頭はどの軸を指していますか?
そのモデルはどっちを向いていますか?
よって、Forwardは-Y Forward、UpはZ Upとなります。Apply UnitとUse Space Transformationはチェックを入れたままにします。モデルに埋め込まれるアニメーションが無ければ、Bake Animationのチェックは外しましょう。GeometryやArmature項目は必要であれば各種設定します。
というわけで、Blender上で見たままの状態をそのまま出力する、という方針の下で設定をしました。とにかくBlender上での状態をそのままに、シンプルに設定するということです。最後に出力先のパスを選択とファイル名の入力を行い、Exportを押します。
Unity上でのインポート設定
出力したfbxファイルをUnityにインポートして、対象のモデルを選択してインスペクターを開きます。
それでは第二段階目のインポート設定へと移ります。マテリアル、アニメーション、ボーンについては省略。
インポート設定の一番左のタブ、Modelを開きます。今回の記事におけるキーとなる設定が、上から二番目のBake Axis Conversionです。
これにチェックを入れると、Unityとは違う座標系を持つソフト、つまりこの場合はBlenderで作られたモデルの座標系を変換してくれます。チェックを入れてApplyで変更を適用すると、プロジェクト・ビュー上のモデルの向きが変わるはずです。
これで、そのモデルをシーンビューにドラッグしてヒエラルキーに追加すると、冒頭の画像のようにBlenderで見たままの姿で表示されているのが確認できます。
今回説明した手順を再確認!
・Blenderで『見たまま』モデル基準から上方向、前方向を設定する。
Forward : -Y Forward
Up : Z Up
・Unityにインポートし、インスペクター上のModelタブでBake Axis Conversionにチェックをいれ適用する。
まとめ
というわけで、出来る限りシンプルに、間違えにくい、2つの手順をまとめてみました。何度やっても、ちょっと忘れると直ぐに混乱してしまうポイントなので、今回の記事で出力の手順を確立できたらな、と思います。