【Blender→Unity】FBXモデルのコライダーが巨大化する不具合と解決方法

投稿日: 2026年9月19日
対象読者: BlenderからUnityへFBXをインポートした後、コライダーや子オブジェクトが意図せず巨大になる人

不具合内容

作成したモデルをBlenderからFBX形式で書き出し、Unityに取り込むと Armature の Scale が 100 になっている。モデルの見た目の大きさは正しいが、ボーンに当たり判定(コライダー)を付けると100倍の大きさになる。

Unityのシーンビューの比較。ボーンの子に半径0.3のコライダーを付けると、正常なモデルでは30cmの球になるが、Scaleが100になったモデルでは身長1.8mのモデルを包む半径30mの巨大な球になる

コライダーは衝突判定の範囲であり、コライダーが大きいとクリックやレイキャストの当たり判定が、モデルと関係ない場所で反応するようになる。

原因(一言でいうと)

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で焼き込みます。

手順1。Blenderのプロパティ。左のアイコン列のオブジェクトプロパティを開き、トランスフォームのスケールがX・Y・Zとも0.010になっている

手順2:Ctrl+A →「スケール」でスケールを焼き込む

まず、アウトライナーでアーマチュアとメッシュを両方選択します(片方だけだと、選んだほうにしか焼き込まれません)。

手順2の準備。アウトライナーでArmatureとBodyの2行が選択され、3Dビューでも両方がオレンジの輪郭で選択されている

その状態で3Dビューにマウスを置いて Ctrl+A を押し、「適用」メニューの「スケール」を選びます。スケールが1.000になり、見た目の大きさは変わりません。手順1でスケールがすでに1なら、この手順は飛ばして構いません。

手順2。Blenderの3DビューでCtrl+Aを押して開いた「適用」メニュー。「スケール」の項目を選んでいる

手順3:ファイル → エクスポート → FBX を開く

画面左上の「ファイル」メニューから「エクスポート」にカーソルを合わせ、「FBX (.fbx)」を選びます。

手順3。ファイルメニューのエクスポートを開き、サブメニューのFBX (.fbx)を選んでいる

手順4:「スケールを適用」を「すべてFBX」にする

書き出し画面の右側、「トランスフォーム」パネルの「スケールを適用」は既定で「全ローカル」になっています。プルダウンを開いて「すべてFBX」を選びます。

手順4。FBXエクスポート画面のトランスフォームパネル。「スケールを適用」のプルダウンを開き、全ローカル・FBX単位スケール・FBXカスタムスケール・すべてFBXのうち「すべてFBX」を選ぶ

手順4の結果。「スケールを適用」が「すべてFBX」に設定された状態

「FBX単位スケール」を選んでも、今回の検証では同じ結果でした。

手順5:「FBXをエクスポート」を押す

画面下の欄にファイル名を入れ、右下の「FBXをエクスポート」を押します。

手順5。書き出し画面の下部。ファイル名の欄にmodel.fbxと入力され、右の「FBXをエクスポート」ボタンを押す

確認1:Unityのインポート設定が「1m(ファイル)から1m(Unity)へ」になっている

書き出したFBXをUnityの Project ウィンドウに入れ、そのFBXをクリックして選びます。

確認1の準備。UnityのProjectウィンドウでAssets/Fbxフォルダの中のFBXを選択し、下のバーに選択中のパスが出ている

選ぶと Inspector に Model タブが出ます。「単位を変換する」の横が「1m(ファイル)から1m(Unity)へ」になっていれば、単位の変換は起きていません。

確認1。UnityのFBXインポート設定Modelタブ。「単位を変換する」の横に「1m(ファイル)から1m(Unity)へ」と表示されている

確認2:Armature の Scale が1になっている

FBXをシーンに置いて Armature を選び、Transform のスケールが1になっていれば成功です。

確認2。Unityで「すべてFBX」で書き出したFBXのArmatureを選んだInspector。スケールがX・Y・Zとも1になっている

ボーンの子に半径0.3の Sphere Collider を付けても、意図どおり半径30cmに収まります。

確認2。「すべてFBX」で書き出したモデルでは、半径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」を開き、「スケールを適用」を変えずに「全ローカル」のまま書き出します。

再現1。FBXエクスポート画面のトランスフォームパネル。「スケールを適用」が既定の「全ローカル」になっている

再現2:Unityに取り込み、Armature を選ぶ

書き出したFBXをUnityのシーンに置き、Armature を選ぶと、Transform のスケールが X・Y・Z とも 100 になっています。モデルの見た目は正しく1.8mで、巨大にはなっていません。

再現2。UnityのInspector。既定設定で書き出したFBXのArmatureのTransformで、スケールがX・Y・Zとも100、回転Xが-89.98になっている

再現3:ボーンの子にコライダーを付ける

当たり判定のために Bone1 の子に Sphere Collider を置き、半径を 0.3(30cmのつもり)にします。

再現3。Sphere ColliderのInspector。半径の欄に0.3と入力されている

シーンで見ると、当たり判定は半径30mの球になっています。モデル本体は球の中心にある小さな点です。

再現3の結果。Unityのシーンビュー。半径0.3のはずのSphere Colliderが、身長1.8mのモデルを包む半径30mの巨大な球になっている

まとめ

  • Scale が 100 になるのは、既定の書き出しがFBXをcm単位で出し、Unityの0.01倍をオブジェクトの100倍で打ち消しているから
  • 見た目の大きさは正しいが、ボーンの子に付けたコライダーや子オブジェクトが100倍になる
  • Ctrl+A でスケールを1に焼き込み、「スケールを適用:すべてFBX」で書き出せば、Unity上のスケールは1になる
  • 取り込んだら、インポート設定の「1m(ファイル)から1m(Unity)へ」の表示を確かめる。「単位を変換する」はONのままにする

このFBX設定で読み込んだモデルが動いています。

Blender→Unityの設定が正しいかは、実物を回して確かめるのが一番早いです。

▶ このモデルが動いている3Dデッサン人形を開く