# Handoff: re-atlased nude Lena — `lena_nude_decimated_glb_v02.glb` **2026-08-06.** Jeremy asked for the decimated nude body re-atlased and versioned. This is a **UV + texture change only**: the geometry is byte-for-byte the v01 mesh. ## The file `characters/female/lena_nude/lena_nude_decimated_glb_v02.glb` | | | |---|---| | sha256 | `cd3d53550470ae5a1958dc473ce11793f746b13f78ac911e6d426b6f7b9f5825` | | parent | `lena_nude_decimated_glb_v01.glb` | | recipe | `hires_claude/24_seams.py` → `hires_claude/31_reatlas.py` | | mesh | 31,964 v / 64,957 tris in Blender — **identical to v01** | | exported verts | 42,980 (v01: 46,810) — the new layout needs fewer seam splits | | maps | basecolor + normal + rm embedded, 4096², JPEG q95, correct colorspaces | | rig | none — unrigged, transforms applied | Rebuild: ``` blender --background --python 24_seams.py -- ../lena_nude_decimated_glb_v01.glb atlas_v02 blender --background --python 31_reatlas.py -- atlas_v02/seamed.blend atlas_v02 \ ../lena_nude_decimated_glb_v02.glb ``` ## What changed | | Tripo atlas (v01) | new atlas (v02) | |---|---|---| | UV islands | 5,870 | 968 | | charts holding 99% of the area | 84 | **14** | | atlas coverage | 62.0% | **68.6%** | | texel-density spread | 1.8× | **1.00×** | | per-triangle area-scale p95 / p99 | — | 1.77 / 2.27 | The 14 charts are torso, head, two arms, two legs, two hands (back + palm each) and two feet (upper + sole each). Seams run up the back midline, the back of each arm and the inner leg, with rings at neck, shoulder, wrist, hip and ankle — every landmark measured off the mesh's own cross-section radius profiles, so the rules port to any density. **It looks the same, on purpose.** Five matched views diff at mean \|Δ\| 0.0012, p99 0.0118, with 0.19% of body pixels over 0.05 (`33_ab.py`). Her original tones are untouched — this pass bought a paintable, uniform-density layout, not a new look. ## Three traps this pass hit, so you don't 1. **Colorspace is not cosmetic.** `image.pixels` returns *linear* values for an sRGB image and *raw* values for a Non-Color one, and re-encodes the same way on save. The normal and rm maps are Non-Color; writing them into default (sRGB) images gamma-encoded them, so 0.5 came back as 0.21 — every stored normal became a large false perturbation and she rendered dark and wet-plastic. New maps must inherit `colorspace_settings.name` from their source. 2. **Use the minimum-stretch solver, not angle-based.** ABF is conformal: it preserves angles and is free to crush area. At her folds it squashed 4,502 triangles (3.7% of her surface) below one texel, and they came out untextured. `method='MINIMUM_STRETCH'` took per-triangle area-scale p05 from 0.03 to 0.33 and the untextured count from 4,502 to 569 (0.56%, all genuine sub-texel slivers absorbed by the 16 px padding pass). 3. **Watch the LOW tail of the distortion stat.** p95/p99 measure stretching; it was p05 = 0.03 — crushing — that was losing whole patches. I read past it twice. Also tried and rejected: splitting the 1,649 non-manifold edges before unwrapping. It cost +3,512 verts and made the collapsed-face count *worse* (4,502 → 5,482), because the collapse was a solver problem, not a topology one. ## Still broken, and not from this pass **The ragged grey tears on the face, across the underbust, and as flecks down the arms and shins are in v01 already** — I rendered v01 through the same script to confirm, and they are identical in position and shape (`hires_claude/beauty_input_v01/` vs `beauty_atlas_v02/`). They are the 835 boundary edges / dangling flaps the v01 handoff lists as a known defect. A re-atlas cannot fix geometry. They need mesh surgery before this body ships. The other v01 defects carry over untouched: 25 backfacing triangles, the head still being original Tripo output, and the glossy `rm` map. ## What this does NOT do Jeremy's stated goal is to **keep her original texture and replace only the breast and underwear region**. This pass deliberately does not touch colour — it only rehouses it. The re-authoring step (a gradient-domain fill pinned to her surrounding skin at the boundary, so the old bra/briefs outline cannot ghost) is the next stage, and it is much easier now that the charts are anatomical and uniform-density. Note that keeping her original texture keeps its known incoherence: her feet read 0.11 luma darker and 50% redder than her belly, and the rosy chest V remains. Measured in `hires_claude/21_seam_probe.py`; see the `lena-tripo-atlas-chart-soup` note.