62 lines
3.5 KiB
Markdown
62 lines
3.5 KiB
Markdown
|
|
# Handoff: decimated nude Lena → retexture / re-atlas lane
|
||
|
|
|
||
|
|
**2026-08-06.** Jeremy asked for the healed nude Lena decimated to the game-body budget and passed
|
||
|
|
to the retexture / re-atlas work, "to see how they do".
|
||
|
|
|
||
|
|
## The file
|
||
|
|
|
||
|
|
`characters/female/lena_nude/lena_nude_decimated_glb_v01.glb`
|
||
|
|
|
||
|
|
| | |
|
||
|
|
|---|---|
|
||
|
|
| sha256 | `b11940bb46732ae0a60e1624e88e76fa48dcc3e3af49a6363348521bb7c52cc8` |
|
||
|
|
| parent | `lena_nude_sculpt_glb_v03.glb` (master `hires_claude/29b_final.blend`) |
|
||
|
|
| recipe | `hires_claude/30_decimate.py` then `30b_fix_winding.py` |
|
||
|
|
| ratio | Decimate **COLLAPSE 0.037728** — bisected, not guessed |
|
||
|
|
| density | 31,964 v / 64,957 tris in Blender (46,810 v as exported; UV seams split verts) |
|
||
|
|
| why that density | matched to the shipped `lena_nude_quatskin_glb_v01.glb` (31,670 v), Jeremy's call |
|
||
|
|
| rig | none — unrigged, no skins, transforms applied |
|
||
|
|
| maps | basecolor + normal + rm embedded (3 images, wired baseColor / metallicRoughness / normal) |
|
||
|
|
|
||
|
|
Ready to load directly: `24_seams.py` accepts a `.glb` as its first argument and applies transforms
|
||
|
|
itself, so this drops in with no preparation.
|
||
|
|
|
||
|
|
## Read this before you spend a pass on the UVs
|
||
|
|
|
||
|
|
**The carried `TEXCOORD_0` is not worth preserving.** Collapse decimation shreds Tripo's
|
||
|
|
5,870-chart atlas — in the textured review render (`hires_claude/review_30/chest_tex_0.png`) the
|
||
|
|
transplanted skin grain smears into streaks and the throat picks up a red blotch. That is expected
|
||
|
|
and is exactly the problem the ~14-chart anatomical atlas solves. Judge this mesh from
|
||
|
|
`review_30/full_clay_0.png` (clay, no material) and treat the UVs as scrap.
|
||
|
|
|
||
|
|
**Decimation improved one thing.** The waistband/underbust lines that survive on the hires sculpt
|
||
|
|
are nearly invisible at 32k — the collapse averaged them out. So the residual line problem is a
|
||
|
|
hires-only concern; don't go hunting for it here.
|
||
|
|
|
||
|
|
## Known defects being handed over
|
||
|
|
|
||
|
|
- **25 backfacing triangles** of 64,957. Down from 61 via `30b_fix_winding.py`, but the remainder
|
||
|
|
sit in non-manifold knots where `normals_make_consistent` oscillates (61 → 260 → 39 → 25 → 25).
|
||
|
|
They render black. If your pass rebuilds topology, they will likely vanish for free.
|
||
|
|
- **835 boundary edges / 1649 non-manifold edges**, inherited from the sculpt. Every fill attempt
|
||
|
|
refused them (`bmesh.ops.holes_fill`, edit-mode `mesh.fill_holes`, and a per-loop pass) — they
|
||
|
|
are dangling flaps and slivers, not perforations. Documented in the lane README.
|
||
|
|
- **The head is untouched original Tripo output.** Every geometry pass in this lane stopped below
|
||
|
|
the chin (z < 0.90) on purpose, so lips/nostrils/eyes still have the source smearing. If the
|
||
|
|
retexture covers the face, that is new ground, not a regression.
|
||
|
|
- **She reads glossy** — the `rm` map was neutralised to a median over the old garment texels, so
|
||
|
|
the whole body is shinier than skin should be. Untouched deliberately: an earlier attempt at
|
||
|
|
correcting roughness made her plasticky (see the lane README's fourth dead end).
|
||
|
|
|
||
|
|
## Provenance the three fixes came from
|
||
|
|
|
||
|
|
v03 addressed Jeremy's three notes on v02 — cut lines, discoloured bra/crotch patches, and the
|
||
|
|
cleavage. Measured outcomes and the four dead ends that were ruled out on the way are in
|
||
|
|
`README.md` under "Hi-res sculpt v03". Worth skimming before re-treading the geometry.
|
||
|
|
|
||
|
|
## Numbering note
|
||
|
|
|
||
|
|
This lane had two agents working in it simultaneously on 2026-08-06. `20`/`21` exist twice under
|
||
|
|
different filenames (`20_atlas_probe.py` + `20_cleavage.py`, `21_seam_probe.py` + `21_tone.py`).
|
||
|
|
Nothing was overwritten, but pick a fresh number rather than assuming the next one is free.
|