3d8825f5a9
REGISTRY rewritten around the central rule: a character folder is born only when a body ships to ariki-game (<character>_base_v<NN> = ship ordinal). lena_nude dissolves accordingly: - characters/female/lena_base_v01/ — SHIPPED 2026-08-10: AccuRig GLB carrier, T-pose/rig FBX + JSON, previews, frozen README - characters/work/lena/ — the live lane: recipes 01-47 (incl. new 36-47: refill/sheets/clay/despeckle/musculature/spin/AccuRig export/graft/pose QC), masters (athletic_v04 blend + textures, accurig blend), lane-history README - hires_claude/hires_work intermediates (blends, logs, probes) pruned Supporting docs: AGENTS.md, working-files rule, rig-graft plan addendum, originals README, prune_lane.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
91 lines
4.7 KiB
Markdown
91 lines
4.7 KiB
Markdown
# Handoff: `lena_nude_decimated_glb_v03.glb` — v04 geometry, re-atlased, double-sided
|
|
|
|
> **HISTORICAL — paths in this file are dead.** Written 2026-08-06, before the
|
|
> 2026-08-11 restructure. The `characters/female/lena_nude/` tree it references no
|
|
> longer exists and the `decimated_glb_vNN` chain it describes was pruned; that body
|
|
> went on to ship as `characters/female/lena_base_v01/`. Kept because the
|
|
> **double-sided finding below is still load-bearing** for the shipped asset.
|
|
> Regenerate any file named here with the recipes in this lane.
|
|
|
|
**2026-08-06.** Supersedes `decimated_glb_v01` (decimated from the v03 sculpt) and
|
|
`decimated_glb_v02` (v01 re-atlased). Both are stale: the bust-matched **v04** sculpt landed after
|
|
them.
|
|
|
|
## The file
|
|
|
|
`characters/female/lena_nude/lena_nude_decimated_glb_v03.glb`
|
|
|
|
| | |
|
|
|---|---|
|
|
| sha256 | `730f8baee15ab9c20b538654373e3dbe1ec4ccaa353e51e1164fe6d94615d126` |
|
|
| parent | `lena_nude_sculpt_glb_v04.glb` (master `hires_claude/34_v04.blend`) |
|
|
| recipe | `30_decimate.py` → `24_seams.py` → `31_reatlas.py` |
|
|
| mesh | 31,964 v / 64,957 tris in Blender; 39,416 v as exported |
|
|
| maps | basecolor + normal + rm embedded, 4096², JPEG q95, correct colorspaces |
|
|
| material | **`doubleSided = true`** |
|
|
| rig | none — unrigged, transforms applied |
|
|
|
|
Rebuild from the lane root:
|
|
|
|
```
|
|
blender --background --python 30_decimate.py -- 34_v04.blend atlas_v03/dec_raw.glb 31670
|
|
blender --background --python 24_seams.py -- atlas_v03/dec_raw.glb atlas_v03
|
|
blender --background --python 31_reatlas.py -- atlas_v03/seamed.blend atlas_v03 \
|
|
../lena_nude_decimated_glb_v03.glb
|
|
```
|
|
|
|
Roughly four minutes end to end, nearly all of it the decimation bisect.
|
|
|
|
## The grey tears are fixed, and they were never holes
|
|
|
|
Every review render of v01/v02 showed ragged grey tears across her face and the underbust band.
|
|
The v01 handoff attributed them to 835 boundary edges / dangling flaps and called fills impossible.
|
|
|
|
**They were backface culling.** The glTF material arrived single-sided, so Blender culls
|
|
backfaces; the mesh has regions wound inward, and culled they show the background straight through.
|
|
Rendering the *same file* with culling off makes them vanish entirely.
|
|
|
|
Note the trap: those regions are wound **consistently within themselves**, so their vertex normals
|
|
flip too. Any test that compares a face against its own neighbourhood — including
|
|
`normals_make_consistent`, which is why `30b_fix_winding.py` oscillated 61 → 260 → 39 → 25 → 25 —
|
|
declares them fine. A per-face check against its own vertex normals finds only 25 stray triangles
|
|
covering 0.8 cm², which cannot account for a 15 cm band. Only a viewer with culling sees it.
|
|
|
|
The fix here is `doubleSided = true`, which costs a character body essentially nothing. If you ever
|
|
need true single-sided culling, the real repair is a ray-parity test per connected patch (count
|
|
surface crossings along ±normal to decide which way is out), not another `make_consistent` pass.
|
|
|
|
## What changed vs v02
|
|
|
|
| | v02 | v03 |
|
|
|---|---|---|
|
|
| geometry | v03 sculpt | **v04**, bust matched to the approved turnaround |
|
|
| grey tears | present | **gone** (doubleSided) |
|
|
| coverage | 68.6% | 67.0% |
|
|
| area-scale p95 / p99 | 1.77 / 2.27 | 1.78 / 2.32 |
|
|
| sub-texel triangles | 569 (123 cm²) | **424 (30 cm², 0.14%)** |
|
|
|
|
The atlas transfer was re-verified on identical geometry — input rendered with culling off so the
|
|
comparison isolates the UV change: mean pixel \|Δ\| **0.0011**, p99 0.0118, 0.13% of body pixels over
|
|
0.05. It is still a faithful rehousing of her texture, not a new look.
|
|
|
|
## Still open
|
|
|
|
- **Speckle.** Small dark flecks remain over the shoulders, arms and belly — scan noise carried in
|
|
the texture, not an atlas artifact.
|
|
- **She reads glossy.** The `rm` map is still the neutralised median from the garment-removal pass.
|
|
- **The head is untouched original Tripo output** — the smearing at the nose and lips is source.
|
|
- **Extremity tone.** Her feet measure 0.11 luma darker and 50% redder than her belly, and the rosy
|
|
chest V is still there. Kept deliberately: Jeremy asked to preserve her original texture and
|
|
replace only the breast/underwear region. Note this disagrees with the approved turnaround
|
|
(`exchange/INBOX/lena-base-turnaround/`), which has uniform skin.
|
|
- **The breast/underwear re-authoring has not been done.** That is the next stage, and the
|
|
turnaround specifies it: featureless, no nipples, soft volume, smooth crotch.
|
|
|
|
## Lane hygiene
|
|
|
|
Two agents worked this folder on 2026-08-06 and the numbering collided twice: `20`/`21` and then
|
|
`32`/`33`/`34` (`32_ref_measure`/`33_bust_variants`/`34_apply_bust` from the sculpt pass vs
|
|
`32_skipprobe`/`33_ab`/`34_target_tone` from this one). Nothing was overwritten. Pick a fresh
|
|
number rather than assuming the next one is free.
|