Recess NPC eyes and sculpt the jaw and cheeks
This commit is contained in:
1 parent
15ab8c686d
commit
03c355e7c1
26 files changed
+117
-70
No files matched your search
+35
-30
@@ -1,10 +1,12 @@
|
||||
# NPC visual baseline and acceptance criteria
|
||||
|
||||
Status: baseline captured 2026-11-02; the first P1 fixes were applied the same
|
||||
day (tourist photo-prop visibility and backpack strap geometry). The face pass
|
||||
and the remaining body/clothing work are still open. The baseline remains the
|
||||
reference for the 0.9.4 NPC visual optimization; the post-fix comparison is
|
||||
[`blender_previews/sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg).
|
||||
Status: baseline captured 2026-11-02. The first P1 fixes (tourist photo-prop
|
||||
visibility, backpack straps), the neck/shoulder transition and the face-depth
|
||||
pass are applied. Remaining body/clothing work is 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-face.jpg`](blender_previews/sheet_npc_baseline_compare-face.jpg).
|
||||
|
||||
## What was captured
|
||||
|
||||
@@ -98,20 +100,19 @@ From `python3 tools/blender_assets.py fit` and the manifest:
|
||||
|
||||
| Character | Tris | Verts | Head width | Clothing radius | Notable gear clearances |
|
||||
| --- | ---: | ---: | ---: | ---: | --- |
|
||||
| `npc_casual` | 3,984 | 3,793 | 0.315 m | 0.191 m (hip) | backpack x −0.041, radial −0.162 |
|
||||
| `npc_jacket` | 4,384 | 4,130 | 0.315 m | 0.191 m (hip) | lanyard x −0.116, radial +0.023 (runtime +4 cm forward) |
|
||||
| `npc_coat` | 4,978 | 4,776 | 0.315 m | 0.225 m (skirt) | sunglasses width ratio 0.641; bag x +0.037, radial −0.130 |
|
||||
| `npc_vest` | 4,496 | 4,271 | 0.315 m | 0.191 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_dress` | 4,400 | 4,075 | 0.315 m | 0.260 m (skirt) | bag x +0.002, radial −0.095 |
|
||||
| `npc_hoodie` | 4,816 | 4,425 | 0.315 m | 0.190 m (hip) | — |
|
||||
| `npc_firefighter` | 4,848 | 4,831 | 0.315 m | 0.255 m (skirt) | helmet width ratio 1.651; SCBA x −0.105, radial −0.076 |
|
||||
| `npc_guard` | 4,558 | 4,652 | 0.315 m | 0.194 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_casual` | 3,760 | 3,556 | 0.315 m | 0.191 m (hip) | backpack x −0.041, radial −0.162 |
|
||||
| `npc_jacket` | 4,160 | 3,930 | 0.315 m | 0.191 m (hip) | lanyard x −0.116, radial +0.023 (runtime +4 cm forward) |
|
||||
| `npc_coat` | 4,754 | 4,574 | 0.315 m | 0.225 m (skirt) | sunglasses width ratio 0.641; bag x +0.037, radial −0.130 |
|
||||
| `npc_vest` | 4,272 | 4,186 | 0.315 m | 0.191 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_dress` | 4,176 | 3,863 | 0.315 m | 0.260 m (skirt) | bag x +0.002, radial −0.095 |
|
||||
| `npc_hoodie` | 4,592 | 4,187 | 0.315 m | 0.190 m (hip) | — |
|
||||
| `npc_firefighter` | 4,624 | 4,487 | 0.315 m | 0.255 m (skirt) | helmet width ratio 1.651; SCBA x −0.105, radial −0.076 |
|
||||
| `npc_guard` | 4,334 | 4,456 | 0.315 m | 0.194 m (hip) | cap width ratio 1.067 |
|
||||
|
||||
The widest character is `npc_firefighter` at 4,848 triangles and 4,831 vertices, so
|
||||
the current headroom is 1,152 triangles and 169 vertices per character. Any face
|
||||
or hand refinement must come out of that budget or replace existing detail. The
|
||||
refit backpack measures 380 triangles / 406 vertices; the character and gear
|
||||
table above remains valid because the character meshes did not change.
|
||||
The widest character is `npc_coat` at 4,754 triangles and 4,574 vertices, so the
|
||||
current headroom is 1,246 triangles and 426 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.
|
||||
|
||||
## Baseline findings, ranked
|
||||
|
||||
@@ -124,11 +125,12 @@ table above remains valid because the character meshes did not change.
|
||||
photo prop is now hidden outside `photo`/`film` poses
|
||||
(`photo_prop_visible_for_pose()`), so it only appears when the character is
|
||||
actually taking a picture; the after frame confirms one bag at rest.
|
||||
2. **The face is the largest portrait gap.** The eyes, nose and lips are
|
||||
readable but sit on a shallow, faceted head: the eye whites protrude, the
|
||||
eyelid/cheek transition is missing, and the mouth is a dark slot. This is
|
||||
intentionally stylized, but the head volume and eye socket are the first
|
||||
things a player sees at conversation range.
|
||||
2. **Face depth. Fixed 2026-11-02.** The sclera was recessed into the socket and
|
||||
wrapped with a thin upper lid; the separate jaw/cheek spheres were replaced
|
||||
by a chin plate and cheekbones sculpted into the head mesh. That removes the
|
||||
dark intersection rings that read as a beard shadow and keeps the mouth on
|
||||
the surface. The mouth bar and low-poly brows remain stylized, but the eye
|
||||
socket and jaw/cheek transition now read as one head volume.
|
||||
3. **Backpack straps read as rigid black bars. Refit 2026-11-02.** The straps
|
||||
were thin round tubes whose chest/waist points sat inside the torso, so only
|
||||
fragments showed from the front. They are now flattened bands whose front path
|
||||
@@ -182,17 +184,20 @@ python3 tools/npc_baseline.py compare \
|
||||
```
|
||||
|
||||
The comparison sheet places the before/after pair for each view side by side.
|
||||
The first run is committed as
|
||||
[`sheet_npc_baseline_compare-p1.jpg` and `sheet_npc_baseline_compare-body.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg);
|
||||
keep the baseline sheet as the before artifact and add a new numbered/after
|
||||
sheet rather than replacing it.
|
||||
The committed runs are
|
||||
[`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 [`sheet_npc_baseline_compare-face.jpg`](blender_previews/sheet_npc_baseline_compare-face.jpg).
|
||||
Keep the baseline sheet as the before artifact and add a new comparison sheet
|
||||
rather than replacing it.
|
||||
|
||||
## Next implementation order
|
||||
|
||||
1. Refine the head/eye socket/jaw volume without changing the face direction or
|
||||
the five tint slots.
|
||||
1. Improve the torso/hip transition and the remaining body-shape variation.
|
||||
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. Re-run the 48-frame baseline, the 96-frame final-context review, the 24-NPC
|
||||
4. Refine nose/lip/ear shapes only if the portrait pass still flags them after
|
||||
the hands and clothing read cleanly.
|
||||
5. Re-run the 48-frame baseline, the 96-frame final-context review, the 24-NPC
|
||||
budget and `blender_assets.py audit/fit`; publish the next comparison sheet.
|
||||
Reference in new issue
Block a user