Imported models from Blender 2.77 are scaled x100 in Unity 5.3

Using a completely new scene with the standard 2x2x2 cube. When I choose “Selected objects” .fbx export from Blender and open the model in Unity the X,Y,Z values are each scaled by a hundred. But the cube appears in Unity as if it was 2x2x2m. Trying to rescale in Unity from 100—>1 ends up with a ridiculously small cube.

How do I export a model from Blender to Unity and keep the scaling right?

This was bugging me for a while. I eventually found an option in the export options that solved the problem for me.

After disabling this little button above, I no longer see the 100x scaled transforms and I can export & import at scales of 1.


Update (May 2018): This option appears to be removed in the current version of Blender (v2.79). Instead you should check the box for “EXPERIMENTAL! Apply Transform”. Unfortunately this only works for one generation in the hierarchy, i.e. don’t expect grandchild transforms to work when imported to Unity.
113568-blenderapplytransforms.png

This is how I import models from Blender to Unity:

Export from Blender

  1. Select all models (also the rig if it is there) and make sure they are in object mode.
  2. Rotate all objects: X axis -90deg. Apply the rotations.
  3. Rotate all objects: X axis 90deg. DO NOT apply rotation.
  4. Export > FBX and set the following:
  5. Scale: 1, the button next to it should be active.
  6. Apply Scale: FBX Units Scale
  7. Uncheck !Experimental! Apply Transform (It does not work properly)

Import in Unity

Make sure the “Preserve Hierarchy” is checked in the Model tab.

Apply Scale: FBX All

From my own experimentation, checking the !EXPERIMENTAL! Apply Transform button will work most of the time, however, if you have more then one layer of child objects (one child parented to another child that itself is parented to the root object), the rotation of all the child objects will be horribly maimed.

To solve this without checking Apply Transform, instead ensure that the scale button is unchecked, and the Apply Scalings drop down is set to FBX All.

I’m not actually sure if there’s a way to do it with the import settings, Unity automatically changes the scale to compensate as you’ve seen. If you need to get rid of it or it just bugs you there’s always the option of blowing it up in blender by 100x before export.

I’ve tried all of these approaches and my model still comes in scaled incorrectly. This is a problem because some assets need to be able to change scale at runtime, and the object already having a scale of 100, 100, 100 makes it difficult and inefficient to work with. Is there really no way to import something from Blender without it being autoscaled up by 100? I even tried scaling it up in the Blender viewport by 100 hoping that Unity would catch on, and it came into unity at 10000, 10000, 10000. What am I doing wrong?

Same problem in Blender v2.79b, my solution is to just export with scale = 0.01

116291-blender-scale.png

Apply Transform reverts the Unity rotation fix. (Select all objects, rotate with 90 degree on x axis, apply rotation, rotate back and do not apply rotation). The rotation fix is for me more important than the scaling fix.

However, I found a solution, use the settings I made on the image. Root has scaling 1, children have a scaling 1. Finally, rotation and scaling fixed, tested with Unity 2018.3.

130247-fixscaling.jpg

If you want blender units to match exactly with your unity units there are a few things you need to do. In blender follow the scale value not the dimensions value. If i have a plane in blender that is 10 x 10 (in the scale value not the dimensions value) then I export it out in FBX changing the exporter scale factor to 0.01. When I bring it into unity in the import options I change unity scale factor to 0.5 this way my units match unity units no problem.

This is how I do it and I hope it helps.

I figured out what is happening. In Unity there are two different kinds of scales that change when importing models from Blender. Selecting the model in the asset folder, “File Scale” is found under Import Settings in the inspector and is related to the export FBX scale settings in Blender. “Scale” is found under the “Imported Object” section and is a way of defining the default scaling in Unity. File Scale is set and cannot be changed but Scale is editable for individual instances or prefabs of the model.

The problem is solved by exporting at scale 100 in Blender. The File Scale is matched and becomes a perfect 1.00 in Unity. The Scale becomes a ridiculously huge number, but it can be adjusted to 1,1,1 so that is not a problem.

Export options

Did you try enabling the option next to the scale that takes into account the Blender unitys (see attached image). Also try enabling the “!Experimental! Apply Transform” option. That works for me.

I’ve found that the “EXPERIMENTAL! Apply Transform” option resolves rotational issues but not scaling ones. The only solution that works for me for animated meshes that have an armature is to export with Scale: 0.01 and import with Use File Scale: False in the model’s import settings in Unity.

116602-blenderexportfbxsettings.png

116603-unityfbximportsettings.png