← Back to Blog tutorials

Why Unreal Engine 5.7 skips Nanite on your GLB imports

By BitSoul Team9/15/20265 min read5 views
Why Unreal Engine 5.7 skips Nanite on your GLB imports

You check Enable Nanite on import, the GLB drops into the content browser, and the mesh still renders through the old static path — no cluster culling, no free LOD, same draw call cost as before. In Unreal Engine 5.7 that's not a bug. The Interchange pipeline added a Nanite triangle threshold: import options only convert a mesh to Nanite when its triangle count clears that per-project bar. Most hand-optimized, game-ready GLB props sit well under it, so they import as ordinary static meshes no matter what the checkbox says.

The Nanite triangle threshold in 5.7's Interchange pipeline

The Nanite triangle threshold in 5.7's Interchange pipeline — illustrated

Through 5.6, the generic Interchange mesh pipeline converted whatever you pointed it at for FBX and glTF: check the box, get Nanite, regardless of whether the mesh had enough geometry to justify the overhead. That's how a lot of scenes ended up with Nanite crates, barrels and railings — technically converted, practically no better off, since Nanite's win comes from spreading per-cluster culling and streaming cost across a lot of triangles.

5.7 moves the decision earlier. The Interchange Generic Mesh Pipeline now carries a triangle threshold, checked before the per-asset Nanite option ever matters. Clear the threshold and the mesh converts. Fall short and it imports as a conventional static mesh — same GLB, same dialog, different outcome depending on triangle count alone.

What actually clears the bar

Nanite doesn't work mesh-by-mesh; it works cluster-by-cluster, and clusters generally top out around 128 triangles each. A background prop at a few thousand triangles resolves to a handful of clusters — not enough for Nanite's streaming and culling machinery to earn its keep. A dense architectural piece resolves to thousands of clusters, which is exactly the regime Nanite was built for.

| Asset type | Typical triangle count | Where it usually lands |
|---|---|---|
| Background prop (crate, barrel, foliage card) | 500 – 5,000 | Well below any reasonable threshold |
| Mid-poly game-ready prop | 5,000 – 50,000 | Borderline — depends entirely on your project's setting |
| Hero prop or detailed architecture | 200,000+ | Comfortably clears it |
| Cinematic-resolution kit piece | 1,000,000+ | Clears it with room to spare |

Our Baroque Cathedral sits at 1,922,386 triangles and 1,055,024 vertices at full resolution — exactly the asset the threshold was built to wave through automatically. A hand-optimized market stall or streetlamp from the same catalog runs a tiny fraction of that, which is precisely the geometry the pipeline now filters out by default. A free account's two monthly downloads cover pulling a model like this in to check the numbers yourself; commercial use is included with paid memberships — see pricing for the tiers.

Epic hasn't published one universal number for the cutoff, and it isn't going to be identical across projects — it's a pipeline setting, not a constant. Don't trust a cached figure from any blog, including this one; check yours directly with the walkthrough below.

Finding and changing the threshold

Finding and changing the threshold — illustrated

Drag a GLB into the Content Browser and the Interchange import dialog opens with a stack of pipelines on the right. Expand the Mesh entry and its Advanced section exposes the Nanite settings used for that import, including the triangle threshold that decides conversion. That value is read from the Interchange Pipeline asset your project's import presets reference — check Project Settings → Interchange, or the pipeline preset asset directly if your project keeps one in Content, to change the default for every future import instead of editing one file at a time.

Already imported a folder of props under the old default? The setting isn't retroactive. Existing meshes keep whatever the pipeline decided at import time, and a plain right-click Reimport reruns that same pipeline asset — it won't pick up an edited default unless you point the asset at it first, which is slower than just fixing the meshes directly for anything more than a couple of files.

Overriding it per mesh after import

The Static Mesh Editor's Nanite Settings section has an Enable Nanite Support toggle that overrides the import-time decision on one mesh — flip it, hit Apply Changes, and Unreal rebuilds Nanite data regardless of triangle count. For a whole folder, script it instead of clicking through every asset:

```python
import unreal

props = unreal.EditorAssetLibrary.list_assets("/Game/Props", recursive=True)
for path in props:
mesh = unreal.load_asset(path)
if isinstance(mesh, unreal.StaticMesh):
mesh.nanite_settings.enabled = True
unreal.EditorAssetLibrary.save_asset(path)
```

That loop walks every asset under `/Game/Props`, flips `nanite_settings.enabled` on anything that's a static mesh, and saves it. Run it from the Python console in the Output Log or as an editor utility script — either way, it clears an entire import pass in seconds instead of one Details panel at a time. Before running it against a folder of low-poly props, check their real triangle counts first — BitSoul's 3D Studio inspects tris, UVs and materials on any GLB in-browser, free, on your own GPU, before you commit to an import.

Gotchas

Nanite conversion is static-mesh-only no matter what the threshold says. Skeletal meshes, vertex-animated meshes and anything carrying morph targets stay off Nanite entirely, threshold or override included — that rules out most character GLBs from this discussion completely.

Forcing Nanite onto a genuinely small mesh doesn't break anything, but it doesn't help either. You pay for a cluster's worth of overhead on geometry that would have been cheaper as a regular static mesh with a normal LOD chain — Epic gated small meshes out by default because that trade-off measured out badly, not because the checkbox was an oversight.

5.7 also shipped Nanite Foliage support, which sounds related but runs its own settings and its own performance profile — read why Nanite made foliage slower, not faster before assuming foliage behaves like static props here.

If you're coming from Datasmith's glTF path, Epic removed that importer entirely in 5.8 — Interchange is now the only route in for glTF and GLB, threshold included, so there's no alternate importer left to route around it.

---

*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.*

Tags: unreal-engine-5 optimization game-assets 3d-models tutorials workflow

Skip the modelling — download it instead

A free BitSoul account gets you 2 models every month plus 25 AI Engine credits to generate one of your own, no card required. Clean topology, PBR textures, and GLB downloads that drop straight into Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL export come with any purchase or paid plan.

Browse 1051 models — from $4.99 → or start free (2 downloads a month)