PromptProp

How-to · Cleanup

Do You Still Need Retopology? Nanite, Godot and Unity LODs

Whether an AI-generated mesh needs retopology depends on engine and asset type. What Unreal Nanite, Godot auto-LOD and Unity LOD Groups documentably do and do not solve.

For static opaque props in Unreal with Nanite enabled, Epic publishes no triangle limit, so skipping polygon reduction may be viable; our reading is that you can spend the time on repair, materials and UVs first and measure before reducing. For deforming characters, for Godot and Unity targets, and for anything outside Nanite’s supported list, plan on a reduced mesh. This page covers only that decision; the how-to is elsewhere.

What Nanite documents

Epic’s Nanite page (the page itself shows version 5.8 in its title but links to 5.5, so some details may be dated) states:

  • You enable it with “Enable Nanite Support” under Nanite Settings in the Static Mesh Editor.
  • Supported platforms are current consoles and desktop with DirectX 12 and Shader Model 6.
  • Materials must be Opaque or Masked; Translucent and Mesh Decals are not supported.
  • Morph targets are not supported. Skeletal meshes are supported as Nanite Skeletal Meshes.
  • Not supported: MSAA, Forward Rendering, stereo VR, Lighting Channels, and ray tracing against Nanite meshes, which uses the Fallback Mesh. A Fallback Relative Error setting controls how aggressively the fallback is reduced.
  • The page publishes no per-mesh triangle limit and says to measure on your hardware.

Read that as: the page sets no triangle ceiling for qualifying static meshes, and it does not say whether reduction is unnecessary; disk size and hardware are for you to measure. It says nothing about the mesh being clean. This is our inference, not Epic’s statement: Nanite renders the geometry you give it, so floating shards, baked-in lighting in the base color texture and a wasteful UV layout would still be there. Those need repair and the UV and texture fixes.

What Godot documents

Godot generates LODs automatically on import using meshoptimizer for glTF, .blend, Collada and FBX files; OBJ needs Import As = Scene, then Reimport and an editor restart. You can disable it per scene (Generate LODs) or per mesh in Advanced Import Settings. A project setting, Rendering > Mesh LOD > LOD Change > Threshold Pixels (default 1), controls switching, and a per-node LOD Bias exists. The docs warn it can misbehave with skinned meshes. So for static props in Godot, LODs are generated on import without your involvement; for skinned characters, plan on your own reduction.

What Unity documents

Unity’s LOD Group switches between meshes using screen-height percentage thresholds (100% down to 0%). To make LODs on import, name meshes Name_LOD0, Name_LOD1, and so on in an FBX and Unity creates the LOD Group for you. On the pages we read, the lower levels come from meshes you supply. We did not verify a Unity 6.2 Mesh LOD feature from a primary page, so this page makes no claim about it; check the current manual.

Decision guide

Situation Retopology needed? Basis
Static opaque prop, Unreal, Nanite supported Possibly not for triangle count; measure Nanite documentation; no triangle limit published
Translucent, morph-target or unsupported-platform asset in Unreal Nanite does not apply; use a conventional reduction and LOD workflow Nanite exclusions
Static prop in Godot Optional; auto-LOD helps Godot mesh LOD page
Skinned character in any engine Plan on reduction; StraySpark (a cleanup-tool vendor) advises hand retopology for deforming heroes Godot warns auto-LOD can misbehave on skinned meshes; Nanite skeletal support is separate
Unity prop Likely: LOD meshes are supplied by you Unity LOD import naming
Roblox Yes, to the limit Roblox’s 20,000 triangle limit per mesh
Web or mobile Check your target We found no official figure for these
Collision Use a separate simple mesh See collision meshes

The table is a reading of the documentation, not a measured outcome. Disk size, frame time and fallback-mesh quality for raw versus cleaned AI meshes are exactly what has not been measured here.

How to decide for your own asset

The documentation gives no triangle threshold, so the decision is a short measurement you run yourself. These steps use menu names from the Godot docs (4.7 stable) and Epic’s Nanite page; the Unity step uses the profiler generally.

  1. Check the hard rules first. Roblox: 20,000 triangles per mesh. If a platform limit applies, you reduce regardless.
  2. Check eligibility. In Unreal, confirm the material is Opaque or Masked, there are no morph targets, and your target platform is in Epic’s list. If any fails, Nanite does not help that asset.
  3. Look at the mesh for defects Nanite or auto-LOD will not fix: floating pieces, holes, baked lighting in Base Color. Fix those on the repair and UV and texture pages.
  4. Put many copies of it in a test scene. Cost shows up in numbers, not in one instance. In Godot, the 3D viewport’s top-left menu has View Information (primitive count, bottom right), View Frame Time (FPS, top right), Display Wireframe, and Disable Mesh LOD, which lets you compare against the full-detail mesh; the docs say that with LOD enabled and the camera far enough away the drawn primitive count should fall and FPS rise (unless the CPU is the bottleneck). In Unreal, enable Nanite Support in the Static Mesh Editor under Nanite Settings and compare against the same mesh with it off. In Unity, import a reduced copy with _LOD0, _LOD1 names and compare in the profiler.
  5. Decide against your own budget. If the scene holds frame rate on your target hardware and the disk size is acceptable, stop. If not, reduce the mesh.

Symptoms and what the documentation suggests

Symptom Likely cause Next step
Godot LOD shows rendering glitches on a character Docs say LOD generation may occasionally introduce rendering issues, especially in skinned meshes Disable Generate LODs for that scene, or per mesh in Advanced Import Settings, and supply your own reduction
Godot LODs not generated for an OBJ OBJ needs Import As = Scene, then Reimport and an editor restart Do that, or use glTF
Godot LOD switches look too early or late Threshold Pixels (default 1) and per-node LOD Bias Raise Threshold Pixels to switch sooner; LOD Bias above 1.0 switches later
Many Godot instances share one LOD level MultiMesh and grouped instances pick LOD from the closest point of the node’s bounds Put distant instances in separate nodes
Unreal mesh will not behave as Nanite Translucent or Mesh Decal material, or morph targets Use a conventional LOD workflow
Unity shows only one detail level LOD meshes must be supplied; naming is Name_LOD0, Name_LOD1 in one FBX Make the reduced copies first

If you decide you do need it

Choose a method on retopology for AI 3D models, then build LODs. Engine-specific import notes are on AI 3D models in Unreal, Godot and Unity, and the order of all steps is on the full pipeline page. If it deforms, see rigging first.

When to stop worrying

If the asset renders correctly in your target scene, holds frame rate on your target hardware, and has no visible defects, there is no documented reason to retopologize it. Profile first.

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

Sources

  1. Unreal Engine documentation: Nanite Virtualized GeometryPrimary · read 2026-11-08
  2. Godot documentation: Mesh level of detail (LOD)Primary · read 2026-11-08
  3. Unity 6.0 manual: LOD GroupPrimary · read 2026-11-08
  4. Unity 6.0 manual: Importing LOD meshesPrimary · read 2026-11-08
  5. Godot documentation: Import configuration (Meshes > Generate LODs)Primary · read 2026-11-08
  6. StraySpark devlog (vendor of MeshPrep)Secondary · read 2026-11-08
  7. Roblox Creator Docs: modeling specificationsPrimary · read 2026-11-08