BlenderとUnityの座標系の違いを治す
何番煎じが分からない説明になると思いますが、出来るだけシンプル簡単かつピンポイントにお伝えします。
座標系の話
blender座標系とunity座標系は上方向と奥方向が違います。X軸も反転です。
(もっというとblenderはOpenGLとも違います。)
分かりやすく図示すると下記図のようなトランスフォームとなります。
見ての通り、X軸が90度回転したような状態ですね。
上記のようにblenderからモデルをunityにモデルを持ち込むと
見た目上は変わりませんが回転角度は以下のようになります。
RotationのX値が-90度回転していますね。これは非常に厄介です。
これを修正しようとしてRotationXに0を入れると下図のようになります。
90度回転が入り+Z方向に凸がきてますね。
この状態だとUnity上でボーンアニメーションを作る際に非常に厄介で
出力の仕方だとアーマチュアも同様に90度の回転が入ります。
これを修正する方法を次に記載します。
メッシュからアーマチュアのペアレントを外す
まず人型モデルに頂点グループやウェイトを仕込む場合、大多数はペアレントを使って頂点グループをメッシュオブジェクトに登録するかと思います。
しかしペアレントを行うと当然アーマチュアの傘下に
メッシュオブジェクトが追加されてしまいます。
blenderで完結するならばこの方法で問題ありません。ですがunityに持っていく場合、アーマチュアの下にメッシュが入るのは好ましくないです。
なのでメッシュオブジェクトからペアレントを切ります。
ジオメトリタブからアーマチュアとのペアレント関係を削除します。
そうするとアーマチュアとメッシュオブジェクトが同じ階層に戻ります。
全てのオブジェクトを90度回転させる
次にオブジェクトモードでアーマチュアを選択して、原点を基準にX軸で90度回転させます。
次に3Dカーソルは原点位置(x0,y0,z0)に設定してエディットモードで全選択、ピボット設定を3Dカーソルに設定してX軸に-90度回転させます。
これでグローバルX軸に対して90度回転したアーマチュアになります。
これを他の全てのメッシュオブジェクトでも行ってください。
出力設定
メッシュとアーマチュアを選択、ファイル>エクスポート>FBX出力で下図の左のように設定して出力します。
アーマチュアに回転値が入っていなければ作業自体はこれで終わりです。
シェイプキーがある場合の話
シェイプキーがある場合、これは特に顔とか変形パーツがあるときですね。
上記の方法で頂点座標を90度ずらした段階で既存のシェイプが壊れます。
なので壊さずに済むやり方を紹介します。というかなんならメッシュに関しては全てこちらでやってもOKです。
まずオブジェクトモードで右上オプション内の原点にチェックを付けます。
この状態でオブジェクトを90度回転させるとメッシュに変化を加えることなく回転値を変更させることができます。
この作業が終了したらこのチェックボックスは切るようにして下さい。
内容の不足・誤り、工法改善案ありましたらご連絡願います。
この記事が気に入ったらサポートをしてみませんか?