Skip to content
CodeAndBuild LogoCodeAndBuild

Game Design

Export a Blender Scene to Unity Without Broken Scale

Set Blender units, apply scale, and export FBX so a 2 meter doorway stays a 2 meter doorway in Unity.

CodeAndBuild Team8 min read
  • Blender
  • Unity
  • FBX
  • 3D
On this page
  1. Set units before you model the second wall
  2. An FBX preset you can repeat
  3. What to check on the Unity importer
  4. Colliders are not the mesh

A doorway that was two meters in Blender and twenty centimeters in Unity is not a Unity bug. It is a unit and scale problem you exported on purpose without noticing. Blender's default cube is two meters on a side if your scene units are metric, and Unity treats one unit as one meter. The export step can rescale, rotate, and bake those choices into the file. If you fix the size by dragging the transform in Unity, the next export overwrites the fix.

Do the correction in Blender, apply it, and export with a written preset. The goal is boring: a wall that is 4 meters long in Blender is 4 units long in Unity, standing up, with the pivot where the gameplay code expects it. Lights and cameras stay behind unless you have a reason. Materials will not match exactly. Scale should.

Set units before you model the second wall

In Scene Properties, set Unit System to Metric and Unit Scale to 1. Model to real sizes. A character that should be 1.8 meters tall is 1.8 meters in the viewport, not 1.8 centimeters that you plan to scale later. Later never comes. If you already modeled at the wrong size, scale the empty that parents the set, then apply that scale. Do not leave a scale of 100 on the object and hope the exporter agrees with you.

  • Apply location, rotation, and scale on the mesh with Ctrl+A before export.
  • Put the object's origin where Unity should pivot: the floor center for a prop, the hinge for a door.
  • Freeze a test cube that is exactly 1 meter and export it with every batch. If the cube is wrong, the building is wrong.
  • Name objects in a way Unity can live with. Spaces and duplicate names become ugly prefab names.

An FBX preset you can repeat

FBX is the path most Unity projects still use for environment meshes. In the export dialog, set Forward to -Z Forward and Up to Y Up so the mesh stands up in Unity's coordinate system. Apply Scalings as FBX All. Selected Objects only, so a hidden camera does not ride along. Mesh smoothing should be faces or normals you already set, not a surprise.

export-preset.txttext
Format: FBX
Include: Selected Objects
Transform: -Z Forward, Y Up
Apply Scalings: FBX All
Apply Unit: on
Geometry: apply modifiers, tangent space on
Armature: only if this object is a character

glTF is a reasonable alternative when you want materials to travel and you are not using a complex armature from an older pipeline. Pick one format per project. Mixing FBX for the level and glTF for props is fine. Mixing two scale conventions is not. Write the choice in the README next to the preset.

What to check on the Unity importer

Select the imported model. Scale Factor should be 1 if you exported in meters. Convert Units can double-convert a file you already converted. If the test cube is 100 times too big, you are converting twice. If it is on its side, the forward axis was wrong and you should re-export, not rotate the prefab and call it done. Rotation on the prefab hides the next artist's export.

  1. 01

    Drop the test cube in an empty scene

    Compare it to a Unity cube, which is 1 meter. They should match. This takes ten seconds and saves a day.

  2. 02

    Drop the doorway

    A default character controller is about 2 meters tall. The character should walk through without a scale hack on either object.

  3. 03

    Check the pivot

    Rotate the door in play mode. If it orbits the room, the origin is still at the world center. Fix it in Blender.

  4. 04

    Save the importer settings

    Use a preset on the model importer so the next FBX does not reset Scale Factor.

Colliders are not the mesh

A beautiful wall with a mesh collider made of every bevel is how a WebGL build stutters. Export a simple collision mesh, or block the doorway with box colliders in Unity. Name the collision object with a prefix such as UCX_ so a person can find it. Do not parent gameplay logic to a mesh you will re-export every afternoon. Parent the mesh under an empty that owns the scripts.

Normals and smoothing come next, after scale is boring. If the silhouette and the size are right, a smoothing group is a small fix. If the size is wrong, no material will save the screenshot. Keep the one-meter cube in the file. It is the cheapest test in the pipeline.

Write the preset into the project the day it works, including a screenshot of the test cube next to Unity's default cube. The next person who exports, including you in three weeks, will otherwise tick Apply Scalings the other way and ship a level you can only enter by jumping. If a marketplace asset arrives in a different unit, do not silently scale your whole scene to match it. Normalize that asset on import and leave the project at one unit per meter.

More guides