fix(assets): address PR #96 review — all 8 items
- Fix stale 21→18 segment count in architecture doc, script docstrings, and disk budget table (critical — both reviewers) - Add average_m/README.md noting role as clothing reference body - Add __main__ guards to diagnostic scripts - Preflight-check all source paths in blender_process_bodies.py - Document solid-white hair masks as v0.2 placeholder for multi-region - Add fallback size comment for head mask generation - Add bald_mask.png (1×1 black) for sidecar convention consistency - Document child non-uniform scale rationale (Y=0.72 vs XZ=0.75) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -116,7 +116,7 @@ client/assets/characters/
|
||||
seg_eyes.glb
|
||||
seg_eyebrows.glb
|
||||
thin_f/
|
||||
... # Same 21 segment files
|
||||
... # Same 18 segment files
|
||||
average_m/
|
||||
...
|
||||
average_f/
|
||||
@@ -134,7 +134,7 @@ client/assets/characters/
|
||||
heavy_f/
|
||||
...
|
||||
child/ # Gender-neutral, forked from Teen
|
||||
... # Same 21 segments but different proportions
|
||||
... # Same 18 segments but different proportions
|
||||
skin_tones/
|
||||
pale_cool.png # Skin tone texture variants
|
||||
pale_warm.png # Shared across all body types --
|
||||
@@ -243,9 +243,9 @@ split from hair into their own directories because they are separate equip slots
|
||||
|
||||
### Why this structure
|
||||
|
||||
**Bodies are directories, not flat files.** Each body type produces 21 segment GLBs (17 base
|
||||
+ 2 swappable torso variants + 2 face detail). Putting them in flat `bodies/` with prefixes
|
||||
(`thin_m_seg_head.glb`) would create 231 files in one directory. Directories per body type
|
||||
**Bodies are directories, not flat files.** Each body type produces 18 segment GLBs (14 limb/body
|
||||
segments + 2 torso variants + 2 face detail). Putting them in flat `bodies/` with prefixes
|
||||
(`thin_m_seg_head.glb`) would create 198 files in one directory. Directories per body type
|
||||
keep segment files scannable and let the compositor construct paths programmatically:
|
||||
`bodies/{body_type}/seg_{segment}.glb`.
|
||||
|
||||
@@ -292,7 +292,7 @@ underscore-separated, no abbreviations beyond `m`/`f`. The GDScript and Rust enu
|
||||
`ThinM`, `ThinF`, `AverageM`, `AverageF`, `MuscularM`, `MuscularF`, `TeenM`, `TeenF`,
|
||||
`HeavyM`, `HeavyF`, `Child`.
|
||||
|
||||
### Body Segments (the 17 base + 2 swappable torso variants + 2 face detail)
|
||||
### Body Segments (14 limb/body segments + 2 torso variants + 2 face detail = 18 total)
|
||||
|
||||
From the spike validation and D-160. Fine-grained segmentation is required for per-limb
|
||||
addressability: amputation (hide limb, show stump cap), prosthetics (replace limb with
|
||||
@@ -342,7 +342,7 @@ boundary with the lower leg segment above ensures smooth deformation at the join
|
||||
The `seg_` prefix is load-bearing: it distinguishes segment GLBs from the `armature.glb` in
|
||||
the same directory and makes glob patterns simple (`seg_*.glb`).
|
||||
|
||||
Total per body type: 17 base segments + 2 swappable torso variants + 2 face detail = **21 GLB files**.
|
||||
Total per body type: 14 limb/body segments + 2 torso variants (full and upper) + 2 face detail = **18 GLB files**.
|
||||
|
||||
### Clothing Items
|
||||
|
||||
@@ -472,7 +472,7 @@ no branching.
|
||||
| Animation libraries | **Shared** | 2+ GLBs | UAL1 (core) + UAL2 (extended + female mannequin); animations work on all body types via shared skeleton |
|
||||
| Shaders (toon, toon_masked, outline) | **Shared** | 3 files | One copy in `characters/shaders/` |
|
||||
| Skin tone textures | **Shared** | 9 PNGs | Toon shader tints these -- same textures for all body types |
|
||||
| Body segments | **Per body type** | 21 GLBs x 11 types = 231 | Each body type has its own segments (incl. swappable torso variants) |
|
||||
| Body segments | **Per body type** | 18 GLBs x 11 types = 198 | Each body type has its own segments (incl. swappable torso variants) |
|
||||
| Clothing items | **Per body type** | 11 GLBs + 1 reference + 1 mask + 1 coverage per item | Authored once on reference, batch-fitted to 11 |
|
||||
| Recolor masks (clothing) | **Shared per item** | 1 PNG per item | UV layout preserved through Surface Deform |
|
||||
| Coverage metadata | **Shared per item** | 1 JSON per item | Declares which segments to hide and torso variant selection |
|
||||
@@ -509,7 +509,7 @@ Blender: fork/modify body shape (for thin, heavy, child -- 6 of 11 types)
|
||||
|-- OR: use as-is (average, muscular, teen -- 5 of 11 types)
|
||||
|
|
||||
v
|
||||
Blender: fine-grained segmentation (17 base + 2 swappable torso + 2 face detail = 21 GLBs)
|
||||
Blender: fine-grained segmentation (14 limb/body segments + 2 torso variants + 2 face detail = 18 GLBs)
|
||||
|
|
||||
v
|
||||
Export GLB (per segment / per clothing variant / per accessory)
|
||||
@@ -666,7 +666,7 @@ and torso variant selection.
|
||||
|---|---|---|---|---|
|
||||
| Skeleton | 1 | 1 | 1 | ~10 KB |
|
||||
| Animations | 3 (UAL1 + UAL2 + future) | 1 | 3 | ~4 MB |
|
||||
| Body segments | 11 types | 21 segs | 231 | ~2.2 MB |
|
||||
| Body segments | 11 types | 18 segs | 198 | ~2.2 MB |
|
||||
| Skin tones | 1 set | 9 | 9 | ~500 KB |
|
||||
| Head templates | 50 (v0.2) | 2 (GLB+mask) | 100 | ~5 MB |
|
||||
| Hair styles | 18 (v0.2, Source tier) | 2 (GLB+mask) | 36 | ~1.8 MB |
|
||||
|
||||
Reference in New Issue
Block a user