← Blog

Blender to Unreal scale: 2 metres becomes 200, and that is correct

Half of the "scale bugs" reported between Blender and Unreal are not bugs. The other half are, and they cost a delivery. Telling them apart takes one measurement.

The two unit systems

Blender works in metres by default. Unreal works in centimetres. A 2 m cube that arrives as a 200 unit cube has not been scaled: it has been converted, correctly.

We measured exactly that on a 2 m cube exported from Blender 5.2 into Unreal Engine 5.8: bounds of 200 cm, with a floating point noise of about 2e-5 cm. Two hundredths of a micrometre. That noise is normal and it will never be zero.

Why a tolerance of zero is a trap

If you compare source and target with an exact equality, you will get a failure on every single asset, for ever, because floating point conversion does not round trip exactly.

The same lesson shows up elsewhere. In Godot, a normal that should be exactly (-1, 0, 0) comes back as (-1.0, 0.00007, -0.00006): the engine compresses normals, and the compression is lossy. Compare with zero tolerance and you have just built a false positive generator.

A useful test states its tolerance, and the tolerance is chosen to be larger than the engine noise and smaller than anything a human would notice.

What a real scale problem looks like

Real scale problems are not subtle once you measure them:

  • A factor of 100: your asset is a hundred times too big or too small, because a unit scale was applied twice, or not at all.
  • Unapplied object scale: the object carries a non uniform scale in Blender that the exporter bakes, or does not, depending on settings.
  • A factor of 2.54 or 30.48: an imperial unit crept into the scene somewhere.

Note the shape of that list: these are ratios, and ratios are easy to detect automatically. That is what makes scale one of the most reliable checks in a delivery report.

How to check it by hand

Put a reference object of known size in your scene, import it with the asset, and measure it in the engine. It works, it is tedious, and it only tells you about the one asset you checked.

How FixMyMesh detects it

FixMyMesh measures the bounds of the imported asset in the real engine and compares them to the Blender source, converting units on purpose and reporting the ratio. A correct conversion passes quietly. A factor of 100 is reported as a factor of 100, not as "geometry mismatch".

The tolerance is explicit and documented, which is the only way a PASS means anything.

The fix

Apply object scale in Blender before export (Ctrl A, Apply Scale), check the unit scale of the scene, and leave the exporter unit conversion at its default unless you know exactly why you are changing it. Then retest and read the ratio.

Test it on your own asset

FixMyMesh runs the same measurement on your files, in the engine installed on your machine. 3 full tests, free.