Every 3D artist who's moved from Blender to Unreal Engine 5 has felt it — the pivot of dread when the mesh lands in the engine looking nothing like what you built. Wrong scale, missing materials, broken normals. Here's how to build a bulletproof Blender-to-UE5 pipeline so your assets arrive game-ready, every time.
Setting Up Blender for UE5 Export
Unreal Engine 5 works in centimeters; Blender defaults to meters. This single mismatch causes the majority of scale issues. Before you model a single vertex, configure your scene:
In Blender, go to Scene Properties → Units and set:
- Unit System: Metric
- Unit Scale: 0.01
- Length: Centimeters
Alternatively, model at normal Blender scale and apply a 100x scale multiplier on FBX export — but the scene-unit method is cleaner and prevents surprises.
For the origin point, always place your mesh with the pivot at the base center (bottom of the bounding box, centered on XY). UE5 uses this as the actor's placement origin in the world. A misplaced origin means every instance you drag into a level will float or sink.
Finally, apply all transforms before export: Object → Apply → All Transforms (Ctrl+A). Unapplied scale and rotation are the second-most-common source of import headaches.
FBX Export Settings That Actually Work
Blender's FBX exporter has a lot of knobs. Most tutorials leave them on defaults, which is fine for casual use — but production pipelines need precision.
Open File → Export → FBX (.fbx) and set:
| Setting | Value | Why |
|---|---|---|
| Scale | 1.0 | Let the scene unit handle scale |
| Apply Scalings | FBX All | Bakes transforms cleanly |
| Forward | -Z Forward | Matches UE5 coordinate system |
| Up | Y Up | UE5 is Y-up |
| Apply Unit | ✅ Enabled | Converts to cm |
| Smoothing | Face or Edge | Avoid normals-only for hard-surface |
| Tangent Space | ✅ Enabled | Required for normal maps |
| Only Deform Bones | ✅ (for characters) | Strips helper/control bones |
For static meshes (no rig), uncheck Armature and Animation — it keeps the file small and import fast.
```python
# Blender Python: batch-export selected objects as individual FBX files
import bpy, os
export_dir = "/path/to/export/"
for obj in bpy.context.selected_objects:
if obj.type == 'MESH':
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
filepath = os.path.join(export_dir, obj.name + ".fbx")
bpy.ops.export_scene.fbx(
filepath=filepath,
use_selection=True,
apply_scale_options='FBX_SCALE_ALL',
axis_forward='-Z',
axis_up='Y',
bake_space_transform=True,
mesh_smooth_type='FACE',
use_tspace=True
)
print(f"Exported: {filepath}")
```
This script exports each selected mesh as its own FBX — useful when building a library of props.
![]()
For Blender 5's updated glTF export path (GLB instead of FBX), see Blender 5 glTF export settings for game-ready GLB — the settings differ enough to be worth a separate read.
Importing into UE5: Import Dialog Demystified
Drag the FBX into the Content Browser and the import dialog opens. The defaults are not always your friend.
Static Mesh imports:
- Generate Lightmap UVs: ✅ Yes — unless you've manually authored UV channel 1 in Blender
- Combine Meshes: ❌ No — keep objects separate unless you're intentionally merging
- Import Materials: ✅ Yes — but expect to rebuild them in UE5
- Import Textures: ✅ Yes — only if textures are packed in the FBX
For Nanite meshes, enable Nanite *after* import: open the Static Mesh editor, go to Details → Nanite Settings → Enable Nanite Support. Do NOT enable Nanite on assets that will use LODs manually — the two systems don't mix well. Nanite excels on hero props, environmental geometry, and landscape rocks with dense poly counts (50k+). For small gameplay props under 5k tris, standard meshes with LODs are still faster.
Collision setup: UE5 can auto-generate collision from the mesh, but it's rarely ideal for complex shapes. The cleanest approach is to model a simplified UCX (Unreal Collision) mesh in Blender and name it `UCX_MeshName_01`. Include it in the FBX export and UE5 will automatically assign it as the mesh's collision body.
Materials: Bridging Blender PBR to UE5
Blender's Principled BSDF maps almost directly to UE5's M_Standard material inputs:
| Blender | UE5 |
|---|---|
| Base Color | Base Color |
| Roughness | Roughness |
| Metallic | Metallic |
| Normal Map | Normal (set to Normal map sampler) |
| Alpha / Transmission | Opacity / Blend Mode |
The snag is that UE5 expects textures in specific formats. For best results:
- Albedo/Diffuse: sRGB color space (default)
- Roughness, Metallic, AO: Linear color space — in UE5 texture settings, uncheck sRGB
- Normal maps: TC Normalmap compression, uncheck sRGB
For packed ORM textures (Occlusion-Roughness-Metallic in RGB channels — standard for UE5), set up a single texture sample node and split the RGB channels with Append nodes. This cuts texture memory by ~3x vs. three separate maps.
If you're managing a large asset library, consider uploading your source FBX and texture sets to the BitSoul marketplace before import — it gives you version-controlled cloud storage for source files that your whole team can pull from.
![]()
Character Rigs and Skeletal Meshes
Exporting rigged characters adds complexity. A few rules that prevent 90% of failures:
- Use a single root bone — name it `root`, positioned at world origin. UE5's Mecanim-equivalent (IK Rig) expects this.
- Freeze all bone rolls in Blender before export: in Edit Mode, select all bones, Armature → Recalculate Roll → Global -Z Axis.
- Export animations as separate FBX files from the base mesh. One FBX per animation clip is easier to manage and re-import.
- Set the frame range per animation clip in the NLA editor — bake actions before export with NLA → Bake Action.
For the import in UE5, import the skeletal mesh first (no animation), then import each animation FBX pointing to the existing skeleton. This keeps the skeleton shared across all animation assets — changes to the rig only need to be updated once.
Quick Pre-Export Checklist
- [ ] Scene units set to metric / centimeters
- [ ] All transforms applied (Ctrl+A → All Transforms)
- [ ] Pivot at base center
- [ ] No n-gons on hard-surface meshes (triangulate modifier or manual quad cleanup)
- [ ] UV Channel 0: texture UVs, no overlaps
- [ ] UV Channel 1: lightmap UVs, no overlaps, margin ≥ 2px per 1024px atlas
- [ ] Materials named clearly (will carry over to UE5)
- [ ] FBX export axis: -Z Forward, Y Up, Apply Scalings: FBX All
- [ ] UCX_ collision mesh included if custom collision needed
- [ ] Textures exported as PNG (lossless) before converting in UE5
A consistent export checklist eliminates the majority of "why does it look broken in engine" debugging sessions. Treat it as part of your asset finalization step, not an afterthought.
Wrapping Up
The Blender-to-UE5 pipeline has more friction than it should, but once you've standardized your export settings and import workflow, it becomes second nature. The biggest wins are: correct scene units from day one, disciplined UV channel management, and separating textures by color-space type on import.
If you're building an asset library for games, having production-ready source files cuts the Blender-to-UE5 prep time considerably. BitSoul's marketplace offers 747 game-ready models — characters, vehicles, environments, and props — already exported with correct UE5 units, clean FBX/GLB variants, and PBR-ready textures. Before committing to a full import, use BitSoul's 3D Studio to inspect pivot points, polygon counts, and animation timings directly in your browser.
A free account includes two downloads a month for evaluation; commercial use across your projects is covered by paid memberships. Compare plans.
---
*This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.*