Baking Normal and Ambient Occlusion Maps in Blender Cycles for Game Assets
Learn how to bake clean normal and AO maps from a high‑poly model onto a UV‑unwrapped low‑poly mesh in Blender Cycles, with steps to avoid artifacts and verify results.
09 Nov 2025, 21:56 UTC

Desired outcome
Produce clean normal and ambient occlusion (AO) texture maps from a detailed high‑poly model onto a UV‑unwrapped low‑poly proxy. The maps should be free of black edges, missing rays, or inverted normals and ready for use in a real‑time engine.
Prerequisites
- A low‑poly mesh with non‑overlapping UV islands and sufficient padding between islands.
- A high‑poly mesh that matches the silhouette of the low‑poly version; both objects must reside in the same collection.
- The low‑poly material must have an image texture node (e.g.,
Base Coloror a dedicatedNormal Mapslot) that will receive the bake output. - Blender set to the Cycles render engine (CPU or GPU compute device).
Procedure
- In the 3D View, select the low‑poly object first, then Shift‑select the high‑poly object so the high‑poly becomes the active object.
- Open the Render Properties tab, choose Bake, and set Bake Type to Normal or Ambient Occlusion.
- Enable Selected to Active. This tells Cycles to trace rays from the low‑poly (selected) surface toward the high‑poly (active).
- If the meshes are separated by a gap, set a Ray Distance large enough to bridge it (e.g., 0.05 m for a typical character). Alternatively, create a cage mesh that encloses the low‑poly and enable Cage with the cage object selected.
- Adjust Samples for AO (higher samples reduce noise) and keep Margin ≥ 16 px to avoid bleeding.
- Click Bake. The result appears in the image texture node linked to the low‑poly material.
Expected checks
- Open the UV/Image Editor, view the baked image, and zoom into UV seams. Look for black voids, duplicated projections, or banding.
- Switch the low‑poly material to Material Preview mode and enable the normal map (if baked). Rotate the model under a neutral HDRI; the shading should follow the high‑poly silhouette without flat spots.
- For AO, overlay the baked image as a multiply layer on the base color and verify that creases darken appropriately while flat areas remain unaffected.
Recovery options
- Black edges or missing rays: increase Ray Distance or use a cage that fully surrounds the low‑poly geometry.
- UV bleeding: unwrap the low‑poly again with more island padding (≥ 0.02 uv units) and rebake.
- Normal map appears inverted: in the material node tree, toggle the Invert option on the normal map node, or switch the bake space from Tangent to Object and convert later.
- Noisy AO: raise the Samples value in the bake settings and rebake.
- If the bake fails entirely, verify that both objects have non‑zero scale and that the active object is indeed the high‑poly mesh.
Limitations and practical verification
The bake operation writes directly to the selected image texture; there is no automatic undo. To revert, simply re‑bake with corrected settings or replace the image with a backup copy. After baking, export the image (e.g., as PNG) and import it into your target engine or a fresh Blender scene to confirm that color space (sRGB for AO, non‑color data for normal) and orientation match expectations.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.