tailor(mako): kilt v2 on Mako via Lena donor-swap -- MD rejects all Mako meshes

First male garment through the MD lane. MD's body analyzer rejects every
Tripo-Mako-derived mesh (0 arrangement points, 'avatar must be in T-pose or
A-pose' despite a verified 0.4-deg-perfect skeleton; same wall as ariki-game
e244e8a). Chimera test pins it on the MESH -- Lena's mesh on Mako's armature
gets 109 points. Ruled out: finger weights, decimation, head/hand chops, leg
spread, rename, OBJ import, export settings.

Workaround that ships: arrange+sew+elastic-lock the garment on a 1.07x-scaled
LENA donor, ImportFBX Mako with bAdd, DeleteAvatar(Lena), re-settle. A
seamless single-wrap slides off Mako's legs during the swap -- only SEWN
garments survive it, so the flat pattern's wrap reads are faked: overlap flap
seamed to a split front-waist segment, comb-teeth fringe (piupiu technique)
carved into the hem, rope belt as rigid Blender geometry (build_rope_belt.py).

Other findings baked into work/mako_kilt_v1/ scripts + config:
- fabric texture anchor: pattern y=0 maps to texture v=0.5 and WRAPS
  (striped-probe verified; make_kilt_cloth.py mm_from_row)
- waist elastic never reaches TotalLength at default strength; strength 60
  moved placement from 1.019 to 1.043
- SetAvatarActivation returns False (unusable); GetArrangementList dies on
  any scene avatar mutation

QC PASS (turntable render, alpha mask, height 1.818): top 1.063 vs 1.054
target (tol .03), fringe tips 0.666 vs 0.665 (tol .04).

