Quick answer: Enable Dithered LOD Transition on the material, tighten the screen size thresholds so LOD switches happen when the mesh is small on screen, and use r.SkeletalMeshLODBias to push low-end platforms to higher LODs earlier.

Your character mesh has four LODs, each carefully reduced. It looks great until the player walks backward and watches the character snap from LOD0 to LOD1 — the shoulder silhouette changes, the fingers merge, and it looks like the character was replaced by a different model. LOD popping is the most common visual artifact in 3D games and the fix is a combination of better thresholds and cross-fade blending.

Why LODs Pop

By default, Unreal switches LODs instantly. One frame renders LOD0, the next renders LOD1. If the two LODs have significantly different silhouettes (fewer edge loops on the shoulder, merged fingers, simplified hair cards), the switch is visible even at a distance. The human eye is extremely sensitive to sudden shape changes — much more than to gradual quality loss.

Step 1: Enable Dithered LOD Transitions

Dithered transitions render both the outgoing and incoming LOD for a brief period, using a screen-space dither pattern to blend. The result is a smooth cross-fade that takes 0.25–0.5 seconds.

To enable:

  1. Open the Material used by the skeletal mesh.
  2. In Details, check Dithered LOD Transition.
  3. Save and recompile.

The material must be opaque or masked. Translucent materials cannot use dithered transitions because the dither is applied via the opacity mask channel.

During the transition, both LODs are drawn. This costs extra draw calls for a fraction of a second. For most games, the visual improvement far outweighs the cost. For crowd scenes with hundreds of characters, the cost can add up — consider using dithered transitions only for hero characters and hard-cutting for distant NPCs.

Step 2: Tune Screen Size Thresholds

Open the Skeletal Mesh asset and navigate to LOD Settings. Each LOD has a Screen Size value that controls when it activates. The value represents the fraction of screen height occupied by the mesh’s bounding sphere.

Default auto-generated thresholds are often too aggressive — LOD1 kicks in while the character is still large on screen. Tighten them:

LOD0: Screen Size 1.0   (full detail, close up)
LOD1: Screen Size 0.4   (switch when mesh is 40% of screen height)
LOD2: Screen Size 0.15  (switch at 15%)
LOD3: Screen Size 0.05  (switch at 5%, barely visible)

The right values depend on how different each LOD looks. If LOD0 and LOD1 are nearly identical, you can switch early. If LOD1 is visibly different, push the threshold lower so the switch happens when the mesh is smaller.

Step 3: Per-Platform LOD Bias

Low-end platforms (Switch, mobile, Steam Deck) need more aggressive LOD selection to hit frame rate targets. Use the console variable:

// Push all skeletal meshes one LOD level higher on low-end
r.SkeletalMeshLODBias 1

// Or per-quality level in DefaultScalability.ini
[SkeletalMeshQuality@0]
r.SkeletalMeshLODBias=2

[SkeletalMeshQuality@3]
r.SkeletalMeshLODBias=0

A bias of 1 means every mesh uses one LOD higher than its screen size would normally dictate. LOD0 becomes LOD1, LOD1 becomes LOD2, etc. Combined with dithered transitions, the player sees a smooth blend into lower-detail meshes without the pop.

LOD Hysteresis

Without hysteresis, a mesh at exactly the threshold distance oscillates between two LODs every frame. Unreal handles this with a small hysteresis zone by default, but if you see flickering at a specific distance, increase the LODHysteresis property on the mesh. A value of 0.02 (2% of screen height) is usually enough to prevent oscillation.

Verifying the Fix

Use the console command r.StaticMeshLODDistanceScale 1 and showflag.LODColoration 1 to visualize which LOD each mesh is using. LODs are colored differently in the viewport. Walk toward and away from the character and confirm the transition is smooth (dithered) and happens at an appropriate distance (thresholds).

“A good LOD system is one the player never notices. If they can see the switch, the thresholds are too aggressive or the LODs are too different. Fix both and the pop disappears.”

Related Issues

For Nanite mesh issues, see Unreal Nanite mesh not rendering. For foliage disappearing at distance (same LOD concept), see Unreal foliage disappearing at distance.

Enable dithered LOD transitions on every hero character material. The cost is negligible and the visual improvement is immediate.