Skip to content
← Back to Blog tutorials

Why Unreal Engine 5.7 skips Nanite on your GLB imports

By BitSoul3D5 min read75 views

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.

Why Unreal Engine 5.7 skips Nanite on your GLB imports

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 typeTypical triangle countWhere it usually lands
Background prop (crate, barrel, foliage card)500 – 5,000Well below any reasonable threshold
Mid-poly game-ready prop5,000 – 50,000Borderline — depends entirely on your project's setting
Hero prop or detailed architecture200,000+Comfortably clears it
Cinematic-resolution kit piece1,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:

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 modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 or start free (2 downloads a month)