以下の内容はhttps://kafkafinancialgroup.hatenablog.com/entry/2025/05/17/131857より取得しました。


Unityで「ボーン表示がアバターとズレる」問題の原因と解決まとめ

なぜズレるのか?

  • Unityではオブジェクトの位置や回転を「ローカル座標」と「ワールド座標」の2種類で管理しています。親子階層のあるボーンやメッシュをローカル座標のまま可視化すると、親オブジェクトの回転・スケールが反映されず、Sceneビュー上で実際の見た目と一致しません[2][7]。
  • BlenderからUnityにモデルを持ち込む際、「トランスフォームの適用(Apply All Transforms)」が不十分だと、Unityの原点や軸方向(左右・前後)が一致せず、ボーンやメッシュの位置・向きがズレる原因となります[3][8]。

理想の状態は?

  • Sceneビューでボーンの「ヘッド」「ボディ」「テール」がアバター骨格に正しく重なり、Blenderで見たままの骨構造をUnity上でも違和感なく把握できる状態が理想です。
  • これは、ボーンや頂点の可視化が「ワールド座標」基準で正しく行われていることを意味します。

ズレを防ぐための具体的な対策

  • ボーンや頂点の可視化はワールド座標で行う
    UnityではTransform.positionTransform.TransformPointを使い、必ずワールド空間に変換してから描画します。ローカル座標のまま描画すると、親の回転やスケールが反映されず、見た目とズレます[2]。

  • Blenderからのエクスポート時は「トランスフォームの適用」を徹底
    Blenderでモデルやアーマチュア(ボーン)を選択し、Ctrl+Aで「全トランスフォームの適用(位置・回転・スケール)」を実行してからFBXエクスポートします。これにより、Unityでの原点や軸方向のズレを防げます[3][8]。

  • 座標系の意識を持つ
    可視化や判定処理を行う際、「この座標はローカルかワールドか?」を常に意識し、必要に応じてTransform.TransformPointTransform.InverseTransformPointで変換します[2]。

  • Unity標準のボーン可視化ツールを活用
    「Animation Rigging」の「Bone Renderer」コンポーネントを使えば、ボーンの階層を指定してSceneビュー上に正確に可視化できます[5][6]。

ポイントまとめ

  • ズレの主因は「ローカル/ワールド座標の混同」
  • 可視化や判定は「ワールド座標」基準が鉄則
  • BlenderとUnity間のトランスフォーム適用・座標系の違いに注意

これらを押さえることで、Unity上でのボーンデバッグ・可視化が大幅に正確かつ快適になります。Blender→Unity間のトランスフォーム適用と、座標系の取り扱いを常に意識しましょう。




以上の内容はhttps://kafkafinancialgroup.hatenablog.com/entry/2025/05/17/131857より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14