feat(assets): Surface Deform pipeline and initial clothing set #98

Closed
jpmschweitzer wants to merge 0 commits from visual into main
Owner

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.
## 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.
jpmschweitzer added 3 commits 2026-03-22 16:58:33 +01:00
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>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

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

## 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`*
jpmschweitzer added 1 commit 2026-03-22 17:22:42 +01:00
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>
Author
Owner

Review: 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-review

## Review: 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-review`*
jpmschweitzer closed this pull request 2026-03-22 17:38:54 +01:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#98