Surface Deform batch pipeline (tooling/blender_surface_deform_batch.py): headless Blender script that fits a reference clothing GLB to all 11 body types via Surface Deform modifier. Confirmed HIGH reliability in Blender 5.0 with temp_override.
Initial clothing set — reference meshes and batch fit
done
Notes
Reference meshes are placeholder quality (body segments + outward normal offset). Visual verification at gameplay zoom recommended before treating as production-ready, especially heavy_m, heavy_f, and child variants.
Surface Deform headless bind works reliably — upgrades from MEDIUM to HIGH confidence per VERDICT.md open question.
All Surface Deform binds succeeded with no Shrinkwrap fallbacks needed.
## Summary
- **Surface Deform batch pipeline** (`tooling/blender_surface_deform_batch.py`): headless Blender script that fits a reference clothing GLB to all 11 body types via Surface Deform modifier. Confirmed HIGH reliability in Blender 5.0 with `temp_override`.
- **Initial clothing set**: 5 placeholder items (coveralls_basic, jacket_utility, pants_cargo, shirt_henley, boots_work) × 11 body types = 60 fitted GLBs in `client/assets/characters/clothing/`.
- **Helper scripts**: procedural reference mesh creator and metadata generator for coverage.json + recolor masks.
Closes #710, #711.
## Tickets
| ID | Title | Status |
|----|-------|--------|
| #710 | Surface Deform batch pipeline (Blender tooling) | done |
| #711 | Initial clothing set — reference meshes and batch fit | done |
## Notes
- Reference meshes are placeholder quality (body segments + outward normal offset). Visual verification at gameplay zoom recommended before treating as production-ready, especially heavy_m, heavy_f, and child variants.
- Surface Deform headless bind works reliably — upgrades from MEDIUM to HIGH confidence per VERDICT.md open question.
- All Surface Deform binds succeeded with no Shrinkwrap fallbacks needed.
Three new Blender/Python scripts for the clothing production pipeline:
- blender_surface_deform_batch.py: fits a reference clothing GLB to all
11 body types via Surface Deform modifier in headless mode
- blender_create_clothing_refs.py: procedurally creates placeholder
reference meshes from average_m body segments
- setup_clothing_metadata.py: generates coverage.json and
reference_mask.png for each clothing item
Surface Deform headless bind confirmed working in Blender 5.0 via
temp_override — upgrades confidence from MEDIUM to HIGH (#710).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Five placeholder clothing items fitted to all 11 body types via the
Surface Deform batch pipeline (60 GLBs total):
- coveralls_basic, jacket_utility, pants_cargo, shirt_henley, boots_work
Each item includes reference.glb, reference_mask.png, coverage.json,
and 11 body-type variant GLBs. All Surface Deform binds succeeded
with no Shrinkwrap fallbacks needed (#711).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
torso_upper in hides when torso_variant: "full" — redundant/incorrect per spec. Remove from all three + the generator script.
2
Script placement
suggestion
Scripts in tooling/ flat vs arch doc saying tooling/blender/ — doc is aspirational, not a blocker
3
Shrinkwrap fallback
suggestion
Needs visual sign-off ticket for extreme body types
Araminta (Art Direction): APPROVE
Pipeline is solid, initial clothing set is genre-correct (industrial sci-fi). Coverage metadata is correct.
#
File
Severity
Issue
1
setup_clothing_metadata.py
suggestion
Add authoring note about pants_cargo foot segment distinction
2
All coverage.json
suggestion
torso_variant: "upper" path is dormant/untested
3
Pipeline output
suggestion
Add pipeline_log.json for Surface Deform vs Shrinkwrap provenance
4
Heavy body types
suggestion
Verify heavy_m/f coveralls at gameplay zoom before treating as production
Verdict: CHANGES REQUESTED
One fix needed: remove torso_upper from hides in 3 coverage.json files + the generator script (setup_clothing_metadata.py). This is a semantic error per the spec — when torso_variant is "full", seg_torso_upper is never loaded, so listing it in hides is redundant at best and a compositor warning at worst.
Reviewed by Hoshe (QA) and Araminta (art direction) via /pr-review
## Review: visual -> main (type: visual) — PR #98
### Hoshe (QA): REQUEST_CHANGES
Asset set is complete (5 items × 14 files each). Pipeline scripts well-structured with proper guards and error handling.
| # | File | Severity | Issue |
|---|------|----------|-------|
| 1 | `coveralls_basic/coverage.json`, `jacket_utility/coverage.json`, `shirt_henley/coverage.json` | warning | `torso_upper` in `hides` when `torso_variant: "full"` — redundant/incorrect per spec. Remove from all three + the generator script. |
| 2 | Script placement | suggestion | Scripts in `tooling/` flat vs arch doc saying `tooling/blender/` — doc is aspirational, not a blocker |
| 3 | Shrinkwrap fallback | suggestion | Needs visual sign-off ticket for extreme body types |
### Araminta (Art Direction): APPROVE
Pipeline is solid, initial clothing set is genre-correct (industrial sci-fi). Coverage metadata is correct.
| # | File | Severity | Issue |
|---|------|----------|-------|
| 1 | `setup_clothing_metadata.py` | suggestion | Add authoring note about pants_cargo foot segment distinction |
| 2 | All coverage.json | suggestion | `torso_variant: "upper"` path is dormant/untested |
| 3 | Pipeline output | suggestion | Add `pipeline_log.json` for Surface Deform vs Shrinkwrap provenance |
| 4 | Heavy body types | suggestion | Verify `heavy_m/f` coveralls at gameplay zoom before treating as production |
### Verdict: CHANGES REQUESTED
One fix needed: remove `torso_upper` from `hides` in 3 coverage.json files + the generator script (`setup_clothing_metadata.py`). This is a semantic error per the spec — when `torso_variant` is `"full"`, `seg_torso_upper` is never loaded, so listing it in `hides` is redundant at best and a compositor warning at worst.
---
*Reviewed by Hoshe (QA) and Araminta (art direction) via `/pr-review`*
Warning fix:
- Remove torso_upper from hides in 3 coverage.json files
(coveralls_basic, jacket_utility, shirt_henley) and the generator
script — redundant when torso_variant is "full"
Suggestions addressed:
- Add pants_cargo authoring note about foot segment distinction
- Add pipeline_log.json provenance output to Surface Deform batch
pipeline (tracks method per variant: surface_deform/shrinkwrap/copy)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
tooling/blender_surface_deform_batch.py): headless Blender script that fits a reference clothing GLB to all 11 body types via Surface Deform modifier. Confirmed HIGH reliability in Blender 5.0 withtemp_override.client/assets/characters/clothing/.Closes #710, #711.
Tickets
Notes
Review: visual -> main (type: visual) — PR #98
Hoshe (QA): REQUEST_CHANGES
Asset set is complete (5 items × 14 files each). Pipeline scripts well-structured with proper guards and error handling.
coveralls_basic/coverage.json,jacket_utility/coverage.json,shirt_henley/coverage.jsontorso_upperinhideswhentorso_variant: "full"— redundant/incorrect per spec. Remove from all three + the generator script.tooling/flat vs arch doc sayingtooling/blender/— doc is aspirational, not a blockerAraminta (Art Direction): APPROVE
Pipeline is solid, initial clothing set is genre-correct (industrial sci-fi). Coverage metadata is correct.
setup_clothing_metadata.pytorso_variant: "upper"path is dormant/untestedpipeline_log.jsonfor Surface Deform vs Shrinkwrap provenanceheavy_m/fcoveralls at gameplay zoom before treating as productionVerdict: CHANGES REQUESTED
One fix needed: remove
torso_upperfromhidesin 3 coverage.json files + the generator script (setup_clothing_metadata.py). This is a semantic error per the spec — whentorso_variantis"full",seg_torso_upperis never loaded, so listing it inhidesis redundant at best and a compositor warning at worst.Reviewed by Hoshe (QA) and Araminta (art direction) via
/pr-reviewReview: visual -> main — PR #98 Round 2
Hoshe (QA): APPROVE
All 4 fixes verified. torso_upper removed from all 3 coverage.json files + generator script. pipeline_log.json provenance output confirmed. pants_cargo authoring note present.
Araminta (Art Direction): APPROVE
Round 1 approval stands. torso_upper removal verified.
Verdict: APPROVED
Re-reviewed by Hoshe (QA) and Araminta (art direction) via
/pr-reviewPull request closed