Refine the NPC nose, mouth and ears
This commit is contained in:
1 parent
7dc3d3c873
commit
12e70357c5
26 files changed
+80
-62
No files matched your search
@@ -96,8 +96,8 @@ All eight use the `npc_base` contract, so each one can replace
|
||||
variants (vertex count after seam splits; `CHAR_MAX_TRIS`/`CHAR_MAX_VERTS` in
|
||||
`tools/blender_assets.py`, raised from 6,000/5,000 on 2026-11-02). The frozen
|
||||
`npc_base` fallback keeps its original 6,000/4,000 contract. The current range
|
||||
is 4,042–5,034 triangles and 3,894–4,948 vertices, leaving room for the
|
||||
remaining face, grip and clothing detail.
|
||||
is 4,226–5,218 triangles and 4,119–5,240 vertices, leaving room for the
|
||||
remaining grip and clothing detail.
|
||||
|
||||
Construction: the torso and limbs are one continuous Skin-modifier mesh,
|
||||
subdivided twice, decimated to 26 % with X symmetry, and cut at the waist, cuffs,
|
||||
|
||||
@@ -48,6 +48,7 @@ Committed contact sheets and local Blender renders for the character, gear and p
|
||||
| <img src="sheet_npc_baseline_compare-body.jpg" width="280" alt="sheet_npc_baseline_compare-body.jpg"> | [`sheet_npc_baseline_compare-body.jpg`](sheet_npc_baseline_compare-body.jpg) |
|
||||
| <img src="sheet_npc_baseline_compare-face.jpg" width="280" alt="sheet_npc_baseline_compare-face.jpg"> | [`sheet_npc_baseline_compare-face.jpg`](sheet_npc_baseline_compare-face.jpg) |
|
||||
| <img src="sheet_npc_baseline_compare-torso.jpg" width="280" alt="sheet_npc_baseline_compare-torso.jpg"> | [`sheet_npc_baseline_compare-torso.jpg`](sheet_npc_baseline_compare-torso.jpg) |
|
||||
| <img src="sheet_npc_baseline_compare-face-detail.jpg" width="280" alt="sheet_npc_baseline_compare-face-detail.jpg"> | [`sheet_npc_baseline_compare-face-detail.jpg`](sheet_npc_baseline_compare-face-detail.jpg) |
|
||||
| <img src="sheet_npc_hands_compare.jpg" width="280" alt="sheet_npc_hands_compare.jpg"> | [`sheet_npc_hands_compare.jpg`](sheet_npc_hands_compare.jpg) |
|
||||
| <img src="sheet_npc_gear.jpg" width="280" alt="sheet_npc_gear.jpg"> | [`sheet_npc_gear.jpg`](sheet_npc_gear.jpg) |
|
||||
| <img src="sheet_props.jpg" width="280" alt="sheet_props.jpg"> | [`sheet_props.jpg`](sheet_props.jpg) |
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
@@ -42,7 +42,8 @@ Implemented so far:
|
||||
- NPC neck/shoulder transition (0.9.4 work): the body graph now uses a fuller neck base, a slightly tapered neck top and a lower shoulder root, giving the head/neck/shoulder line a trapezius slope instead of a thin post. The full character library was rebuilt with a final degenerate-face cleanup; the baseline comparison is `sheet_npc_baseline_compare-body.jpg`.
|
||||
- NPC face-depth pass (0.9.4 work): sclera are recessed and capped by a thin upper lid, and the separate jaw/cheek spheres are replaced by a chin plate and cheekbones sculpted into the head mesh. The full library was rebuilt; the comparison is `sheet_npc_baseline_compare-face.jpg`.
|
||||
- NPC torso/hip transition (0.9.4 work): the pelvis and chest are slightly wider than the waist, giving shirts and jackets a readable taper into the hips without changing the build multipliers or the skeleton. The comparison is `sheet_npc_baseline_compare-torso.jpg`.
|
||||
- NPC mesh budget (0.9.4 work): the eight library variants now have an 8,000-triangle / 8,000-glTF-vertex cap (up from 6,000/5,000); the `npc_base` fallback remains 6,000/4,000. Current characters measure 4,042–5,034 triangles and 3,894–4,948 vertices.
|
||||
- NPC mesh budget (0.9.4 work): the eight library variants now have an 8,000-triangle / 8,000-glTF-vertex cap (up from 6,000/5,000); the `npc_base` fallback remains 6,000/4,000. Current characters measure 4,226–5,218 triangles and 4,119–5,240 vertices.
|
||||
- NPC face-detail pass (0.9.4 work): ala wings and a smaller nose bridge/tip, one rounded mouth slot, and a darker ear concha; all eight rebuilt. The comparison is `sheet_npc_baseline_compare-face-detail.jpg`.
|
||||
- NPC hand pass (0.9.4 work): wider, shallower palms; four two-segment bent fingers with rounded tips and a separate bent thumb; optional `--view=hand` capture at 0.80 m. The hand comparison is `sheet_npc_hands_compare.jpg`; item grip offsets remain open.
|
||||
- NPC proportion audit (0.9.4 work): `tools/npc_proportions.py` measures all eight GLBs against a stylized height/head/shoulder/hip/torso/leg/arm/foot guide. All variants pass; the head and broad-build silhouettes are the nearest upper bounds. Results are in [`npc-proportion-audit.md`](npc-proportion-audit.md).
|
||||
- NPC P1 portrait fixes (0.9.4 work): tourists now hide their photo-pose camera bag outside `photo`/`film` poses, removing the duplicate-backpack silhouette; the backpack gear was rebuilt with flattened, forward chest straps and a fresh AO map. The before/after sheet is [`blender_previews/sheet_npc_baseline_compare-p1.jpg`](blender_previews/sheet_npc_baseline_compare-p1.jpg); the face and remaining clothing/hand work stay open.
|
||||
|
||||
+20
-19
@@ -8,6 +8,7 @@ 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)
|
||||
the latest [`sheet_npc_baseline_compare-torso.jpg`](blender_previews/sheet_npc_baseline_compare-torso.jpg),
|
||||
the face-detail pass [`sheet_npc_baseline_compare-face-detail.jpg`](blender_previews/sheet_npc_baseline_compare-face-detail.jpg),
|
||||
and the conversation-distance hand pass
|
||||
[`sheet_npc_hands_compare.jpg`](blender_previews/sheet_npc_hands_compare.jpg).
|
||||
|
||||
@@ -115,17 +116,17 @@ From `python3 tools/blender_assets.py fit` and the manifest:
|
||||
|
||||
| Character | Tris | Verts | Head width | Clothing radius | Notable gear clearances |
|
||||
| --- | ---: | ---: | ---: | ---: | --- |
|
||||
| `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 |
|
||||
| `npc_casual` | 4,226 | 4,119 | 0.315 m | 0.191 m (hip) | backpack x −0.041, radial −0.162 |
|
||||
| `npc_jacket` | 4,616 | 4,447 | 0.315 m | 0.191 m (hip) | lanyard x −0.116, radial +0.023 (runtime +4 cm forward) |
|
||||
| `npc_coat` | 5,218 | 4,975 | 0.315 m | 0.225 m (skirt) | sunglasses width ratio 0.641; bag x +0.037, radial −0.130 |
|
||||
| `npc_vest` | 4,724 | 4,713 | 0.315 m | 0.191 m (hip) | cap width ratio 1.067 |
|
||||
| `npc_dress` | 4,644 | 4,439 | 0.315 m | 0.260 m (skirt) | bag x +0.002, radial −0.095 |
|
||||
| `npc_hoodie` | 5,048 | 4,712 | 0.315 m | 0.190 m (hip) | — |
|
||||
| `npc_firefighter` | 5,088 | 5,240 | 0.315 m | 0.255 m (skirt) | helmet width ratio 1.651; SCBA x −0.105, radial −0.076 |
|
||||
| `npc_guard` | 4,790 | 4,865 | 0.315 m | 0.194 m (hip) | cap width ratio 1.067 |
|
||||
|
||||
`npc_coat` is widest at 5,034 triangles (2,966 below the 8,000 cap);
|
||||
`npc_firefighter` is closest on vertices at 4,948 (3,052 below the 8,000 cap).
|
||||
`npc_coat` is widest at 5,218 triangles (2,782 below the 8,000 cap);
|
||||
`npc_firefighter` is closest on vertices at 5,240 (2,760 below the 8,000 cap).
|
||||
The refit backpack measures 380 triangles / 406 vertices.
|
||||
|
||||
## Baseline findings, ranked
|
||||
@@ -139,12 +140,13 @@ The refit backpack measures 380 triangles / 406 vertices.
|
||||
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. **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.
|
||||
2. **Face depth and detail. 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. The nose
|
||||
now has ala wings and a smaller bridge/tip, the mouth is one rounded slot
|
||||
instead of a flat bar, and the ears have a darker concha. That removes the
|
||||
dark intersection rings and the moustache-like read at portrait distance; the
|
||||
low-poly brows remain stylized.
|
||||
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
|
||||
@@ -206,6 +208,7 @@ 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 face-detail pass is [`sheet_npc_baseline_compare-face-detail.jpg`](blender_previews/sheet_npc_baseline_compare-face-detail.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.
|
||||
@@ -217,7 +220,5 @@ rather than replacing it.
|
||||
2. Add the remaining body-shape variation between variants and re-measure the
|
||||
LOD/impostor silhouettes.
|
||||
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.
|
||||
5. Re-run the 48-frame baseline, the 96-frame final-context review, the 24-NPC
|
||||
4. 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