fix(assets): T-1090 — five fork bodies rebuilt; mesh+armature scale baked together
Root cause was double: (1) segment_body's apply_scale scaled fork MESH vertices but not each segment's embedded armature — the shared-skeleton compositor relocates segments by bone name, so internally-inconsistent segments exploded (child worst at 0.72x: head bone 0.35m above its mesh — detached heads, spider arms); (2) thin/heavy were stale high-poly artifacts from an older segmentation, missing seg_hips. Fix: apply_fork_scale bakes mesh AND embedded armature via transform_apply (edit-bone poking shears chains — first attempt proved it); new blender_rebuild_forks.py rebuilds exactly the five from the owned UBC Source exports. All five now 19 low-poly segments matching the healthy six. QA on the real compositor (idle+walk, front+side): 5/5 coherent; healthy controls unchanged. Q-060 answered at the extremes: 15/15 peasant-garment Surface Deform binds on the forks, zero shrinkwrap fallbacks, no bust-through — the 6-of-11 placeholder debt is paid (fork garment variants included). Follow-up filed: T-1094 (child/teen composite at adult height — pre-existing shared-skeleton normalization, not a regression). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@@ -1,20 +1,19 @@
|
||||
# Fork body type — auto-generated from mesh scaling
|
||||
# Fork body type — auto-generated from mesh + armature scaling (T-1090)
|
||||
|
||||
This directory contains **child** body segments, generated by applying
|
||||
a proportional mesh scale to the source body (Teen_Male_FullBody.gltf):
|
||||
This directory contains **child** body segments, generated by applying a
|
||||
proportional scale to the source body (Teen_Male_FullBody.gltf) mesh AND its armature rest pose
|
||||
together, then segmenting:
|
||||
|
||||
Scale: (0.75, 0.72, 0.75)
|
||||
|
||||
The Y scale (0.72) differs from XZ (0.75) intentionally: children have different
|
||||
proportions from adults. They are not simply uniformly smaller — their limbs are
|
||||
shorter relative to torso height (Y) compared to torso width/depth (XZ). The
|
||||
non-uniform scale captures this: the child is 75% of teen width/depth but only
|
||||
72% of teen height, reflecting the head-to-body ratio and limb length differences
|
||||
typical of pre-teen proportions.
|
||||
The scale is applied to the mesh vertices and the embedded armature rest pose
|
||||
with the SAME affine (T-1090 fix). This keeps each segment internally consistent
|
||||
with its own skeleton, which the shared-skeleton compositor
|
||||
(character_visual.gd) requires — a mesh-only scale detaches the head and
|
||||
explodes the limbs on relocation.
|
||||
|
||||
These segments are APPROXIMATE. They produce a visually distinct silhouette
|
||||
but are not artist-authored from scratch. Review the proportions and refine
|
||||
the base mesh manually if the auto-scale result is not satisfactory.
|
||||
Cross-sectional differentiation (thin = narrow, heavy = wide) survives the
|
||||
composite; global height normalises to the shared skeleton (see T-1090 report /
|
||||
Q-060 for the shared-skeleton scale-normalisation note).
|
||||
|
||||
Status: auto-generated, needs artist review
|
||||
Sprint 28 — visual team
|
||||
Status: auto-generated (rebuilt T-1090), 18 segments incl. seg_hips
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
# Fork body type — auto-generated from mesh scaling
|
||||
# Fork body type — auto-generated from mesh + armature scaling (T-1090)
|
||||
|
||||
This directory contains **heavy_f** body segments, generated by applying
|
||||
a proportional mesh scale to the source body (Regular_Female_FullBody.gltf):
|
||||
This directory contains **heavy_f** body segments, generated by applying a
|
||||
proportional scale to the source body (Regular_Female_FullBody.gltf) mesh AND its armature rest pose
|
||||
together, then segmenting:
|
||||
|
||||
Scale: (1.20, 1.08, 1.00)
|
||||
|
||||
These segments are APPROXIMATE. They produce a visually distinct silhouette
|
||||
but are not artist-authored from scratch. Review the proportions and refine
|
||||
the base mesh manually if the auto-scale result is not satisfactory.
|
||||
The scale is applied to the mesh vertices and the embedded armature rest pose
|
||||
with the SAME affine (T-1090 fix). This keeps each segment internally consistent
|
||||
with its own skeleton, which the shared-skeleton compositor
|
||||
(character_visual.gd) requires — a mesh-only scale detaches the head and
|
||||
explodes the limbs on relocation.
|
||||
|
||||
Status: auto-generated, needs artist review
|
||||
Sprint 28 — visual team
|
||||
Cross-sectional differentiation (thin = narrow, heavy = wide) survives the
|
||||
composite; global height normalises to the shared skeleton (see T-1090 report /
|
||||
Q-060 for the shared-skeleton scale-normalisation note).
|
||||
|
||||
Status: auto-generated (rebuilt T-1090), 18 segments incl. seg_hips
|
||||
|
||||
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 3.7 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
@@ -1,13 +1,19 @@
|
||||
# Fork body type — auto-generated from mesh scaling
|
||||
# Fork body type — auto-generated from mesh + armature scaling (T-1090)
|
||||
|
||||
This directory contains **heavy_m** body segments, generated by applying
|
||||
a proportional mesh scale to the source body (Regular_Male_FullBody.gltf):
|
||||
This directory contains **heavy_m** body segments, generated by applying a
|
||||
proportional scale to the source body (Regular_Male_FullBody.gltf) mesh AND its armature rest pose
|
||||
together, then segmenting:
|
||||
|
||||
Scale: (1.20, 1.08, 1.00)
|
||||
|
||||
These segments are APPROXIMATE. They produce a visually distinct silhouette
|
||||
but are not artist-authored from scratch. Review the proportions and refine
|
||||
the base mesh manually if the auto-scale result is not satisfactory.
|
||||
The scale is applied to the mesh vertices and the embedded armature rest pose
|
||||
with the SAME affine (T-1090 fix). This keeps each segment internally consistent
|
||||
with its own skeleton, which the shared-skeleton compositor
|
||||
(character_visual.gd) requires — a mesh-only scale detaches the head and
|
||||
explodes the limbs on relocation.
|
||||
|
||||
Status: auto-generated, needs artist review
|
||||
Sprint 28 — visual team
|
||||
Cross-sectional differentiation (thin = narrow, heavy = wide) survives the
|
||||
composite; global height normalises to the shared skeleton (see T-1090 report /
|
||||
Q-060 for the shared-skeleton scale-normalisation note).
|
||||
|
||||
Status: auto-generated (rebuilt T-1090), 18 segments incl. seg_hips
|
||||
|
||||
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 3.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
@@ -1,13 +1,19 @@
|
||||
# Fork body type — auto-generated from mesh scaling
|
||||
# Fork body type — auto-generated from mesh + armature scaling (T-1090)
|
||||
|
||||
This directory contains **thin_f** body segments, generated by applying
|
||||
a proportional mesh scale to the source body (Regular_Female_FullBody.gltf):
|
||||
This directory contains **thin_f** body segments, generated by applying a
|
||||
proportional scale to the source body (Regular_Female_FullBody.gltf) mesh AND its armature rest pose
|
||||
together, then segmenting:
|
||||
|
||||
Scale: (0.82, 1.00, 0.88)
|
||||
|
||||
These segments are APPROXIMATE. They produce a visually distinct silhouette
|
||||
but are not artist-authored from scratch. Review the proportions and refine
|
||||
the base mesh manually if the auto-scale result is not satisfactory.
|
||||
The scale is applied to the mesh vertices and the embedded armature rest pose
|
||||
with the SAME affine (T-1090 fix). This keeps each segment internally consistent
|
||||
with its own skeleton, which the shared-skeleton compositor
|
||||
(character_visual.gd) requires — a mesh-only scale detaches the head and
|
||||
explodes the limbs on relocation.
|
||||
|
||||
Status: auto-generated, needs artist review
|
||||
Sprint 28 — visual team
|
||||
Cross-sectional differentiation (thin = narrow, heavy = wide) survives the
|
||||
composite; global height normalises to the shared skeleton (see T-1090 report /
|
||||
Q-060 for the shared-skeleton scale-normalisation note).
|
||||
|
||||
Status: auto-generated (rebuilt T-1090), 18 segments incl. seg_hips
|
||||
|
||||
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 3.7 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
@@ -1,13 +1,19 @@
|
||||
# Fork body type — auto-generated from mesh scaling
|
||||
# Fork body type — auto-generated from mesh + armature scaling (T-1090)
|
||||
|
||||
This directory contains **thin_m** body segments, generated by applying
|
||||
a proportional mesh scale to the source body (Regular_Male_FullBody.gltf):
|
||||
This directory contains **thin_m** body segments, generated by applying a
|
||||
proportional scale to the source body (Regular_Male_FullBody.gltf) mesh AND its armature rest pose
|
||||
together, then segmenting:
|
||||
|
||||
Scale: (0.82, 1.00, 0.88)
|
||||
|
||||
These segments are APPROXIMATE. They produce a visually distinct silhouette
|
||||
but are not artist-authored from scratch. Review the proportions and refine
|
||||
the base mesh manually if the auto-scale result is not satisfactory.
|
||||
The scale is applied to the mesh vertices and the embedded armature rest pose
|
||||
with the SAME affine (T-1090 fix). This keeps each segment internally consistent
|
||||
with its own skeleton, which the shared-skeleton compositor
|
||||
(character_visual.gd) requires — a mesh-only scale detaches the head and
|
||||
explodes the limbs on relocation.
|
||||
|
||||
Status: auto-generated, needs artist review
|
||||
Sprint 28 — visual team
|
||||
Cross-sectional differentiation (thin = narrow, heavy = wide) survives the
|
||||
composite; global height normalises to the shared skeleton (see T-1090 report /
|
||||
Q-060 for the shared-skeleton scale-normalisation note).
|
||||
|
||||
Status: auto-generated (rebuilt T-1090), 18 segments incl. seg_hips
|
||||
|
||||