Avatars: _fingers = full finger weights restored via UV-space transfer from
rig-work/mako_fullhead_rigged.fbx (build_mako_avatar_fingers.py); shipped-body
avatar landed for future diagnosis. v1 (pre-flap/teeth) kept as provenance.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Can Narin
2026-08-18 16:21:16 +03:00
parent 9ac741302e
commit fea96bf582
47 changed files with 1450 additions and 0 deletions
+122
View File
@@ -0,0 +1,122 @@
{
"name": "mako_kilt_v1",
"_worksheet": {
"block": "hunter_skirt_v8 topology (12-point shaped A-line, cross-paired sides ONE reversed), renumbered to Mako",
"reference": "male-clothing-feather-cape-gpt-piece-kilt{,-front,-back,-pattern-annotated}.png",
"flat_pattern_source": "annotated pattern sized to male Lena 1.777 m: worn top 1.03, hem 0.65, panel 118x38 (incl 30 cm wrap overlap), hem ~150. Scaled to Mako 1.818 m (x1.0231): top 1.054, hem 0.665, worn length 39 cm.",
"measured_targets": {
"waist_top_m": 1.054,
"solid_hem_m": 0.665,
"note": "Mako card: waist 88.7 @ 1.065, hip 101.4 @ 0.932. Body at worn top (z=1.054, interp) = 89.8 cm."
},
"ease_profile_cm": {
"top_z1.054": 3.2,
"z0.990": 6.0,
"hip_z0.926": 6.1
},
"tension_note": "Garment waist 93 cm vs 89.8 body (+3.2, same margin that held v8) and 8.4 cm smaller than the 101.4 hip below it -- cannot slide down. No elastic, no strengthen, per v8 findings.",
"silhouette_note": "hem 130 cm/waist 93 = 1.40 vs reference's ~1.27 worn. Mako's gentle 8 cm waist-to-hip drop needs far less flare than Lena's 42 cm; extra 10 cm is walk clearance.",
"not_built_v1": [
"30 cm wrap overlap flap (reference front-left diagonal edge)",
"rope belt + 2 tie ends (geometry; candidate for a downstream prop)",
"geometric fringe teeth (drawn in the texture for now, piupiu technique later)"
],
"texture_note": "kilt_cloth.png spans the 390 mm panel height exactly once (dpi 66.69): fringe 0-30 mm, black triangle band 30-90 mm, plain beige above. PROBE-VERIFIED anchor: MD maps pattern y=0 (hem) to texture v=0.5 and WRAPS -- see mm_from_row() in make_kilt_cloth.py.",
"SHIPPED_BY": "md_script_swap.py, NOT the generated md_script.py -- MD's body analyzer rejects every Mako-derived mesh (0 arrangement points, 'avatar must be in T-pose or A-pose' despite a verified perfect T), so the kilt is arranged/sewn/elastic-locked on a 1.07x-scaled LENA donor, then avatars are swapped and the fitted garment re-settles onto Mako. Tried and ruled out: finger weights, decimation, head/hand chops, leg spread, mesh rename, OBJ import.",
"v6_findings": {
"swap_drop": "the avatar swap drops loose arranged panels ~10 cm; a sewn+cinched garment survives it (drops ~5 cm, countered by the 1.07 donor scale)",
"elastic": "waist line 0, total 450 mm/panel, strength 60 -- DEFAULT STRENGTH NEVER REACHES TARGET; strength 60 moved the top from 1.019 to 1.043",
"qc_pass": "top 1.043 (target 1.054 +/-0.03), hem 0.662 (target 0.665 +/-0.04), span 0.381 vs 0.390 drafted; measured on mako_kilt_v1_front_hd.png (turntable render, alpha mask, warm-pixel classifier, --height 1.818)",
"known_flaw": "slightly scalloped top edge at center front from the stiff elastic; the reference's rope belt would cover it -- candidate for the belt prop pass"
}
},
"md": {
"reset": "new_project",
"avatar_fbx": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/avatar/Mako_Fullhead_QuatSkin_Avatar_fingers.fbx",
"avatar_scale": 10.0,
"add_arrangement_points": true,
"auto_translate": true,
"zfab": "C:/Users/Public/Documents/MarvelousDesigner/New Assets/Fabric/(Default for Simulation).zfab",
"texture": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/textures/kilt_cloth.png",
"texture_dpi": 66.69,
"panels": [
{
"name": "front",
"dx": 0.0,
"note": "Widths vs Mako body interp +ease: y390/465 (body 89.8+3.2), y325/510 (95.9+6), y260.5/537 (hip 101.4+6), y215/555, y135/600 (thigh hull guess ~108, single thigh 67.3), y0/650. Lines: 0 waist | 1-5 side_R | 6 hem | 7-11 side_L.",
"points": [
[92.5, 390.0],
[557.5, 390.0],
[580.0, 325.0],
[593.5, 260.5],
[602.5, 215.0],
[625.0, 135.0],
[650.0, 0.0],
[0.0, 0.0],
[25.0, 135.0],
[47.5, 215.0],
[56.5, 260.5],
[70.0, 325.0]
]
},
{
"name": "back",
"dx": 900.0,
"note": "identical panel offset by dx (NOT mirrored) -> sides CROSS-pair, ONE reversed (v8 discovery)",
"points": [
[92.5, 390.0],
[557.5, 390.0],
[580.0, 325.0],
[593.5, 260.5],
[602.5, 215.0],
[625.0, 135.0],
[650.0, 0.0],
[0.0, 0.0],
[25.0, 135.0],
[47.5, 215.0],
[56.5, 260.5],
[70.0, 325.0]
]
}
],
"seams": [
{"a": "front", "a_line": 1, "b": "back", "b_line": 11, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 2, "b": "back", "b_line": 10, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 3, "b": "back", "b_line": 9, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 4, "b": "back", "b_line": 8, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 5, "b": "back", "b_line": 7, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 11, "b": "back", "b_line": 1, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 10, "b": "back", "b_line": 2, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 9, "b": "back", "b_line": 3, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 8, "b": "back", "b_line": 4, "reverse_a": false, "reverse_b": true},
{"a": "front", "a_line": 7, "b": "back", "b_line": 5, "reverse_a": false, "reverse_b": true}
],
"arrangements": [
{"panel": "front", "point": "Leg_Skirt_Front", "offset": [50, 92, 50]},
{"panel": "back", "point": "Leg_Skirt_Back", "offset": [0, 92, 50]}
],
"sim": {
"strengthen": false,
"settle_frames": 200,
"relax_frames": 60
},
"cam_viewpoint": 2,
"presim_snapshot": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/screenshots/mako_kilt_v1_presim.png",
"snapshot": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/screenshots/mako_kilt_v1_front.png",
"back_snapshot": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/screenshots/mako_kilt_v1_back.png",
"export_dir": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor",
"export_basename": "mako_kilt_v1",
"exports": ["zprj", "fbx", "obj", "zpac"]
},
"expect": {
"bands": {
"mako_kilt_v1": {
"top_m": 1.054,
"bottom_m": 0.665,
"tol_m": 0.03,
"bottom_tol_m": 0.04,
"from": "flat pattern annotation scaled 1.777 -> 1.818"
}
}
}
}