【Blender→Unity】FBXモデルのコライダーが巨大化する不具合と解決方法
投稿日: 2026年9月19日
対象読者: BlenderからUnityへFBXをインポートした後、コライダーや子オブジェクトが意図せず巨大になる人
不具合内容
作成したモデルをBlenderからFBX形式で書き出し、Unityに取り込むと Armature の Scale が 100 になっている。モデルの見た目の大きさは正しいが、ボーンに当たり判定(コライダー)を付けると100倍の大きさになる。
コライダーは衝突判定の範囲であり、コライダーが大きいとクリックやレイキャストの当たり判定が、モデルと関係ない場所で反応するようになる。
原因(一言でいうと)
FBXファイル内の設定でScale値が100倍になっていたため、Unityでコライダーを入れた時に意図せぬ巨大化が起こった。
原因(詳細)
Blender既定の書き出しでは、FBXが「1単位=1cm」と宣言される一方、頂点座標は「1単位=1m」の数値のまま出力される。この100倍のずれを埋めるため、BlenderはFBX内のTransform Scaleに100を入れて辻褄を合わせている。
一方Unity側は、FBXの「1単位=1cm」という宣言に従って、メッシュやボーンの座標を0.01倍して取り込む(インポート設定に「1cm(ファイル)から0.01m(Unity)へ」と表示される)。この0.01倍と、Blenderが入れた100倍のScaleが打ち消し合うため、見た目のサイズは正しくなる。
ただしTransform Scaleに入った100はそのまま残るため、後から追加したコライダーや子オブジェクトが100倍になり、意図せぬ巨大化が起こった。
解決方法
- Blenderで Ctrl+A →「スケール」でスケールを1に焼き込んでから、FBX書き出しの「スケールを適用」を 「すべてFBX」 にする
- Unityに取り込んだら、インポート設定の「単位を変換する」の横が「1m(ファイル)から1m(Unity)へ」になっているかを確かめる
動作環境
| 項目 | バージョン |
|---|---|
| Blender | 5.0.1(日本語UI) |
| Unity | 6000.0.58f2 (Unity 6・日本語UI) |
| 検証モデル | 高さ1.8mの円柱 +ボーン3本(Bone0〜2) 自動ウェイトでスキン済み |
解決方法の詳細:Scaleを1にして書き出す手順
ここからは、Unityに取り込んだときに Scale を1にした状態でFBXを書き出す手順を、実際の画面で順に説明します。 またそのあとに、今回の不具合内容の再現手順も載せておきます。
手順1:オブジェクトのスケールが1か確かめる
アーマチュア(とメッシュ)を選び、右下のプロパティで、左のアイコン列の「オブジェクトプロパティ」(オレンジの四角)を開きます。「トランスフォーム」のスケールが 1.000 以外(0.010 など)なら、手順2で焼き込みます。
手順2:Ctrl+A →「スケール」でスケールを焼き込む
まず、アウトライナーでアーマチュアとメッシュを両方選択します(片方だけだと、選んだほうにしか焼き込まれません)。
その状態で3Dビューにマウスを置いて Ctrl+A を押し、「適用」メニューの「スケール」を選びます。スケールが1.000になり、見た目の大きさは変わりません。手順1でスケールがすでに1なら、この手順は飛ばして構いません。
手順3:ファイル → エクスポート → FBX を開く
画面左上の「ファイル」メニューから「エクスポート」にカーソルを合わせ、「FBX (.fbx)」を選びます。
手順4:「スケールを適用」を「すべてFBX」にする
書き出し画面の右側、「トランスフォーム」パネルの「スケールを適用」は既定で「全ローカル」になっています。プルダウンを開いて「すべてFBX」を選びます。
「FBX単位スケール」を選んでも、今回の検証では同じ結果でした。
手順5:「FBXをエクスポート」を押す
画面下の欄にファイル名を入れ、右下の「FBXをエクスポート」を押します。
確認1:Unityのインポート設定が「1m(ファイル)から1m(Unity)へ」になっている
書き出したFBXをUnityの Project ウィンドウに入れ、そのFBXをクリックして選びます。
選ぶと Inspector に Model タブが出ます。「単位を変換する」の横が「1m(ファイル)から1m(Unity)へ」になっていれば、単位の変換は起きていません。
確認2:Armature の Scale が1になっている
FBXをシーンに置いて Armature を選び、Transform のスケールが1になっていれば成功です。
ボーンの子に半径0.3の Sphere Collider を付けても、意図どおり半径30cmに収まります。
参考:スクリプトで書き出す場合
スクリプトで書き出すなら、手順2を transform_apply、手順4を apply_scale_options で指定します。
import bpy
armature = bpy.data.objects["Armature"]
body = bpy.data.objects["Body"]
bpy.ops.object.select_all(action='DESELECT')
armature.select_set(True)
body.select_set(True)
bpy.context.view_layer.objects.active = armature
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True) # 手順2
bpy.ops.export_scene.fbx( # 手順3〜5
filepath="model.fbx",
use_selection=True,
apply_scale_options='FBX_SCALE_ALL', # 手順4:「スケールを適用:すべてFBX」
)
不具合の再現手順
不具合の再現手順を以下に示します。
再現1:「スケールを適用」を既定の「全ローカル」のまま書き出す
「ファイル → エクスポート → FBX」を開き、「スケールを適用」を変えずに「全ローカル」のまま書き出します。
再現2:Unityに取り込み、Armature を選ぶ
書き出したFBXをUnityのシーンに置き、Armature を選ぶと、Transform のスケールが X・Y・Z とも 100 になっています。モデルの見た目は正しく1.8mで、巨大にはなっていません。
再現3:ボーンの子にコライダーを付ける
当たり判定のために Bone1 の子に Sphere Collider を置き、半径を 0.3(30cmのつもり)にします。
シーンで見ると、当たり判定は半径30mの球になっています。モデル本体は球の中心にある小さな点です。
まとめ
- Scale が 100 になるのは、既定の書き出しがFBXをcm単位で出し、Unityの0.01倍をオブジェクトの100倍で打ち消しているから
- 見た目の大きさは正しいが、ボーンの子に付けたコライダーや子オブジェクトが100倍になる
- Ctrl+A でスケールを1に焼き込み、「スケールを適用:すべてFBX」で書き出せば、Unity上のスケールは1になる
- 取り込んだら、インポート設定の「1m(ファイル)から1m(Unity)へ」の表示を確かめる。「単位を変換する」はONのままにする















