なぜズレるのか?
- Unityではオブジェクトの位置や回転を「ローカル座標」と「ワールド座標」の2種類で管理しています。親子階層のあるボーンやメッシュをローカル座標のまま可視化すると、親オブジェクトの回転・スケールが反映されず、Sceneビュー上で実際の見た目と一致しません[2][7]。
- BlenderからUnityにモデルを持ち込む際、「トランスフォームの適用(Apply All Transforms)」が不十分だと、Unityの原点や軸方向(左右・前後)が一致せず、ボーンやメッシュの位置・向きがズレる原因となります[3][8]。
理想の状態は?
- Sceneビューでボーンの「ヘッド」「ボディ」「テール」がアバター骨格に正しく重なり、Blenderで見たままの骨構造をUnity上でも違和感なく把握できる状態が理想です。
- これは、ボーンや頂点の可視化が「ワールド座標」基準で正しく行われていることを意味します。
ズレを防ぐための具体的な対策
ボーンや頂点の可視化はワールド座標で行う
UnityではTransform.positionやTransform.TransformPointを使い、必ずワールド空間に変換してから描画します。ローカル座標のまま描画すると、親の回転やスケールが反映されず、見た目とズレます[2]。Blenderからのエクスポート時は「トランスフォームの適用」を徹底
Blenderでモデルやアーマチュア(ボーン)を選択し、Ctrl+Aで「全トランスフォームの適用(位置・回転・スケール)」を実行してからFBXエクスポートします。これにより、Unityでの原点や軸方向のズレを防げます[3][8]。座標系の意識を持つ
可視化や判定処理を行う際、「この座標はローカルかワールドか?」を常に意識し、必要に応じてTransform.TransformPointやTransform.InverseTransformPointで変換します[2]。Unity標準のボーン可視化ツールを活用
「Animation Rigging」の「Bone Renderer」コンポーネントを使えば、ボーンの階層を指定してSceneビュー上に正確に可視化できます[5][6]。
ポイントまとめ
- ズレの主因は「ローカル/ワールド座標の混同」
- 可視化や判定は「ワールド座標」基準が鉄則
- BlenderとUnity間のトランスフォーム適用・座標系の違いに注意
これらを押さえることで、Unity上でのボーンデバッグ・可視化が大幅に正確かつ快適になります。Blender→Unity間のトランスフォーム適用と、座標系の取り扱いを常に意識しましょう。