PromptProp

How-to · Cleanup

Making LODs for AI-Generated Models

Build LOD meshes for AI-generated models with Blender Decimate, then use Unity _LOD naming, Godot auto-LODs or Unreal LOD import. No invented distances.

Make LODs from your final, already-cleaned low-poly: duplicate it, reduce each copy with Blender’s Decimate modifier in Collapse mode, name them in the sequence your engine expects, and let the engine switch between them. Godot can generate LODs for you on import, so for static props there you may not need to make any. We found no recommended LOD distances or triangle targets in the engine docs we read, so the numbers have to come from profiling your own scene.

Version note. Blender names come from the manual source on the main branch (read 2026-11-08), not a pinned release; engine names come from the Unity 6.0 manual, the Godot 4.7 (stable) docs and Epic’s docs, which carry their own version mismatch (see the Nanite question). Labels can move. We have not run these steps ourselves.

Do you need to make them?

  • Godot: automatic via meshoptimizer on import for glTF, .blend, Collada and FBX. OBJ needs Import As = Scene, then Reimport and an editor restart. Per-scene toggle: Generate LODs. Per-mesh: Advanced Import Settings > Generate > LODs (Default/Enable/Disable) with LODs > Normal Merge Angle. The docs say it can misbehave with skinned meshes, so characters need your own plan.
  • Unreal with Nanite: Epic publishes no triangle limit, so qualifying static meshes may not need hand-made LODs; measure first.
  • Unity: on the manual pages we read, LODs on import come from meshes you supply with _LOD names.
  • Hard-limit platforms: you reduce the one mesh to the limit; Roblox says individual meshes cannot exceed 20,000 triangles.

Why AI meshes make LODs harder

LODs are derived from the base mesh, so any defects in it carry into the lower levels. Finish repair, retopology and the bake first. (General practice, not from the engine docs: a normal map baked for LOD0 is typically reused on lower levels, so look at those levels in the engine.)

Steps in Blender

  1. Duplicate the final mesh once per LOD and name the copies in engine order (below).
  2. On each copy, add the Decimate modifier (Properties > Modifiers). Collapse mode: set Ratio (1.0 unchanged, 0.0 removes all faces). Optional: Triangulate, Symmetry, and a Vertex Group with a Factor to protect important areas. The manual notes that with Triangulate off, untouched quads and n-gons can leave the count higher than the ratio suggests, so read the actual statistics.
  3. Planar mode with Delimit (Normal, Material, Seam, Sharp, UVs) has Delimit options (Normal, Material, Seam, Sharp, UVs) that protect those borders from being dissolved. Un-Subdivide mode (Iterations; even numbers usually best per the manual) is for meshes built by subdivision, which AI triangle soup is not, so skip it.
  4. Apply the modifier on each copy (or export with modifiers applied; the glTF exporter has Apply Modifiers under Mesh).
  5. Export. glTF 2.0 uses File > Export > glTF 2.0. FBX uses Blender’s FBX export add-on.

Naming and setup by engine

  • Unity: name meshes ExampleMeshName_LOD0, _LOD1, _LOD2 in one FBX; Unity creates a GameObject with an LOD Group. Thresholds in the LOD Group are screen-height percentages from 100% to 0%. Fade Mode can be Cross Fade or Speed Tree. See AI 3D models in Unity.
  • Godot: project setting Rendering > Mesh LOD > LOD Change > Threshold Pixels (default 1), per-node LOD Bias. See AI 3D models in Godot.
  • Unreal: Epic’s FBX options reference describes Import Mesh LODs as creating LOD models “from LODs defined in the file”; without it only the base mesh is imported. The pipeline page says the LODs should be aligned, occupying the same space with the same pivot point, and may use different materials, including a different number of them. Import them with the base mesh through the Content Browser, or individually in the Static Mesh Editor, and step through them with the LOD Picker in the Details panel. Neither page we retrieved gives a file-naming suffix (a _LOD0 appears only in a table of contents), so we state none. Epic also requires triangulated meshes and warns that automatic triangulation “can lead to undesirable results,” so triangulate in Blender (Decimate’s Triangulate, or a Triangulate modifier) rather than at import.

Checking the result in Godot

Godot’s docs list tools in the 3D viewport’s top-left menu (the Perspective or Orthogonal label): Display Wireframe to see the decimation, View Information for the primitive count, View Frame Time for FPS, and Disable Mesh LOD to compare against full detail. Changing Threshold Pixels while in wireframe shows the effect. The docs also say LOD can be changed at runtime through mesh_lod_threshold on the root viewport, and that MultiMesh, particles and grouped instances pick one LOD level from the closest point of the node’s bounding box, so split distant instances into separate nodes. Generation can take a while on complex meshes.

Troubleshooting

Causes are those implied by the cited docs, not measured on AI meshes.

Symptom Likely cause Fix
Triangle count after Decimate is higher than Ratio suggests Quads and n-gons not collapsed stay unchanged when Triangulate is off (Blender manual) Enable Triangulate on the modifier and re-read statistics
Unity makes no LOD Group Names do not follow Name_LOD0, Name_LOD1 in one FBX Rename meshes and re-export
Unity LOD switches at the wrong size Thresholds are screen-height percentages from 100% to 0% Edit the percentages in the LOD Group
Godot character shows glitches at distance Auto-LOD can misbehave on skinned meshes Disable Generate LODs for that scene or mesh
Godot OBJ gets no LODs OBJ needs Import As = Scene, Reimport, restart Redo, or use glTF
Unreal imports only LOD0 Import Mesh LODs was not enabled Enable it in the import dialog
Unreal LODs appear shifted LODs not aligned to the same pivot Align in Blender before export

Choosing the numbers

No official source gives triangle ratios per level or switch distances. A method you can use (ours, not an official one): set LOD1 and LOD2 ratios, place the asset in a test scene at the distances it will actually appear, and raise the ratio until you can no longer see the change at the point the engine switches. Then check frame time with the engine’s profiler with many instances on screen, because LODs pay off in numbers. The polycount budget calculator will hold platform limits as they are collected. A matching collision mesh should not use these LODs.

When to stop

Add another level only if the profiler shows the asset is a cost. For one-off hero assets, LODs may not be worth the time.

Not verified

Unreal LOD file-naming rules (neither Epic page retrieved states them); Unity 6.x versions newer than the 6.0 manual; our own distance and ratio targets, which are not yet measured.

This page is part of the Cleaning Up AI 3D Models section.

Sources

  1. Blender manual source (main): Decimate modifierPrimary · read 2026-11-08
  2. Unity 6.0 manual: Importing LOD meshesPrimary · read 2026-11-08
  3. Unity 6.0 manual: LOD GroupPrimary · read 2026-11-08
  4. Godot documentation: Mesh level of detailPrimary · read 2026-11-08
  5. Unreal Engine documentation: Importing FBX static meshesPrimary · read 2026-11-08
  6. Unreal Engine documentation: FBX static mesh pipelinePrimary · read 2026-11-08
  7. Unreal Engine documentation: FBX import options referencePrimary · read 2026-11-08
  8. Godot documentation: Import configurationPrimary · read 2026-11-08
  9. Godot documentation: Advanced Import SettingsPrimary · read 2026-11-08
  10. Blender manual source (main): glTF 2.0Primary · read 2026-11-08
  11. Roblox Creator Docs: modeling specificationsPrimary · read 2026-11-08