【Blender→Unity】FBXのScaleが100になりコライダーが100倍になる不具合と原因

投稿日: 2026年9月19日
対象読者: BlenderからUnityへFBXを持ち込んだら Scale が 100 になっていて、付けたコライダーや子オブジェクトの大きさがおかしい人

不具合内容

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

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

クリックやレイキャストの当たり判定が、モデルと関係ない場所で反応するようになる。

原因

Blender既定の書き出し(スケールを適用=全ローカル)がFBXをcm単位で出すため。Unityはそれを0.01倍し、Blenderはオブジェクトに100倍を掛けて帳尻を合わせているので、Transformに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のプロパティでArmatureのスケールがX・Y・Zとも0.010になっている例

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

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 ウィンドウに入れて選び、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」
)

参考:スケール0.01が残ったまま「すべてFBX」で書き出すと0.01になる

手順2を飛ばし、スケール0.01が残ったまま「すべてFBX」で書き出すと、今度は Armature のスケールが 0.01 になりました。子に置いたコライダーは1/100になり、半径0.3が3mmの当たり判定になります。

Unityで、スケール0.01が残ったモデルを「すべてFBX」で書き出したときのArmature。スケールが0.01になっている

ちなみに、スケール0.01が残ったモデルを既定の「全ローカル」で書き出した場合は、0.01と100が打ち消し合って Armature のスケールが1になりました。「すべてFBX」に変えるなら、手順2の焼き込みとセットで行う必要があります。

参考:Unity側の「単位を変換する」を外すと本当に巨大化する

Unityのインポート設定で「単位を変換する」のチェックを外すと、FBXの「1単位=1cm」が無視されます。

UnityのFBXインポート設定。「単位を変換する」のチェックが外れている

既定で書き出したFBXでこれをやると、Transformの100倍だけが残り、モデルが身長180mになりました。

Unityのシーンビュー。「単位を変換する」をOFFにしたモデルが身長180mの巨大な柱になり、手前の正常なモデル(1.8m)は小さな点にしか見えない

モデルが巨大化してカメラに収まらないときは、Blenderの書き出し設定より先にこのチェックを疑ってください。

原因詳細:FBXがcm単位で書かれ、Unityが100倍で帳尻を合わせている

不具合は次の手順で再現できます。

再現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を Project ウィンドウで選ぶと、Inspector の Model タブにインポート設定が出ます。「単位を変換する」の横の表示を2つのFBXで比べると、違いがはっきりします。

UnityのFBXインポート設定Modelタブの比較。既定で書き出したFBXは「1cm(ファイル)から0.01m(Unity)へ」、「すべてFBX」で書き出したFBXは「1m(ファイル)から1m(Unity)へ」と表示されている

Blenderの既定の書き出しは、FBXに「このファイルの1単位は1cm」と書き込みます(FBX内部の UnitScaleFactor が 1.0)。Unityはそれを読んで全体を0.01倍に縮めます。一方で頂点やボーンの位置はメートルの値のまま書かれているので、そのままでは1/100の大きさになってしまいます。そこでBlenderは、オブジェクトのスケールに100を入れて打ち消しています。

見た目のサイズは「0.01倍 × 100倍=1倍」で合っています。ですが、Armature と Body の Transform には100が残ります。その子に置いたものはすべて100倍になり、コライダーが30mになったのはこのためです。

「すべてFBX」で書き出すと、FBXは「1単位=1m」になり(UnitScaleFactor が 100.0)、Unityは縮小も拡大もしません。

参考:条件別の実測結果

同じリグを条件を変えて書き出し、Unity 6 に既定のインポート設定で取り込んだ結果です。「条件」はBlenderのFBX書き出しの「スケールを適用」、「単位」はUnityのインポート設定に出る変換の表示です。「コライダー」はボーンの子に置いた半径0.3の Sphere Collider の実際の半径です。

条件 単位 Armatureの
スケール
身長 コライダー
全ローカル(既定) 1cm→0.01m 100 1.8m 30m
すべてFBX 1m→1m 1 1.8m 0.3m
FBX単位スケール 1m→1m 1 1.8m 0.3m
0.01残り+
全ローカル
1cm→0.01m 1 1.8m 0.3m
0.01残り+
すべてFBX
1m→1m 0.01 1.8m 3mm
全ローカル+Unityで
「単位を変換する」OFF
変換なし 100 180m 30m

「0.01残り」は、オブジェクトにスケール0.01が残ったまま書き出した場合です。

どの条件でも Armature の回転Xは -89.98(または 89.98)のまま残りました。Blender(Z上)とUnity(Y上)の軸の違いを吸収している回転で、スキンメッシュの表示には影響しません。Blenderの「トランスフォームを適用」をONにすると Body の回転は0になりますが、Armature の回転は残りました。

まとめ

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

ボーンが消える不具合は原因も直し方も別で、【Blender→Unity】FBXでボーンが消える不具合と原因にまとめています。

このパイプラインで作ったモデルは、MediaPipeとUnity WebGLでポーズ推定を動かす仕組みの記事や、写真からポーズを3D化する Pose Mirror 本体で動いています。

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

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

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