Baking: transferring detail from high poly to low poly

How a few hundred triangles come to look like a few million. The process, the cage, and the artefacts.

Baking projects detail from a dense mesh onto a simple one, storing the difference as textures.

What gets baked

  • Normal map. The surface direction difference. This is the one that makes a low-poly mesh look detailed.
  • Ambient occlusion. Where light is blocked.
  • Curvature. Convexity and concavity, used to drive edge wear and dirt masks procedurally.
  • Position, thickness, material ID. Utility maps for procedural texturing.

The cage

Baking works by casting rays from the low-poly surface to find the high-poly surface. The cage is an inflated version of the low poly defining how far those rays travel.

Too tight and the rays miss detail, producing holes in the bake. Too loose and rays hit the wrong surface — the classic artefact where one part of a model picks up another part's detail across a gap.

Why UVs must be final first

The bake writes into the UV layout. Changing UVs afterwards invalidates the bake entirely. The order is: finalise low poly → unwrap → bake → texture. Every step depends on the one before.

Common artefacts

  • Waviness on flat surfaces. Usually the low poly's normals are smoothed across a hard edge. Split the normals or add supporting geometry.
  • Seam lines. Visible where UV islands meet. Padding and matching normals across the seam help.
  • Missing detail. The cage is too tight, or the high poly is not enclosed.
  • Cross-contamination. Rays hitting a neighbouring part. Bake by matching name groups or explode the model — separating parts in space so nothing overlaps.

Baking from a generated mesh

A reconstructed mesh works as the high-poly source. Retopologise it, unwrap the result, and bake the original dense mesh onto it. That path gives you a clean, efficient mesh carrying the generated detail, which is usually the best outcome available from a generated asset.