Rebuild the NPC hands and add a hand capture
This commit is contained in:
1 parent
48082c3dfa
commit
24c939d388
27 files changed
+107
-57
No files matched your search
+41
-23
@@ -1,12 +1,15 @@
|
||||
# NPC visual baseline and acceptance criteria
|
||||
|
||||
Status: baseline captured 2026-11-02. The first P1 fixes (tourist photo-prop
|
||||
visibility, backpack straps), the neck/shoulder and torso/hip transitions and
|
||||
the face-depth pass are applied. Remaining hand/clothing work is open; the
|
||||
baseline remains the reference for 0.9.4. Comparison sheets:
|
||||
Status: baseline captured 2026-11-02. The P1 fixes (tourist photo-prop
|
||||
visibility, backpack straps), the neck/shoulder and torso/hip transitions, the
|
||||
face-depth pass and the first hand pass are applied. Hand-item grip alignment
|
||||
and clothing work remain open; the baseline remains the reference for 0.9.4.
|
||||
Comparison sheets:
|
||||
[`sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg),
|
||||
[`sheet_npc_baseline_compare-body.jpg`](blender_previews/sheet_npc_baseline_compare-body.jpg)
|
||||
and the latest [`sheet_npc_baseline_compare-torso.jpg`](blender_previews/sheet_npc_baseline_compare-torso.jpg).
|
||||
the latest [`sheet_npc_baseline_compare-torso.jpg`](blender_previews/sheet_npc_baseline_compare-torso.jpg),
|
||||
and the conversation-distance hand pass
|
||||
[`sheet_npc_hands_compare.jpg`](blender_previews/sheet_npc_hands_compare.jpg).
|
||||
|
||||
## What was captured
|
||||
|
||||
@@ -37,6 +40,17 @@ python3 tools/npc_baseline.py sheet --dir tmp/npc-baseline
|
||||
|
||||
The 48 raw PNGs are local QA under `tmp/` (gitignored). The committed contact
|
||||
sheet is [`blender_previews/sheet_npc_baseline.jpg`](blender_previews/sheet_npc_baseline.jpg).
|
||||
For the P2 hand/grip check there is an optional eighth view, captured separately
|
||||
so the 48-frame baseline stays stable:
|
||||
|
||||
```bash
|
||||
godot --path . --script res://src/test/capture_npc_baseline.gd -- \
|
||||
--out=res://tmp/npc-hands --view=hand
|
||||
```
|
||||
|
||||
That writes eight `*__hand.png` frames at 0.80 m from the right hand; the
|
||||
before/after review image is
|
||||
[`sheet_npc_hands_compare.jpg`](blender_previews/sheet_npc_hands_compare.jpg).
|
||||
The capture is deterministic apart from engine rasterisation; re-running into
|
||||
the same directory keeps the earlier files and writes `-vN` copies rather than
|
||||
overwriting them.
|
||||
@@ -100,19 +114,19 @@ From `python3 tools/blender_assets.py fit` and the manifest:
|
||||
|
||||
| Character | Tris | Verts | Head width | Clothing radius | Notable gear clearances |
|
||||
| --- | ---: | ---: | ---: | ---: | --- |
|
||||
| `npc_casual` | 3,762 | 3,474 | 0.315 m | 0.191 m (hip) | backpack x −0.041, radial −0.162 |
|
||||
| `npc_jacket` | 4,152 | 3,900 | 0.315 m | 0.191 m (hip) | lanyard x −0.116, radial +0.023 (runtime +4 cm forward) |
|
||||
| `npc_coat` | 4,754 | 4,584 | 0.315 m | 0.225 m (skirt) | sunglasses width ratio 0.641; bag x +0.037, radial −0.130 |
|
||||
| `npc_vest` | 4,260 | 4,183 | 0.315 m | 0.191 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_dress` | 4,180 | 3,863 | 0.315 m | 0.260 m (skirt) | bag x +0.002, radial −0.095 |
|
||||
| `npc_hoodie` | 4,584 | 4,294 | 0.315 m | 0.190 m (hip) | — |
|
||||
| `npc_firefighter` | 4,624 | 4,583 | 0.315 m | 0.255 m (skirt) | helmet width ratio 1.651; SCBA x −0.105, radial −0.076 |
|
||||
| `npc_guard` | 4,326 | 4,443 | 0.315 m | 0.194 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_casual` | 4,042 | 3,894 | 0.315 m | 0.191 m (hip) | backpack x −0.041, radial −0.162 |
|
||||
| `npc_jacket` | 4,432 | 4,265 | 0.315 m | 0.191 m (hip) | lanyard x −0.116, radial +0.023 (runtime +4 cm forward) |
|
||||
| `npc_coat` | 5,034 | 4,814 | 0.315 m | 0.225 m (skirt) | sunglasses width ratio 0.641; bag x +0.037, radial −0.130 |
|
||||
| `npc_vest` | 4,540 | 4,503 | 0.315 m | 0.191 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_dress` | 4,460 | 4,191 | 0.315 m | 0.260 m (skirt) | bag x +0.002, radial −0.095 |
|
||||
| `npc_hoodie` | 4,864 | 4,506 | 0.315 m | 0.190 m (hip) | — |
|
||||
| `npc_firefighter` | 4,904 | 4,948 | 0.315 m | 0.255 m (skirt) | helmet width ratio 1.651; SCBA x −0.105, radial −0.076 |
|
||||
| `npc_guard` | 4,606 | 4,679 | 0.315 m | 0.194 m (hip) | cap width ratio 1.067 |
|
||||
|
||||
The widest character is `npc_coat` at 4,754 triangles and 4,584 vertices, so the
|
||||
current headroom is 1,246 triangles and 416 vertices per character. Any hand or
|
||||
clothing refinement must come out of that budget or replace existing detail. The
|
||||
refit backpack measures 380 triangles / 406 vertices.
|
||||
`npc_coat` is widest at 5,034 triangles (966 below the cap); `npc_firefighter` is
|
||||
closest on vertices at 4,948 (only 52 below the 5,000 cap). Any further hand or
|
||||
clothing detail must replace existing geometry rather than adding it. The refit
|
||||
backpack measures 380 triangles / 406 vertices.
|
||||
|
||||
## Baseline findings, ranked
|
||||
|
||||
@@ -140,9 +154,12 @@ refit backpack measures 380 triangles / 406 vertices.
|
||||
|
||||
### P2 — fix after the first P1 pass
|
||||
|
||||
4. **Hands and grips are not proven at conversation distance.** The full-body
|
||||
frame shows small block hands; the camera, phone and clipboard need a
|
||||
close-up grip check before the hand mesh is accepted.
|
||||
4. **Hands: first pass fixed 2026-11-02; grip alignment still open.** The palm
|
||||
is wider and shallower, and each finger is now a two-segment bent tube with a
|
||||
rounded tip and a separate bent thumb. The hand capture shows a readable
|
||||
four-finger hand instead of flat bars. The camera, phone, cup, clipboard and
|
||||
sign still need their attach offsets checked: several props occlude the palm
|
||||
or read as floating beside it.
|
||||
5. **Clothing detail is tile-driven and transitional seams are visible.** The
|
||||
fabric pattern repeats strongly on the casual, coat and dress variants, and
|
||||
collar/cuff/waist edges are abrupt. This is more visible than the shoe/hem
|
||||
@@ -189,15 +206,16 @@ The committed runs are
|
||||
[`sheet_npc_baseline_compare-body.jpg`](blender_previews/sheet_npc_baseline_compare-body.jpg)
|
||||
and [`sheet_npc_baseline_compare-face.jpg`](blender_previews/sheet_npc_baseline_compare-face.jpg).
|
||||
The transition pass is [`sheet_npc_baseline_compare-torso.jpg`](blender_previews/sheet_npc_baseline_compare-torso.jpg).
|
||||
The hand pass is [`sheet_npc_hands_compare.jpg`](blender_previews/sheet_npc_hands_compare.jpg).
|
||||
Keep the baseline sheet as the before artifact and add a new comparison sheet
|
||||
rather than replacing it.
|
||||
|
||||
## Next implementation order
|
||||
|
||||
1. Add the remaining body-shape variation between variants and re-measure the
|
||||
1. Fix hand-item grip offsets (phone, cup, clipboard, camera, sign, flashlight,
|
||||
wand and radio) against the new palm/finger geometry.
|
||||
2. Add the remaining body-shape variation between variants and re-measure the
|
||||
LOD/impostor silhouettes.
|
||||
2. Add a conversation-distance hand/grip capture and fix hand geometry before
|
||||
judging hand items.
|
||||
3. Audit hems and footwear in walk/sit/block poses.
|
||||
4. Refine nose/lip/ear shapes only if the portrait pass still flags them after
|
||||
the hands and clothing read cleanly.
|
||||
|
||||
Reference in new issue
Block a user