222 lines
7.2 KiB
JSON
222 lines
7.2 KiB
JSON
|
|
{
|
||
|
|
"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"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|