← ClaudeAtlas

bake-high-to-lowlisted

Cage-bake high-poly surface detail onto a low-poly target as a tangent-space normal map. Cycles CPU, selected-to-active, active image node, UV layer, save_render. Targets 5.2 LTS with 4.5 LTS fallback.
TMHSDigital/Blender-Developer-Tools · ★ 13 · AI & Automation · score 66
Install: claude install-skill TMHSDigital/Blender-Developer-Tools
# Bake High to Low ## Trigger Use this skill when the user: - Wants a tangent-space normal map from a dense source onto a game-resolution mesh - Mentions cage bake, `use_selected_to_active`, `cage_extrusion`, or `bpy.ops.object.bake` - Has an LOD from `DECIMATE COLLAPSE` (or a retopo) and needs the missing surface detail in a map - Is about to call bake from EEVEE, on GPU in CI, or with `bake_type=` This skill is the bake step. It composes `ai-mesh-cleanup` (identity scale, applied transforms, a UV layer that already exists) and the LOD contract in `examples/lod-decimate-chain/` / `snippets/decimate_to_budget.py` (collapse onto a budget; UVs survive well enough to bake). It does not unwrap, transfer UVs, or pack an atlas — those are a later phase. It does not generate meshes. ## The core misunderstanding Baking is not a render. EEVEE has no bake path. The operator writes into the **active Image Texture node** of the **active** object's material, not into a file and not into "the selected image datablock." A missing UV layer, the wrong object active, or a node that is not `nodes.active` finishes without error and leaves a blank or unchanged image. The pass type RNA is `type`, not `bake_type`. `bake_type` is not on `bpy.ops.object.bake`. Passing it is a TypeError. Cycles bake is stochastic. Pixel buffers are not byte-identical across 4.5 / 5.1 / 5.2, even at one sample on CPU. Assert with tolerances and a flat-source control, not a hash. ## RNA (verified) Live dump of