{ "name": "hunter_skirt_v5", "_worksheet": { "block": "aline_skirt (generated), panel outline then hand-shaped", "reference": "male-clothing-hunter-gpt-v2{,-side,-back}.png", "measured_targets": { "waist_top_m": 1.075, "solid_hem_m": 0.685, "fray_tips_m": 0.65, "method": "garment band located by warm-dark mask in all 3 reference views, expressed as fraction of figure height (back 0.598/0.373, side 0.610/0.396), averaged and projected onto Lena's 1.777 m", "flare_measured": 1.38, "flare_used": 1.45, "flare_note": "reference flares 1.38 (widths 98->134 px back, 102->142 px front); raised to 1.45 because 1.38 clears Lena's 109.5 cm hip by only 2.7 cm and a binding hem rides up" }, "why_shaped": "v1 and v2 both failed in SIMULATION while their pre-sim snapshots were clean, which is what proved the pattern and arrangement were right. The straight-sided trapezoid takes its waist from 0.91 x HIP (99.6 cm), but at z=1.075 Lena measures only 71.5 cm -- 28 cm of surplus. v1 (no elastic) slid to the crotch and folded inside out; v2 cinched it with elastic but only at frame 250, by which time the surplus had already buckled into a flap that flipped through itself. Lena's 42 cm hip-to-waist drop over 13 cm of height is the root cause: no straight-sided cone can both grip a 71.5 cm waist and clear a 109.5 cm hip (it would need a 209 cm hem). A curved side seam solves it the way real tailoring does.", "ease_profile_cm": { "waist_z1.075": -3.5, "z1.010": 5.0, "hip_z0.945": 6.1 }, "hem_circ_cm": 126.0, "silhouette_note": "hem/waist ratio is 1.85 vs the reference's measured 1.38. The extra fullness is forced by Lena's hips, not a drafting choice -- the same garment on the male reference body hangs nearly straight.", "seam_pairing_discovery": "CROSS-PAIRED sides, front RIGHT <-> back LEFT: [(1,7),(2,6),(3,5),(7,1),(6,2),(5,3)] with (False, False). Established by a 4-cell sweep with the failing case as control (scratchpad/seams/seam_sheet.png): same-index (True,True) -- the rule in the marvelous-designer skill and what blocks.py emits -- COLLAPSES this panel, and so does same-index (False,False). Both cross-paired variants hold. The skill's rule ('identical panels need (True,True) on same-index sides') is derived from a trapezoid whose side is a SINGLE edge; reversal emulates mirroring there. With a 3-segment shaped side seam it does not, and the unrolled-cylinder truth takes over: front spans 0-180 deg and back 180-360, so front's right edge meets back's LEFT.", "failure_history": "v1 no elastic: slid to the crotch, folded inside out. v2 elastic at frame 250: too late, surplus had already buckled. v3 shaped panel but negative waist clearance: solver ejected the penetrating cloth, blew up by frame 20 in BOTH stiff and soft (that symmetry is what ruled out fabric stiffness). v4 clearances fixed but still collapsed -> isolated to seam pairing. Every failure had a CLEAN pre-sim snapshot, which is what kept pointing away from the pattern and at the sim." }, "md": { "reset": "new_project", "avatar_fbx": "C:/Users/Jeremy/tinqs/animation/tools/tailor/avatar/Lena_QuatSkin_Avatar.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": "tools/tailor/textures/hunter_cloth.png", "texture_dpi": 130.0, "panels": [ { "name": "front", "dx": 0.0, "note": "SHAPED skirt panel with POSITIVE clearance everywhere above the hip. Waist half 370 (+2.5 cm ease -- v4's -3.5 cm started the cloth INSIDE the body and MD ejected it), 468 at y=325 (+3.0), 575 at the hip y=260 (+5.5), 625 at the hem. Lines: 0 waist | 1-3 side_R | 4 hem | 5-7 side_L.", "points": [ [ 127.5, 390.0 ], [ 497.5, 390.0 ], [ 546.5, 325.0 ], [ 600.0, 260.0 ], [ 625.0, 0.0 ], [ 0.0, 0.0 ], [ 25.0, 260.0 ], [ 78.5, 325.0 ] ] }, { "name": "back", "dx": 875.0, "note": "identical panel offset by dx (NOT mirrored) -> sides must CROSS-pair", "points": [ [ 127.5, 390.0 ], [ 497.5, 390.0 ], [ 546.5, 325.0 ], [ 600.0, 260.0 ], [ 625.0, 0.0 ], [ 0.0, 0.0 ], [ 25.0, 260.0 ], [ 78.5, 325.0 ] ] } ], "seams": [ { "a": "front", "a_line": 1, "b": "back", "b_line": 7, "reverse_a": false, "reverse_b": false }, { "a": "front", "a_line": 2, "b": "back", "b_line": 6, "reverse_a": false, "reverse_b": false }, { "a": "front", "a_line": 3, "b": "back", "b_line": 5, "reverse_a": false, "reverse_b": false }, { "a": "front", "a_line": 7, "b": "back", "b_line": 1, "reverse_a": false, "reverse_b": false }, { "a": "front", "a_line": 6, "b": "back", "b_line": 2, "reverse_a": false, "reverse_b": false }, { "a": "front", "a_line": 5, "b": "back", "b_line": 3, "reverse_a": false, "reverse_b": false } ], "arrangements": [ { "panel": "front", "point": "Leg_Skirt_Front", "offset": [ 50, 92, 50 ] }, { "panel": "back", "point": "Leg_Skirt_Back", "offset": [ 0, 92, 50 ] } ], "sim": { "strengthen": true, "settle_frames": 150, "relax_frames": 50, "elastic": [ { "panel": "front", "line": 0, "total_length": 350.0 }, { "panel": "back", "line": 0, "total_length": 350.0 } ], "elastic_frames": 60 }, "cam_viewpoint": 2, "presim_snapshot": "C:/Users/Jeremy/AppData/Local/Temp/tinqs_md_hunter_skirt_v5_presim.png", "snapshot": "C:/Users/Jeremy/AppData/Local/Temp/tinqs_md_hunter_skirt_v5.png", "back_snapshot": "C:/Users/Jeremy/AppData/Local/Temp/tinqs_md_hunter_skirt_v5_back.png", "export_dir": "C:/Users/Jeremy/tinqs/animation/tools/tailor", "export_basename": "lena_hunter_skirt_v5", "exports": [] }, "expect": { "bands": { "hunter_skirt_v2": { "top_m": 1.075, "bottom_m": 0.685, "tol_m": 0.03, "bottom_tol_m": 0.04, "from": "cover" } } } }