How to Fix “Looks Right in Blender, Wrong in Engine”
by anvilinteractivesolutions in Design > 3D Design
11 Views, 1 Favorites, 0 Comments
How to Fix “Looks Right in Blender, Wrong in Engine”
If your model looks perfect in Blender but imports to Unity/Unreal at the wrong size, rotated weirdly, or with chaotic collisions, you’re probably fighting units, scale, and axes.
This guide shows you exactly how to set things up—first the concepts, then a repeatable workflow you can do manually, and finally how to automate the checks and guards with the Unit & Scale Doctor Blender add-on (so mistakes don’t slip through).
You’ll end this tutorial able to:
- Author assets at real-world size with correct unit scale
- Avoid unapplied/non-uniform/negative scale pitfalls
- Export with correct axes for Unity/Unreal/glTF
- Verify your dimensions visually in Blender before export
- Optionally block bad exports with a one-click guard
Supplies (What You Need)
- Blender 3.0–4.4+ (tested on 3.6 LTS & 4.4)
- Unity 2021+ or Unreal Engine 5+ (for import checks)
- (Optional but recommended) Unit & Scale Doctor add-on (ZIP)
- A test model (e.g., a door that should be ~2 meters tall)
Time: 15–30 minutes
Difficulty: Beginner → Intermediate
Cost: Unit & Scale Doctor $15 (MIT-licensed)
Files / Downloads
- Unit & Scale Doctor (ZIP) – install in Blender Add-ons
- (Optional) Sample “2m Door” .blend/.fbx for sanity checks
Learn the Three Silent Breakers (Units, Scale, Axes)
Why this matters: Every “it’s 10× too big/small in engine” story traces back here.
- Units
- Blender’s Unit Scale (Scene › Units › Unit Scale) defines what 1 BU (Blender Unit) represents.
- 1.0 = meters, 0.01 = centimeters, 0.001 = millimeters.
- Unity assumes meters; Unreal assumes centimeters.
- Scale
- Unapplied (not 1,1,1) breaks colliders and physics.
- Non-uniform (e.g., 1.0, 2.0, 1.0) introduces shear and bad normals if baked late.
- Negative (e.g., −1 on X) mirrors geometry; after applying you must recalculate normals.
- Axes (Up/Forward)
- Unity FBX: Forward −Z, Up Y
- Unreal FBX: Forward X, Up Z
- glTF: meters; exporter handles Y-up
Set Your Target Profile (Meters? Centimeters? Millimeters?)
Decide once, document it, and stick to it:
- Unity / glTF pipelines: Meters (Unit Scale = 1.0)
- Unreal pipelines: Centimeters (Unit Scale = 0.01)
- CAD handoff: Millimeters (Unit Scale = 0.001)
With USD: Select Target Profile (Unity/Unreal/glTF/CAD). The tool adapts rulers, labels, and export guards for you.
Sanity Check With a Known Reference
Create a reference cube. If your project is in meters, make a 2.0 m tall door (or a 2 m cube stack).
If your scene is in centimeters, the same door should read 200 cm high.
With USD: Turn on the Ruler Overlay to see dimensions (AABB/OBB cage + labels) right on the model.
Detect Problems Early
Open each asset and look for:
- Scale ≠ (1,1,1)
- Non-uniform scale
- Negative scale (mirrored)
- Parent objects that are scaled
- Scene unit mismatch vs the target profile
With USD: Click Run Detection. You’ll get a compact summary in the UI and a detailed list in the console:
unapplied, nonuniform, negative, parentScaled, sceneMismatch
Fix Safely (Apply, Don’t Wreck Rigs)
- For static meshes: Apply Scale (Object › Apply › Scale).
- If the object was mirrored (negative): Apply and then Recalculate Normals.
- Skip armatured meshes unless you intend to freeze them—baking transforms on rigs can break skinning.
- Align your Scene Unit Scale to match your target profile.
With USD:
- Align Scene Units (does not rescale vertices).
- Apply Scale on Meshes (safe on statics).
- Fix Negative Scales auto-recalculates normals.
- Skip Armature option protects rigged characters.
See the Truth: AABB Vs OBB + On-Mesh Labels
- AABB (Axis-Aligned Bounding Box): quick, world-aligned bounds.
- OBB (Oriented Bounding Box): “true” extents aligned to the object’s local axes—best for rotated meshes.
- Place labels inside the box and set precision.
- Use standard colors (X red, Y green, Z blue).
- “Draw On Top” helps in dense scenes.
With USD: Toggle Use OBB, Fill Alpha, On Top, Label Precision, Colorize Labels.
Export With Correct Axes
FBX axis presets that just work:
- Unity/glTF: Forward −Z, Up Y
- Unreal: Forward X, Up Z
- glTF exporter typically handles Y-up for you.
With USD: Use Export (Guarded) for FBX/glTF. If violations exist, export is blocked with a clear toast and a JSON-style report in the console.
Verify in Unity
Import your FBX/glTF.
Ensure Import Scale = 1 (avoid mysterious importer scale factors).
A 1 m Unity cube should match your 1 m Blender cube.
Your 2 m door should be ~2 units tall.
Verify in Unreal
Default unit is centimeter (1 Unreal Unit = 1 cm).
Your 2 m door should be 200 UU tall.
If it isn’t, your Blender unit scale or FBX axis preset is wrong.
Automate Checks in CI (Optional But Powerful)
Catch issues before assets merge:
- Run Blender headless in your pipeline.
- Emit a JSON report and exit non-zero on violations.
- Archive the report as a build artifact.
With USD: Headless validation is built-in. Example shape of the report:
Manual Workflow (If You Don’t Want the Add-on)
Set Scene Unit Scale for your target (m/cm/mm).
Check each object’s scale; apply on statics; recalc normals after mirrors.
Ensure parent objects aren’t scaled.
Use the proper FBX axis preset on export.
Keep a reference cube in Unity/Unreal to confirm size.
Maintain a written checklist (see next step).
Printable Checklist (Copy/Paste)
Authoring
- Scene units match target (m/cm/mm)
- Object is real-world size
- Scale applied on statics (1,1,1)
- No negative scale (or normals fixed)
- No non-uniform scale
- Parent not scaled
Export
- FBX axes set (Unity/glTF: −Z/Y; Unreal: X/Z)
- glTF Y-up enabled if applicable
- No violations in fail-on list
Engine Import
- Unity Import Scale = 1
- Unreal grid sanity check (2 m = 200 UU)
Troubleshooting & FAQs
It’s 10× bigger/smaller in engine.
Your Scene Unit Scale didn’t match the engine. Fix units (m vs cm), re-export.
Colliders behave weirdly.
Apply unapplied/non-uniform scale. Regenerate colliders. Check negative scales.
After mirroring, my mesh looks inside-out.
Apply scale, then Recalculate Normals.
Will fixes break rigs?
Don’t apply scale on meshes with Armature unless you intend to freeze them.
Why do Y/Z labels “swap” with Unity?
Unity is Y-up. If your Blender scene is Z-up, profile-aware overlays will remap labels so what you see matches engine expectations.
Why Use Unit & Scale Doctor Here?
You can do all of this manually. USD just makes it faster and repeatable:
- Detects the real problems (unapplied, nonuniform, negative, parentScaled, sceneMismatch)
- Fixes scene units and scale safely (with normals after mirror; skip armatures by default)
- Visualizes truth with AABB/OBB cages, axis lines, and on-mesh labels (colorized, precision, on-top)
- Guards exports (FBX/glTF) with a configurable fail-on list and a JSON-style console report
- Validates headlessly for CI (JSON + exit codes)
If your goal is “no surprises in engine,” automation is the easiest win.
Credits & License
- Tool: Unit & Scale Doctor (MIT)
- Author: Anvil Interactive Solutions
- Works on Windows/macOS/Linux; Blender 3.0–4.4+
What to Upload to Instructables With This Guide
- Screenshots:
- Scene Units panel
- Detection summary
- AABB vs OBB cages with labels
- Export guard toast
- Unity and Unreal size checks
- Optional sample files (2 m door)
- USD add-on ZIP (or link)
- PDF of the Printable Checklist
Final Thought:
Units, scale, and axes don’t shout when they’re wrong—they just ruin your day downstream. Decide your profile, make dimensions visible, and enforce correctness at export. Whether you use the manual workflow or Unit & Scale Doctor, your assets—and your physics—will behave.