見出し画像

BlenderとUnityの座標系の違いを治す

何番煎じが分からない説明になると思いますが、出来るだけシンプル簡単かつピンポイントにお伝えします。

座標系の話

画像18

blender座標系とunity座標系は上方向と奥方向が違います。X軸も反転です。
(もっというとblenderはOpenGLとも違います。)
分かりやすく図示すると下記図のようなトランスフォームとなります。
見ての通り、X軸が90度回転したような状態ですね。

画像2

画像18


画像5

上記のようにblenderからモデルをunityにモデルを持ち込むと
見た目上は変わりませんが回転角度は以下のようになります。

画像4

RotationのX値が-90度回転していますね。これは非常に厄介です。
これを修正しようとしてRotationXに0を入れると下図のようになります。

画像6

90度回転が入り+Z方向に凸がきてますね。
この状態だとUnity上でボーンアニメーションを作る際に非常に厄介で
出力の仕方だとアーマチュアも同様に90度の回転が入ります。
これを修正する方法を次に記載します。

メッシュからアーマチュアのペアレントを外す

まず人型モデルに頂点グループやウェイトを仕込む場合、大多数はペアレントを使って頂点グループをメッシュオブジェクトに登録するかと思います。

画像7

しかしペアレントを行うと当然アーマチュアの傘下に
メッシュオブジェクトが追加されてしまいます。

画像8

blenderで完結するならばこの方法で問題ありません。ですがunityに持っていく場合、アーマチュアの下にメッシュが入るのは好ましくないです。

なのでメッシュオブジェクトからペアレントを切ります。
ジオメトリタブからアーマチュアとのペアレント関係を削除します。

画像9

画像10

そうするとアーマチュアとメッシュオブジェクトが同じ階層に戻ります。

全てのオブジェクトを90度回転させる

次にオブジェクトモードでアーマチュアを選択して、原点を基準にX軸で90度回転させます。

画像11

次に3Dカーソルは原点位置(x0,y0,z0)に設定してエディットモードで全選択、ピボット設定を3Dカーソルに設定してX軸に-90度回転させます。

画像12

これでグローバルX軸に対して90度回転したアーマチュアになります。
これを他の全てのメッシュオブジェクトでも行ってください。

画像13

出力設定

メッシュとアーマチュアを選択、ファイル>エクスポート>FBX出力で下図の左のように設定して出力します。

画像14

画像15

アーマチュアに回転値が入っていなければ作業自体はこれで終わりです。

シェイプキーがある場合の話

シェイプキーがある場合、これは特に顔とか変形パーツがあるときですね。
上記の方法で頂点座標を90度ずらした段階で既存のシェイプが壊れます。
なので壊さずに済むやり方を紹介します。というかなんならメッシュに関しては全てこちらでやってもOKです。

まずオブジェクトモードで右上オプション内の原点にチェックを付けます。

画像17

この状態でオブジェクトを90度回転させるとメッシュに変化を加えることなく回転値を変更させることができます。

画像16

画像18

この作業が終了したらこのチェックボックスは切るようにして下さい。

内容の不足・誤り、工法改善案ありましたらご連絡願います。

この記事が気に入ったらサポートをしてみませんか?