From 0fae2b514c7c0ab761be5c1d0894ab0af67a222c Mon Sep 17 00:00:00 2001 From: Can Narin Date: Tue, 18 Aug 2026 22:46:31 +0300 Subject: [PATCH] tailor(voyager): strapless bandeau lane -- elastic-free zero-g recipe + 23-variant work log Female voyager bandeau top from the fc-voyager-kilt-gpt refs. Winning construction (md_final_v16/v23): seamless-loop doctrine -- NO edge elastic (gathering is what notched the armpit junctions), body-snug cut, zero-g wrap (SetSimulationGravity(0) BEFORE ResetClothArrangement -- one full-gravity materialization tick drops the bistable tube into the low basin), stiff 40f positioning then soft 110f conform, self-measuring retry loop. Hard-won facts logged in the scripts: strapless garments never survive full gravity (frictionless skin + stretchy elastic); arrangement x IS azimuth (Body_Back_Center_1 native x=0, forcing 50/50 sews both panels into a front pouch); SetArrangementOrientation flips panel facing but mirrors it L/R; frozen cloth renders cyan; back panel textured face points at the skin -- fix is manual Flip Normal (no API). Texture: positioned plait/rope/fringe tile spanning the 170mm panel once (hem anchors at v=0.5 and wraps). manual_fit_backup.zprj preserves Can's hand-fitted drape. Exports still pending final drape approval. Co-Authored-By: Claude Fable 5 --- tools/tailor/textures/make_voyager_bandeau.py | 181 ++++++++++++++++++ tools/tailor/textures/voyager_bandeau.png | Bin 0 -> 234763 bytes .../work/voyager_bandeau_v1/config.json | 65 +++++++ .../voyager_bandeau_v1/manual_fit_backup.zprj | 3 + .../manual_fit_backup_Default Colorway.png | Bin 0 -> 155121 bytes .../manual_fit_backup_Default Colorway2.zprj | 3 + .../work/voyager_bandeau_v1/md_final_v10.py | 133 +++++++++++++ .../work/voyager_bandeau_v1/md_final_v11.py | 139 ++++++++++++++ .../work/voyager_bandeau_v1/md_final_v13.py | 95 +++++++++ .../work/voyager_bandeau_v1/md_final_v14.py | 97 ++++++++++ .../work/voyager_bandeau_v1/md_final_v15.py | 102 ++++++++++ .../work/voyager_bandeau_v1/md_final_v16.py | 83 ++++++++ .../work/voyager_bandeau_v1/md_final_v17.py | 98 ++++++++++ .../work/voyager_bandeau_v1/md_final_v18.py | 83 ++++++++ .../work/voyager_bandeau_v1/md_final_v19.py | 89 +++++++++ .../work/voyager_bandeau_v1/md_final_v2.py | 131 +++++++++++++ .../work/voyager_bandeau_v1/md_final_v20.py | 85 ++++++++ .../work/voyager_bandeau_v1/md_final_v21.py | 80 ++++++++ .../work/voyager_bandeau_v1/md_final_v22.py | 83 ++++++++ .../work/voyager_bandeau_v1/md_final_v23.py | 81 ++++++++ .../work/voyager_bandeau_v1/md_final_v3.py | 102 ++++++++++ .../work/voyager_bandeau_v1/md_final_v4.py | 101 ++++++++++ .../work/voyager_bandeau_v1/md_final_v5.py | 104 ++++++++++ .../work/voyager_bandeau_v1/md_final_v6.py | 104 ++++++++++ .../work/voyager_bandeau_v1/md_final_v7.py | 102 ++++++++++ .../work/voyager_bandeau_v1/md_final_v8.py | 101 ++++++++++ .../work/voyager_bandeau_v1/md_final_v9.py | 100 ++++++++++ .../work/voyager_bandeau_v1/md_final_zerog.py | 137 +++++++++++++ .../work/voyager_bandeau_v1/md_flip_back.py | 30 +++ .../work/voyager_bandeau_v1/md_inspect_fix.py | 45 +++++ .../voyager_bandeau_v1/md_probe_arrange.py | 66 +++++++ .../voyager_bandeau_v1/md_probe_backpoint.py | 69 +++++++ .../work/voyager_bandeau_v1/md_probe_slide.py | 104 ++++++++++ .../work/voyager_bandeau_v1/md_script.py | 162 ++++++++++++++++ .../voyager_bandeau_v1/md_sweep_backfix.py | 127 ++++++++++++ .../voyager_bandeau_v1/md_sweep_backheight.py | 82 ++++++++ .../work/voyager_bandeau_v1/md_sweep_hold.py | 110 +++++++++++ .../work/voyager_bandeau_v1/md_sweep_zerog.py | 133 +++++++++++++ 38 files changed, 3410 insertions(+) create mode 100644 tools/tailor/textures/make_voyager_bandeau.py create mode 100644 tools/tailor/textures/voyager_bandeau.png create mode 100644 tools/tailor/work/voyager_bandeau_v1/config.json create mode 100644 tools/tailor/work/voyager_bandeau_v1/manual_fit_backup.zprj create mode 100644 tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway.png create mode 100644 tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway2.zprj create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v10.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v11.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v13.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v14.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v15.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v16.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v17.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v18.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v19.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v2.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v20.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v21.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v22.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v23.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v3.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v4.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v5.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v6.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v7.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v8.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_v9.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_final_zerog.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_flip_back.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_inspect_fix.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_probe_arrange.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_probe_backpoint.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_probe_slide.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_script.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_sweep_backfix.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_sweep_backheight.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_sweep_hold.py create mode 100644 tools/tailor/work/voyager_bandeau_v1/md_sweep_zerog.py diff --git a/tools/tailor/textures/make_voyager_bandeau.py b/tools/tailor/textures/make_voyager_bandeau.py new file mode 100644 index 0000000..0ab23df --- /dev/null +++ b/tools/tailor/textures/make_voyager_bandeau.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +""" +make_voyager_bandeau.py -- golden plaited-weave band with black rope trim and +fringe for the female voyager bandeau top (lena_voyager_bandeau_v1). + + python tools/tailor/textures/make_voyager_bandeau.py + +Derived from the reference renders +`fc-voyager-kilt-gpt-piece-top{,-front,-back}.png` (docs repo): a diagonal +basket plait in warm golden tan, a black braided-rope band near each edge, and +a short strand fringe extending to both the top and bottom edges. + +POSITIONED TILE, same doctrine as make_kilt_cloth.py: spans the bandeau +panel's full 170 mm height exactly once (dpi = SIZE / (170 / 25.4)), so every +zone lands at a fixed garment height: + + garment y (mm, hem=0) zone + 0-15 bottom fringe strands (painted, not geometry -- v1) + 15-27 black rope band (braided chevrons) + 27-143 diagonal basket plait + 143-155 black rope band + 155-170 top fringe strands (tips ragged toward y=170) + +Horizontally the 170 mm tile repeats ~3.2x across the 550 mm panel; the plait +pitch (17 mm) and rope chevron pitch (32 px) both divide the tile exactly, so +the wrap is seamless. + +IF THE ROPE BANDS RENDER SWAPPED TOP-FOR-BOTTOM, MD anchored the texture the +other way up -- regenerate with FLIP=True rather than touching the pattern. +(Anchor per probe 2026-08-18: pattern y=0 (hem) maps to image v=0.5 and wraps.) + +Albedo baked in (pipeline has no alpha, texture replaces base color), warm +ramp r>g>b, deterministic LCG noise. +""" +import os + +from PIL import Image + +HERE = os.path.dirname(os.path.abspath(__file__)) +OUT = os.path.join(HERE, "voyager_bandeau.png") + +SIZE = 1024 # px, square +CLOTH_MM = 170.0 # spans the bandeau panel height exactly once +DPI = SIZE / (CLOTH_MM / 25.4) +FLIP = False # set True if MD anchors the texture upside-down +PX_PER_MM = SIZE / CLOTH_MM + +# zone boundaries in garment mm (hem = 0) +BOT_FRINGE_TOP = 15.0 +BOT_ROPE_TOP = 27.0 +TOP_ROPE_BOT = 143.0 +TOP_FRINGE_BOT = 155.0 + +PLAIT_PITCH_MM = 17.0 # strand pitch; 170/17 = 10 cells -> seamless wrap +ROPE_CHEVRON_PX = 32 # divides 1024 -> seamless wrap + +BASE = (203, 165, 110) # golden tan plait (reference lit mean ~(200,165,115)) +ROPE = (46, 40, 32) # near-black rope, warm +ROPE_HI = (92, 80, 62) # braid ridge highlight +FRINGE = (191, 152, 100) +FRINGE_GAP = (140, 108, 70) +SHADOW = (74, 60, 44) # past a fringe tip: painted shadow (no alpha in lane) + +OVER_LIFT = 14 +UNDER_DROP = 18 +ROUND_SHADE = 12 +SLUB_RANGE = 8 +MOTTLE = 10 +MOTTLE_CELL = 64 + + +def lcg(seed): + state = seed + while True: + state = (1103515245 * state + 12345) % (2 ** 31) + yield state / float(2 ** 31) + + +def value_noise(cells, seed): + g = lcg(seed) + grid = [[(next(g) * 2.0 - 1.0) for _ in range(cells + 1)] for _ in range(cells + 1)] + + def sample(x, y): + fx, fy = x * cells / SIZE, y * cells / SIZE + x0, y0 = int(fx), int(fy) + tx, ty = fx - x0, fy - y0 + tx, ty = tx * tx * (3 - 2 * tx), ty * ty * (3 - 2 * ty) + a = grid[y0][x0] * (1 - tx) + grid[y0][x0 + 1] * tx + b = grid[y0 + 1][x0] * (1 - tx) + grid[y0 + 1][x0 + 1] * tx + return a * (1 - ty) + b * ty + + return sample + + +def mm_from_row(y): + """Garment height in mm for an image row (anchor: hem -> v=0.5, wraps).""" + v = (y + 0.5) / SIZE + return CLOTH_MM - CLOTH_MM * ((v - 0.5) % 1.0) + + +def plait(xm, ym, slub_a, slub_b): + """Diagonal basket plait: two +/-45-degree strand families, over-under. + Returns a brightness delta to apply on BASE.""" + u = (xm + ym) / PLAIT_PITCH_MM + w = (xm - ym) / PLAIT_PITCH_MM + a, b = int(u // 1), int(w // 1) + fu, fw = u - a, w - b + over_a = ((a + b) % 2) == 0 + if over_a: + # family A on top: rounded across its width (fw), slub along it + c = abs(fw - 0.5) * 2.0 + d = OVER_LIFT - int(ROUND_SHADE * c * c) + d += slub_a[a % len(slub_a)] + if fw < 0.06 or fw > 0.94: # crevice against the under strand + d -= 26 + else: + c = abs(fu - 0.5) * 2.0 + d = OVER_LIFT - int(ROUND_SHADE * c * c) - UNDER_DROP // 2 + d += slub_b[b % len(slub_b)] + if fu < 0.06 or fu > 0.94: + d -= 26 + return d + + +def main(): + g = lcg(20260818) + slub_a = [int((next(g) * 2.0 - 1.0) * SLUB_RANGE) for _ in range(64)] + slub_b = [int((next(g) * 2.0 - 1.0) * SLUB_RANGE) for _ in range(64)] + tip_noise = [next(g) for _ in range(64)] + mottle = value_noise(SIZE // MOTTLE_CELL, seed=777) + + img = Image.new("RGB", (SIZE, SIZE)) + px = img.load() + + strand_w = 16 # fringe strand width px (~2.7 mm) + for y in range(SIZE): + mm = mm_from_row(y) + ym = mm + for x in range(SIZE): + xm = x / PX_PER_MM + wear = int(mottle(x, y) * MOTTLE) + + if mm < BOT_FRINGE_TOP or mm > TOP_FRINGE_BOT: + # fringe: vertical strands, ragged tips toward the edge + sid = (x // strand_w) % len(tip_noise) + ragged = tip_noise[sid] * 8.0 + past_tip = (mm < ragged if mm < BOT_FRINGE_TOP + else mm > CLOTH_MM - ragged) + if past_tip: + base, d = SHADOW, wear // 2 + else: + u = x % strand_w + base = FRINGE_GAP if u < 2 else FRINGE + d = slub_a[sid] + wear + elif mm < BOT_ROPE_TOP or mm > TOP_ROPE_BOT: + # braided rope: diagonal chevron ridges + phase = ((x + int(mm * PX_PER_MM) * 2) % ROPE_CHEVRON_PX) \ + / float(ROPE_CHEVRON_PX) + base = ROPE_HI if phase < 0.30 else ROPE + d = wear // 2 + else: + base = BASE + d = plait(xm, ym, slub_a, slub_b) + wear + + r = base[0] + d + gg = base[1] + int(d * 0.82) + b = base[2] + int(d * 0.66) + px[x, y] = (max(0, min(255, r)), max(0, min(255, gg)), + max(0, min(255, b))) + + if FLIP: + img = img.transpose(Image.FLIP_TOP_BOTTOM) + img.save(OUT, dpi=(DPI, DPI)) + print("wrote %s (%dx%d, dpi %.2f -> %.0f mm of cloth; ropes %d-%d & %d-%d mm, " + "fringe 0-%d & %d-%d mm)" + % (OUT, SIZE, SIZE, DPI, CLOTH_MM, BOT_FRINGE_TOP, BOT_ROPE_TOP, + TOP_ROPE_BOT, TOP_FRINGE_BOT, BOT_FRINGE_TOP, TOP_FRINGE_BOT, CLOTH_MM)) + + +if __name__ == "__main__": + main() diff --git a/tools/tailor/textures/voyager_bandeau.png b/tools/tailor/textures/voyager_bandeau.png new file mode 100644 index 0000000000000000000000000000000000000000..37a5068c6cdeb64bea16ba11a26f1401d17598cc GIT binary patch literal 234763 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

Qjn^aPw%XoqO9=XV~E?&$VpX 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�bhq~)^l%WyTsfyW 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%0D{AuOw#=`T&(|ysYdLL> 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

f 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� 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≠j}XR!Sm`~v3@3d=!Ghbjl$@w#RO23_=Bq&l`L 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 literal 0 HcmV?d00001 diff --git a/tools/tailor/work/voyager_bandeau_v1/config.json b/tools/tailor/work/voyager_bandeau_v1/config.json new file mode 100644 index 0000000..e3bf02a --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/config.json @@ -0,0 +1,65 @@ +{ + "name": "voyager_bandeau_v1", + "_worksheet": { + "block": "custom strapless band (fitted_top numbers, no straps)", + "reference": "docs/conceptart/generated-images/female-clothing/fc-voyager-kilt-gpt-piece-top*.png", + "placement": {"band_top_z": 1.31, "hem_z": 1.14, "tol_m": 0.03}, + "body_circ_mm": {"bust_max": 1083.4, "at_top_1.31": 917.4, "at_hem_1.14": 794.4}, + "ease_mm": 17, + "panel": "hexagon: bust-width waist at y=123.6, tapered to snug top and hem", + "hold_mechanism": "top edge cut 467 vs 550 needed to clear the bust; elastic cinch mid-settle (strength 60 -- default never reaches target)", + "lines": {"top": 0, "side_r_up": 1, "side_r_low": 2, "hem": 3, "side_l_low": 4, "side_l_up": 5}, + "strapless_rationale": "reference has no straps; skill says straps-beat-tubes, but a tube can only slide down by stretching its 467mm top edge over the 550mm bust -- geometry blocks it. If QC shows it slid to the underbust anyway, v2 adds straps." + }, + "md": { + "reset": "new_project", + "avatar_fbx": "C:/Users/CAN/tinqs-ltd/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": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor/textures/voyager_bandeau.png", + "panels": [ + {"name": "front", "dx": 0.0, + "note": "strapless band: W 550.2 at bust (circ 1083.4 + ease 17), top 467.2, hem 405.7, H 170", + "points": [[41.5, 170.0], [508.7, 170.0], [550.2, 123.6], [478.0, 0.0], [72.2, 0.0], [0.0, 123.6]]}, + {"name": "back", "dx": 800.2, + "note": "identical panel; lines 0 top | 1 sideR-up | 2 sideR-low | 3 hem | 4 sideL-low | 5 sideL-up", + "points": [[41.5, 170.0], [508.7, 170.0], [550.2, 123.6], [478.0, 0.0], [72.2, 0.0], [0.0, 123.6]]} + ], + "seams": [ + {"a": "front", "a_line": 1, "b": "back", "b_line": 1, "reverse_a": true, "reverse_b": true}, + {"a": "front", "a_line": 2, "b": "back", "b_line": 2, "reverse_a": true, "reverse_b": true}, + {"a": "front", "a_line": 4, "b": "back", "b_line": 4, "reverse_a": true, "reverse_b": true}, + {"a": "front", "a_line": 5, "b": "back", "b_line": 5, "reverse_a": true, "reverse_b": true} + ], + "arrangements": [ + {"panel": "front", "point": "Body_Front_Center_1", "offset": [50, 55, 50]}, + {"panel": "back", "point": "Body_Back_Center_1", "offset": [50, 55, 50]} + ], + "sim": { + "strengthen": true, + "settle_frames": 250, + "elastic": [ + {"panel": "front", "line": 0, "total_length": 450.0, "strength": 60}, + {"panel": "back", "line": 0, "total_length": 450.0, "strength": 60}, + {"panel": "front", "line": 3, "total_length": 390.0, "strength": 60}, + {"panel": "back", "line": 3, "total_length": 390.0, "strength": 60} + ], + "elastic_frames": 80, + "relax_frames": 50 + }, + "cam_viewpoint": 2, + "presim_snapshot": "C:/Users/CAN/AppData/Local/Temp/claude/C--Users-CAN-tinqs-ltd-docs/3744fd8e-1342-446c-9677-7aafbafc8d18/scratchpad/voyager_bandeau_presim.png", + "snapshot": "C:/Users/CAN/AppData/Local/Temp/claude/C--Users-CAN-tinqs-ltd-docs/3744fd8e-1342-446c-9677-7aafbafc8d18/scratchpad/voyager_bandeau_front.png", + "back_snapshot": "C:/Users/CAN/AppData/Local/Temp/claude/C--Users-CAN-tinqs-ltd-docs/3744fd8e-1342-446c-9677-7aafbafc8d18/scratchpad/voyager_bandeau_back.png", + "export_dir": "C:/Users/CAN/tinqs-ltd/animation/tools/tailor", + "export_basename": "lena_voyager_bandeau_v1", + "exports": [] + }, + "expect": { + "bands": { + "voyager_bandeau_v1": {"top_m": 1.31, "bottom_m": 1.14, "tol_m": 0.03, "from": "cover"} + } + } +} diff --git a/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup.zprj b/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup.zprj new file mode 100644 index 0000000..ae6a5b4 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup.zprj @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cf22ae8404de67977782057f514eec27322c077adf8865eb7c9b2ba28501179 +size 9758086 diff --git a/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway.png b/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway.png new file mode 100644 index 0000000000000000000000000000000000000000..bed11068d3aef1e6cb38320eef9db01f1555380e GIT binary patch literal 155121 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

#-pJ1gX*j04aq+<&E_mRWF1=UG6P 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⋘V*U+HR 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

^R}kJOQt*Q`@+R$3}wu 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 R4SWzVQ0~5N3|Gwk{{ossllTAt literal 0 HcmV?d00001 diff --git a/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway2.zprj b/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway2.zprj new file mode 100644 index 0000000..1996cf6 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/manual_fit_backup_Default Colorway2.zprj @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b82ebb9e2c6647618550832a42129c1023ba105ab615536ef273a1192b581bdb +size 9699039 diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v10.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v10.py new file mode 100644 index 0000000..15622a5 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v10.py @@ -0,0 +1,133 @@ +# FINAL v10: BACK SCOOP -- the construction fix for the back-edge flip. +# +# Every sim-side variant (v8 stiff, B brief-soften, C half-solidify) flips or rolls +# the back panel's top edge, because at 1.31 m the back edge lands ON the baked-in +# bra's back-band ridge: collision pushes it off and it folds. The reference back +# sits LOWER between the shoulder blades anyway. Fix in the outline (never partial +# seams): scoop the back top edge down 32 mm at the centre; the side edges are +# untouched so all four seam pairs still fingerprint equal. +# +# Back top edge becomes 4 segments (lines 0-3); side/hem line indices shift +3. +# No elastic on the scooped back top (it is below the ridge and shorter by cut); +# front top + both hems keep the v8 elastic. Sim recipe = v8 (zero-g, stiff 60, +# soften front only, 90). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" + +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +# back: same corners, top edge scooped 24/32/24 mm at 35%/50%/65% of the top span +PTS_B = [(41.5, 170.0), (181.5, 146.0), (275.1, 138.0), (368.7, 146.0), + (508.7, 170.0), (550.2, 123.6), (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +# front lines: 0 top | 1 sideR_up | 2 sideR_low | 3 hem | 4 sideL_low | 5 sideL_up +# back lines: 0-3 scooped top | 4 sideR_up | 5 sideR_low | 6 hem | 7 sideL_low | 8 sideL_up +SEAMS = [(1, 4), (2, 5), (4, 7), (5, 8)] + + +def span(): + path = os.path.join(SCRATCH, "_probe10.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) +for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, True, True) + +# fingerprint the pairs -- unequal seam edges are a construction bug +_bad = [] +results["seam_lengths"] = [] +for lf, lb in SEAMS: + fa = pattern_api.GetLineLength(f, lf) + fb = pattern_api.GetLineLength(b, lb) + results["seam_lengths"].append((lf, round(fa, 3), lb, round(fb, 3))) + if abs(fa - fb) > 0.1: + _bad.append("f.%d=%.3f vs b.%d=%.3f" % (lf, fa, lb, fb)) +if _bad: + raise RuntimeError("seam length mismatch: " + "; ".join(_bad)) + +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 68, 50) + +# elastic: front top (line 0) + both hems (front 3, back 6); scooped back top bare +pattern_api.SetPatternPieceElastic(f, 0, True) +pattern_api.SetPatternPieceElasticTotalLength(f, 0, 450.0) +pattern_api.SetPatternPieceElasticStrength(f, 0, 60.0) +pattern_api.SetPatternPieceElastic(f, 3, True) +pattern_api.SetPatternPieceElasticTotalLength(f, 3, 390.0) +pattern_api.SetPatternPieceElasticStrength(f, 3, 60.0) +pattern_api.SetPatternPieceElastic(b, 6, True) +pattern_api.SetPatternPieceElasticTotalLength(b, 6, 390.0) +pattern_api.SetPatternPieceElasticStrength(b, 6, 60.0) + +pattern_api.SetPatternStrengthen(f, True) +pattern_api.SetPatternStrengthen(b, True) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) # stiff positioning + pattern_api.SetPatternStrengthen(f, False) # soften only the front + utility_api.Simulate(90) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final10_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final10_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final10_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v11.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v11.py new file mode 100644 index 0000000..10c0ec9 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v11.py @@ -0,0 +1,139 @@ +# FINAL v10: BACK SCOOP -- the construction fix for the back-edge flip. +# +# Every sim-side variant (v8 stiff, B brief-soften, C half-solidify) flips or rolls +# the back panel's top edge, because at 1.31 m the back edge lands ON the baked-in +# bra's back-band ridge: collision pushes it off and it folds. The reference back +# sits LOWER between the shoulder blades anyway. Fix in the outline (never partial +# seams): scoop the back top edge down 32 mm at the centre; the side edges are +# untouched so all four seam pairs still fingerprint equal. +# +# Back top edge becomes 4 segments (lines 0-3); side/hem line indices shift +3. +# No elastic on the scooped back top (it is below the ridge and shorter by cut); +# front top + both hems keep the v8 elastic. Sim recipe = v8 (zero-g, stiff 60, +# soften front only, 90). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" + +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +# back: same corners, top edge scooped 24/32/24 mm at 35%/50%/65% of the top span +PTS_B = [(41.5, 170.0), (181.5, 146.0), (275.1, 138.0), (368.7, 146.0), + (508.7, 170.0), (550.2, 123.6), (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +# front lines: 0 top | 1 sideR_up | 2 sideR_low | 3 hem | 4 sideL_low | 5 sideL_up +# back lines: 0-3 scooped top | 4 sideR_up | 5 sideR_low | 6 hem | 7 sideL_low | 8 sideL_up +SEAMS = [(1, 4), (2, 5), (4, 7), (5, 8)] + + +def span(): + path = os.path.join(SCRATCH, "_probe11.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) +for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, True, True) + +# fingerprint the pairs -- unequal seam edges are a construction bug +_bad = [] +results["seam_lengths"] = [] +for lf, lb in SEAMS: + fa = pattern_api.GetLineLength(f, lf) + fb = pattern_api.GetLineLength(b, lb) + results["seam_lengths"].append((lf, round(fa, 3), lb, round(fb, 3))) + if abs(fa - fb) > 0.1: + _bad.append("f.%d=%.3f vs b.%d=%.3f" % (lf, fa, lb, fb)) +if _bad: + raise RuntimeError("seam length mismatch: " + "; ".join(_bad)) + +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 78, 50) +pattern_api.SetArrangementPosition(b, 0, 78, 50) + +# elastic: front top (line 0) + both hems (front 3, back 6); scooped back top bare +pattern_api.SetPatternPieceElastic(f, 0, True) +pattern_api.SetPatternPieceElasticTotalLength(f, 0, 450.0) +pattern_api.SetPatternPieceElasticStrength(f, 0, 60.0) +pattern_api.SetPatternPieceElastic(f, 3, True) +pattern_api.SetPatternPieceElasticTotalLength(f, 3, 390.0) +pattern_api.SetPatternPieceElasticStrength(f, 3, 60.0) +# v11: the scooped back top needs its own anchor -- v10 (bare scoop) slid 10 cm. +# Segment cut lengths 142/93.9/93.9/142; cinch to ~0.93. +for _ln, _tl in ((0, 132.0), (1, 87.0), (2, 87.0), (3, 132.0)): + pattern_api.SetPatternPieceElastic(b, _ln, True) + pattern_api.SetPatternPieceElasticTotalLength(b, _ln, _tl) + pattern_api.SetPatternPieceElasticStrength(b, _ln, 60.0) +pattern_api.SetPatternPieceElastic(b, 6, True) +pattern_api.SetPatternPieceElasticTotalLength(b, 6, 390.0) +pattern_api.SetPatternPieceElasticStrength(b, 6, 60.0) + +pattern_api.SetPatternStrengthen(f, True) +pattern_api.SetPatternStrengthen(b, True) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) # stiff positioning + pattern_api.SetPatternStrengthen(f, False) # soften only the front + utility_api.Simulate(90) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final11_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final11_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final11_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v13.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v13.py new file mode 100644 index 0000000..ab768ef --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v13.py @@ -0,0 +1,95 @@ +# FINAL v13: TWO FABRICS -- back panel on Tyvek (board-stiff MATERIAL), front on +# the default sim fabric. Every strengthen-based recipe folds the back at the bra +# ridge because SetPatternStrengthen is a solver constraint, not bending stiffness; +# the crease forms during the phase-1 seam pull and survives. Tyvek resists the +# crease itself. Back is NOT strengthened (material does the work), front keeps +# the proven stiff-then-soft phases. Ends UNFROZEN (texture visible; don't press play). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB_SOFT = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +ZFAB_STIFF = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\V2_Non-Fabric_Tyvek_1.zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + +fab_soft = fabric_api.AddFabric(ZFAB_SOFT) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab_soft) +fab_stiff = fabric_api.AddFabric(ZFAB_STIFF) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab_stiff) +pattern_api.SetPatternPieceFabricIndex(f, fab_soft) +pattern_api.SetPatternPieceFabricIndex(b, fab_stiff) +for p in (f, b): + pattern_api.SetAddlThicknessCollision(p, 2.0) + +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 78, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + +pattern_api.SetPatternStrengthen(f, True) # front: proven stiff-then-soft +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) + pattern_api.SetPatternStrengthen(f, False) + utility_api.Simulate(90) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +path = os.path.join(SCRATCH, "_probe13.obj") +xop = ApiTypes.ImportExportOption() +xop.bExportGarment = True +xop.bExportAvatar = False +export_api.ExportOBJ(path, xop) +zmin, zmax = 1e9, -1e9 +with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) +results["final"] = {"bottom_m": round(zmin * 0.001, 4), "top_m": round(zmax * 0.001, 4), + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final13_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final13_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final13_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +# UNFROZEN on purpose: Can inspects with texture; nothing simulates unless play is pressed +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab_soft, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v14.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v14.py new file mode 100644 index 0000000..eec3635 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v14.py @@ -0,0 +1,97 @@ +# FINAL v13: TWO FABRICS -- back panel on Tyvek (board-stiff MATERIAL), front on +# the default sim fabric. Every strengthen-based recipe folds the back at the bra +# ridge because SetPatternStrengthen is a solver constraint, not bending stiffness; +# the crease forms during the phase-1 seam pull and survives. Tyvek resists the +# crease itself. Back is NOT strengthened (material does the work), front keeps +# the proven stiff-then-soft phases. Ends UNFROZEN (texture visible; don't press play). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB_SOFT = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +ZFAB_STIFF = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\V2_Non-Fabric_Tyvek_1.zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + +fab_soft = fabric_api.AddFabric(ZFAB_SOFT) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab_soft) +fab_stiff = fabric_api.AddFabric(ZFAB_STIFF) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab_stiff) +pattern_api.SetPatternPieceFabricIndex(f, fab_soft) +pattern_api.SetPatternPieceFabricIndex(b, fab_stiff) +pattern_api.SetAddlThicknessCollision(f, 2.0) +pattern_api.SetAddlThicknessCollision(b, 8.0) # glide over the bra ridge during the wrap + +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 78, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + +pattern_api.SetPatternStrengthen(f, True) # front: proven stiff-then-soft +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) + pattern_api.SetPatternStrengthen(f, False) + utility_api.Simulate(60) + pattern_api.SetAddlThicknessCollision(b, 3.0) # now settle against the skin + utility_api.Simulate(40) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +path = os.path.join(SCRATCH, "_probe14.obj") +xop = ApiTypes.ImportExportOption() +xop.bExportGarment = True +xop.bExportAvatar = False +export_api.ExportOBJ(path, xop) +zmin, zmax = 1e9, -1e9 +with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) +results["final"] = {"bottom_m": round(zmin * 0.001, 4), "top_m": round(zmax * 0.001, 4), + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final14_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final14_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final14_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +# UNFROZEN on purpose: Can inspects with texture; nothing simulates unless play is pressed +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab_soft, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v15.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v15.py new file mode 100644 index 0000000..9ddea88 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v15.py @@ -0,0 +1,102 @@ +# FINAL v15: match the reference's construction truth -- a SEAMLESS RIGID LOOP. +# +# Reference re-read (fc-voyager-kilt-gpt-piece-top-front.png): continuous band, +# NO visible side seams, NO gathering, level edges, standing slightly proud of the +# body like stiff basketry. Every "connection point" artifact at the armpits came +# from the elastic: two independent edge-drawstrings meeting at a seam corner +# always notch and curl there. +# +# So: NO elastic anywhere. The cut is already body-snug (top 934 mm circ vs 917 mm +# body), and in zero-g nothing needs holding up. Seam tension + collision form the +# smooth proud oval. Two conform styles swept in one call: +# A_soft everything soft, zero-g 150 f +# B_stiff stiff 40 f (clean positioning) -> soften both, 110 f +# Judge: underarm junction on the side turntables + spans. Ends UNFROZEN. +# +# (Known cosmetic issue left alone: the back panel's textured face points at the +# skin -- no API can flip it; right-click the back panel in 3D > Flip Normal, or +# let the Blender pass recalculate normals.) +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def build(): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) # proud of the skin, like the ref + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 68, 50) + pattern_api.SetArrangementPosition(b, 0, 78, 50) + return f, b + + +def measure_and_shoot(tag): + utility_api.Refresh3DWindow() + out = {} + path = os.path.join(SCRATCH, "_probe15.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v15_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +utility_api.SetSimulationGravity(0.0) +try: + # A_soft: everything soft from frame 0, weightless + f, b = build() + utility_api.ResetClothArrangement() + utility_api.Simulate(150) + results["A_soft"] = measure_and_shoot("A_soft") + + # B_stiff: stiff positioning, then both soften and conform + f, b = build() + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + results["B_stiff"] = measure_and_shoot("B_stiff") +finally: + utility_api.SetSimulationGravity(-9800.0) + +# scene ends holding B_stiff, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v16.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v16.py new file mode 100644 index 0000000..5f3ddaf --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v16.py @@ -0,0 +1,83 @@ +# FINAL v16: v15's clean no-elastic seamless-loop recipe + height calibration. +# v15 proved the reference-matching construction (no elastic, no gathering, smooth +# proud band, clean underarm junctions) but the tube slides ~0.11 m down the torso +# taper during the weightless conform. Calibrate arrangement height: two cells, +# keep the closer one in scene. Ends UNFROZEN (do not press play). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def build(front_y, back_y): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, front_y, 50) + pattern_api.SetArrangementPosition(b, 0, back_y, 50) + return f, b + + +def measure_and_shoot(tag): + utility_api.Refresh3DWindow() + out = {} + path = os.path.join(SCRATCH, "_probe16.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v16_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +utility_api.SetSimulationGravity(0.0) +try: + for tag, fy, by in (("H74", 74, 82),): # calibrated winner -- leave in scene + f, b = build(fy, by) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + results[tag] = measure_and_shoot(tag) +finally: + utility_api.SetSimulationGravity(-9800.0) + +# scene ends holding H88, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v17.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v17.py new file mode 100644 index 0000000..49f6e9f --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v17.py @@ -0,0 +1,98 @@ +# FINAL v17: v16's elastic-free recipe + the BACK PANEL BUILT WITH REVERSED +# 2D WINDING -- Can's diagnosis: "backside tailored backwards". MD orients a +# draped panel's front face from its 2D winding, so the back panel (which the +# Body_Back arrangement turns 180 degrees toward the body) ended up textured-face-in. +# Reversing its point order flips the face outward at build time; no flip API needed. +# +# Seam mapping with reversed back winding (same physical edges, new indices): +# front 1 sideR_up <-> back 4 sideR_up front 2 sideR_low <-> back 3 sideR_low +# front 4 sideL_low <-> back 1 sideL_low front 5 sideL_up <-> back 0 sideL_up +# Flags: front keeps its proven reversal (True); the back's natural traversal now +# matches what (True,True) used to produce, so back flag is False -> (True, False). +# A wrong flag shows as a twist -- judge from the snapshots. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +PTS_B = list(reversed(PTS_F)) +PTS_B = PTS_B[-1:] + PTS_B[:-1] # start at (41.5,170) like the front +# back lines: 0 sideL_up | 1 sideL_low | 2 hem | 3 sideR_low | 4 sideR_up | 5 top +SEAMS = [(1, 4), (2, 3), (4, 1), (5, 0)] + +results = {"pts_back": PTS_B} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) +for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, True, False) + +_bad = [] +results["seam_lengths"] = [] +for lf, lb in SEAMS: + fa = pattern_api.GetLineLength(f, lf) + fb = pattern_api.GetLineLength(b, lb) + results["seam_lengths"].append((lf, round(fa, 3), lb, round(fb, 3))) + if abs(fa - fb) > 0.1: + _bad.append("f.%d=%.3f vs b.%d=%.3f" % (lf, fa, lb, fb)) +if _bad: + raise RuntimeError("seam length mismatch: " + "; ".join(_bad)) + +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 74, 50) +pattern_api.SetArrangementPosition(b, 0, 82, 50) + +pattern_api.SetPatternStrengthen(f, True) +pattern_api.SetPatternStrengthen(b, True) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +path = os.path.join(SCRATCH, "_probe17.obj") +xop = ApiTypes.ImportExportOption() +xop.bExportGarment = True +xop.bExportAvatar = False +export_api.ExportOBJ(path, xop) +zmin, zmax = 1e9, -1e9 +with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) +results["final"] = {"bottom_m": round(zmin * 0.001, 4), "top_m": round(zmax * 0.001, 4), + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v17_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results[view] = dst + +# UNFROZEN; do not press play +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v18.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v18.py new file mode 100644 index 0000000..ad449b3 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v18.py @@ -0,0 +1,83 @@ +# FINAL v18: reversed-winding back panel (textured face OUT -- proven by v17's +# bright back) + seam-flag sweep. v17's (True, False) crossed the back into an X. +# MD's reverse flags do not behave like simple traversal reversal (the tooling +# table shows (True,True) != (False,False) on identical panels), so sweep the +# remaining combos empirically: (False, True), (False, False), (True, True). +# Recipe otherwise = v16 winner: no elastic, zero-g, stiff 40 + soft 110, y 74/82. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +_r = list(reversed(PTS_F)) +PTS_B = _r[-1:] + _r[:-1] +SEAMS = [(1, 4), (2, 3), (4, 1), (5, 0)] + + +def run_cell(tag, rev_a, rev_b): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) + for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, rev_a, rev_b) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 74, 50) + pattern_api.SetArrangementPosition(b, 0, 82, 50) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.SetSimulationGravity(0.0) + try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + finally: + utility_api.SetSimulationGravity(-9800.0) + utility_api.Refresh3DWindow() + + out = {} + path = os.path.join(SCRATCH, "_probe18.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v18_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +results["FT"] = run_cell("FT", False, True) +results["FF"] = run_cell("FF", False, False) +results["TT"] = run_cell("TT", True, True) +# scene ends holding TT, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v19.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v19.py new file mode 100644 index 0000000..09ea0df --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v19.py @@ -0,0 +1,89 @@ +# FINAL v19: v16's proven clean construction (identical winding, (True,True) seams, +# no elastic) + SetArrangementOrientation on the BACK panel to face its textured +# side OUTWARD. v17/v18 proved reversed winding twists with every flag combo; the +# facing must come from the ARRANGEMENT, not the pattern. Introspect the setter's +# doc, flip the back panel's orientation (180 -> 0), verify with a presim turntable +# before simulating. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +results = {"orient_doc": pattern_api.SetArrangementOrientation.__doc__} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 74, 50) +pattern_api.SetArrangementPosition(b, 0, 82, 50) + +# flip the back panel's facing at the arrangement level (front keeps its default 180) +try: + pattern_api.SetArrangementOrientation(b, 0) + results["orient_set"] = True +except Exception as exc: + results["orient_set"] = "failed: %r" % (exc,) + +utility_api.ResetClothArrangement() +utility_api.Refresh3DWindow() +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + dst = os.path.join(SCRATCH, "v19_presim_back.png") + shutil.copyfile(_tt[2], dst) + results["presim_back"] = dst + +pattern_api.SetPatternStrengthen(f, True) +pattern_api.SetPatternStrengthen(b, True) +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +path = os.path.join(SCRATCH, "_probe19.obj") +xop = ApiTypes.ImportExportOption() +xop.bExportGarment = True +xop.bExportAvatar = False +export_api.ExportOBJ(path, xop) +zmin, zmax = 1e9, -1e9 +with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) +results["final"] = {"bottom_m": round(zmin * 0.001, 4), "top_m": round(zmax * 0.001, 4)} + +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v19_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results[view] = dst + +# UNFROZEN; do not press play +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v2.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v2.py new file mode 100644 index 0000000..472c55d --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v2.py @@ -0,0 +1,131 @@ +# FINAL v2: pure zero-g wrap, no gravity pass at all. +# +# md_final_zerog.py showed even 45 frames at 0.1 g slides the band 16 cm. But the +# reference garment is stiff plaited basketry -- it should NOT have gravity folds; +# the elastic cinch wrinkles are the right surface detail. So: wrap weightless at +# the correct height, freeze, done. offset-y mapping measured: 55 -> mid 1.172, +# 70 -> mid 1.269, 85 -> mid 1.326; target mid 1.225 -> y ~62. +import os + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +TARGET_MID = (1.31 + 1.14) / 2.0 + + +def build(arr_y): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, arr_y, 50) + pattern_api.SetArrangementPosition(b, 50, arr_y, 50) + for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 430.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 380.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + return f, b + + +def span(): + path = os.path.join(SCRATCH, "_probe4.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {"cells": {}} +best = None +utility_api.SetSimulationGravity(0.0) +try: + for arr_y in (60, 62, 65): + f, b = build(arr_y) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(80) + # brief soften so the plait relaxes against the skin (still weightless) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(30) + lo, hi = span() + mid = round((lo + hi) / 2.0, 4) + results["cells"][arr_y] = {"bottom_m": lo, "top_m": hi, "mid_m": mid} + if best is None or abs(mid - TARGET_MID) < abs(best[1] - TARGET_MID): + best = (arr_y, mid, f, b, lo, hi) + if abs(mid - TARGET_MID) <= 0.015: + break # good enough; keep this scene +finally: + utility_api.SetSimulationGravity(-9800.0) # restore; NEVER simulate after + +# If the loop ended on a non-best cell, rebuild the best one (weightless again). +arr_y, mid, f, b, lo, hi = best +if results["cells"].get(arr_y) is None or list(results["cells"])[-1] != arr_y: + utility_api.SetSimulationGravity(0.0) + try: + f, b = build(arr_y) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(80) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(30) + lo, hi = span() + finally: + utility_api.SetSimulationGravity(-9800.0) + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +utility_api.Refresh3DWindow() +results["final"] = {"arr_y": arr_y, "bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final2_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap + +import shutil +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final2_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final2_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v20.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v20.py new file mode 100644 index 0000000..11b617a --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v20.py @@ -0,0 +1,85 @@ +# FINAL v20: back panel = arrangement orientation 0 (bright face out, proven v19) +# + horizontally MIRRORED 2D pattern to compensate the L/R swap that the vertical- +# axis orientation spin introduces (v19: tube tilted, front panel pulled up to the +# collarbone). Mirrored coords need REMAPPED seam indices (tooling 3.3); the table +# says mirrored+remapped takes (False, False) -- sweep (False,False) and (True,True). +# +# back (mirrored) lines: 0 top | 1 sideL_up | 2 sideL_low | 3 hem | 4 sideR_low | 5 sideR_up +# pairs: front1(sideR_up)<->back5, front2(sideR_low)<->back4, +# front4(sideL_low)<->back2, front5(sideL_up)<->back1 +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +PTS_B = [(550.2 - x, y) for (x, y) in PTS_F] # horizontal mirror, same order +SEAMS = [(1, 5), (2, 4), (4, 2), (5, 1)] + + +def run_cell(tag, rev): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) + for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, rev, rev) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 74, 50) + pattern_api.SetArrangementPosition(b, 0, 82, 50) + pattern_api.SetArrangementOrientation(b, 0) # bright face out (proven v19) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.SetSimulationGravity(0.0) + try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + finally: + utility_api.SetSimulationGravity(-9800.0) + utility_api.Refresh3DWindow() + + out = {} + path = os.path.join(SCRATCH, "_probe20.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v20_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +results["FF"] = run_cell("FF", False) +results["TT"] = run_cell("TT", True) +# scene ends holding TT, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v21.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v21.py new file mode 100644 index 0000000..ebb39ee --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v21.py @@ -0,0 +1,80 @@ +# FINAL v21: v20-FF construction (mirrored back + orientation 0 + remapped seams, +# (False,False)) -- back is PERFECT. Only defect: the tube tilts front-high (~8 cm, +# front panel at the collarbone). Calibrate the FRONT arrangement y down; back stays 82. +# Two cells, winner stays in scene UNFROZEN. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +PTS_B = [(550.2 - x, y) for (x, y) in PTS_F] +SEAMS = [(1, 5), (2, 4), (4, 2), (5, 1)] + + +def run_cell(tag, front_y): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) + for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, False, False) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, front_y, 50) + pattern_api.SetArrangementPosition(b, 0, 82, 50) + pattern_api.SetArrangementOrientation(b, 0) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.SetSimulationGravity(0.0) + try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + finally: + utility_api.SetSimulationGravity(-9800.0) + utility_api.Refresh3DWindow() + + out = {} + path = os.path.join(SCRATCH, "_probe21.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v21_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +results["F70"] = run_cell("F70", 70) +results["F72"] = run_cell("F72", 72) +# scene ends holding F64, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v22.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v22.py new file mode 100644 index 0000000..36646f8 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v22.py @@ -0,0 +1,83 @@ +# FINAL v22: the front-height system is BISTABLE (bust deflects the tube over or +# under; y=70 slips low, y=72 catches high -- no stable middle by start height). +# Fix: start from the HIGH catch (y=72) and bias it down with a FEW PERCENT of +# gravity at the end -- the bust ledge stops it exactly where a real bandeau sits. +# Cells: bias -300 and -600 mm/s^2 (3% / 6% g), 50 frames each. Winner stays. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS_F = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +PTS_B = [(550.2 - x, y) for (x, y) in PTS_F] +SEAMS = [(1, 5), (2, 4), (4, 2), (5, 1)] + + +def run_cell(tag, bias): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS_F]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS_B]) + for lf, lb in SEAMS: + pattern_api.AddSeamlinePairGroup(f, lf, b, lb, False, False) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 72, 50) + pattern_api.SetArrangementPosition(b, 0, 82, 50) + pattern_api.SetArrangementOrientation(b, 0) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.SetSimulationGravity(0.0) + try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(70) # conform at the high catch + utility_api.SetSimulationGravity(bias) # gentle downward bias + utility_api.Simulate(50) + finally: + utility_api.SetSimulationGravity(-9800.0) + utility_api.Refresh3DWindow() + + out = {} + path = os.path.join(SCRATCH, "_probe22.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v22_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +results["g300"] = run_cell("g300", -300.0) +results["g600"] = run_cell("g600", -600.0) +# scene ends holding g600, UNFROZEN (do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v23.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v23.py new file mode 100644 index 0000000..4f590e5 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v23.py @@ -0,0 +1,81 @@ +# FINAL v23: v16-H74 recipe + SELF-MEASURING RETRY LOOP. The elastic-free tube's +# final height is BISTABLE and lands non-deterministically run-to-run (same script +# gave 1.08-1.32 twice, then 1.01-1.19). Rebuild until the garment top lands in +# [1.27, 1.35] m, max 6 attempts, keep the good drape in scene UNFROZEN. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +results = {"attempts": []} +ok = False +for attempt in range(6): + # CRITICAL: zero gravity BEFORE the scene is built. ResetClothArrangement + # materializes cloth with a solver tick; under full gravity that one tick + # biases the bistable tube into the LOW basin (the cross-session mystery). + utility_api.SetSimulationGravity(0.0) + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 3.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 74, 50) + pattern_api.SetArrangementPosition(b, 0, 82, 50) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() # gravity already zero (see above) + try: + utility_api.Simulate(40) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(110) + finally: + utility_api.SetSimulationGravity(-9800.0) + + path = os.path.join(SCRATCH, "_probe23.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + span = (round(zmin * 0.001, 4), round(zmax * 0.001, 4)) + results["attempts"].append(span) + if 1.27 <= span[1] <= 1.35: + ok = True + break + +results["accepted"] = ok +utility_api.Refresh3DWindow() +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "v23_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results[view] = dst + +# UNFROZEN; do not press play. Back panel face: right-click > Flip Normal (manual). +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v3.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v3.py new file mode 100644 index 0000000..2a5af8a --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v3.py @@ -0,0 +1,102 @@ +# FINAL v3: stiff-only zero-g wrap. +# +# v2 defects and their causes: +# - cyan/white band in renders = MD's FROZEN display tint -> snapshot BEFORE freezing +# - crumpled top edge + back panel ballooning off the back = the 30-frame soften: +# weightless soft cloth has nothing pressing its middle to the body. The garment +# is stiff plaited basketry -- stay strengthened for the WHOLE wrap. +# - 2 mm collision stand-off for a clean skin offset. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe5.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 65, 50) +pattern_api.SetArrangementPosition(b, 50, 65, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 430.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 380.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + pattern_api.SetPatternStrengthen(p, True) # stiff the WHOLE wrap + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(140) # weightless wrap + cinch +finally: + utility_api.SetSimulationGravity(-9800.0) # restore; never simulate after + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +# snapshots BEFORE freezing (frozen cloth renders cyan) +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final3_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final3_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final3_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v4.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v4.py new file mode 100644 index 0000000..2636d2c --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v4.py @@ -0,0 +1,101 @@ +# FINAL v4: SOFT zero-g wrap -- the winning recipe. +# +# probe_1_zerog.png (soft + elastic, weightless, 60f) already read like the +# reference: plait + rope bands + fringe all visible, band conformed to the chest. +# The stiff wrap (v3) tents off the bust and juts at the sides; the soften-after- +# stiff (v2) crumples. Soft-from-frame-0 is SAFE here because the bunching rule +# exists for gravity, and there is none. 150 frames for a tighter cinch, y=68 to +# center the band on target (measured map: 55->1.172, 65->1.218, 70->1.269). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe6.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 50, 68, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 430.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 380.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) +# NO strengthen: soft conforms; safe under zero-g (bunching needs gravity) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(150) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final4_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final4_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final4_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v5.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v5.py new file mode 100644 index 0000000..48db007 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v5.py @@ -0,0 +1,104 @@ +# FINAL v5: soft zero-g wrap, elastic targets = body circumference (NOT smaller). +# v4 taught: an over-tight ring (430 vs 459 body) cannot grip in zero-g frictionless +# contact -- it is EXPELLED off the torso like a squeezed seed and floats as a pouch +# in front of the chest. Snug-not-tight keeps the ring seated where it is placed. +# +# probe_1_zerog.png (soft + elastic, weightless, 60f) already read like the +# reference: plait + rope bands + fringe all visible, band conformed to the chest. +# The stiff wrap (v3) tents off the bust and juts at the sides; the soften-after- +# stiff (v2) crumples. Soft-from-frame-0 is SAFE here because the bunching rule +# exists for gravity, and there is none. 150 frames for a tighter cinch, y=68 to +# center the band on target (measured map: 55->1.172, 65->1.218, 70->1.269). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe6.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 50, 68, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 465.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 402.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) +# NO strengthen: soft conforms; safe under zero-g (bunching needs gravity) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(120) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final5_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final5_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final5_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v6.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v6.py new file mode 100644 index 0000000..4a1869f --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v6.py @@ -0,0 +1,104 @@ +# FINAL v5: soft zero-g wrap, elastic targets = body circumference (NOT smaller). +# v4 taught: an over-tight ring (430 vs 459 body) cannot grip in zero-g frictionless +# contact -- it is EXPELLED off the torso like a squeezed seed and floats as a pouch +# in front of the chest. Snug-not-tight keeps the ring seated where it is placed. +# +# probe_1_zerog.png (soft + elastic, weightless, 60f) already read like the +# reference: plait + rope bands + fringe all visible, band conformed to the chest. +# The stiff wrap (v3) tents off the bust and juts at the sides; the soften-after- +# stiff (v2) crumples. Soft-from-frame-0 is SAFE here because the bunching rule +# exists for gravity, and there is none. 150 frames for a tighter cinch, y=68 to +# center the band on target (measured map: 55->1.172, 65->1.218, 70->1.269). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe6.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 68, 50) # x IS azimuth: back panel at its native x=0, NOT 50 +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 465.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 402.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) +# NO strengthen: soft conforms; safe under zero-g (bunching needs gravity) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(120) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final6_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final6_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final6_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v7.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v7.py new file mode 100644 index 0000000..e7162fa --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v7.py @@ -0,0 +1,102 @@ +# FINAL v7: correct azimuth (back x=0) + two-phase weightless wrap. +# v6 made a true tube (front reads like the reference) but the back panel kept a +# fold-over and a drooping corner from being soft during the whole wrap. Phase it: +# 1. STIFF 60 f zero-g -- panels take position cleanly, no corner folds +# 2. soften + 90 f zero-g -- cloth conforms to the skin (no gravity, no slide) +# Cinch slightly tighter (450/390 @ 60): safe now that the ring encircles the body. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe7.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 68, 50) # x IS azimuth; back native x=0 +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + pattern_api.SetPatternStrengthen(p, True) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) # phase 1: stiff positioning + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(90) # phase 2: soft conform, weightless +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final7_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final7_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final7_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v8.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v8.py new file mode 100644 index 0000000..1503876 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v8.py @@ -0,0 +1,101 @@ +# FINAL v7: correct azimuth (back x=0) + two-phase weightless wrap. +# v6 made a true tube (front reads like the reference) but the back panel kept a +# fold-over and a drooping corner from being soft during the whole wrap. Phase it: +# 1. STIFF 60 f zero-g -- panels take position cleanly, no corner folds +# 2. soften + 90 f zero-g -- cloth conforms to the skin (no gravity, no slide) +# Cinch slightly tighter (450/390 @ 60): safe now that the ring encircles the body. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe7.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 68, 50) # x IS azimuth; back native x=0 +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + pattern_api.SetPatternStrengthen(p, True) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) # phase 1: stiff positioning + pattern_api.SetPatternStrengthen(f, False) # soften ONLY the front (v7: the + utility_api.Simulate(90) # soft back rolled its top edge) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final8_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final8_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final8_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_v9.py b/tools/tailor/work/voyager_bandeau_v1/md_final_v9.py new file mode 100644 index 0000000..24035ac --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_v9.py @@ -0,0 +1,100 @@ +# FINAL v7: correct azimuth (back x=0) + two-phase weightless wrap. +# v6 made a true tube (front reads like the reference) but the back panel kept a +# fold-over and a drooping corner from being soft during the whole wrap. Phase it: +# 1. STIFF 60 f zero-g -- panels take position cleanly, no corner folds +# 2. soften + 90 f zero-g -- cloth conforms to the skin (no gravity, no slide) +# Cinch slightly tighter (450/390 @ 60): safe now that the ring encircles the body. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def span(): + path = os.path.join(SCRATCH, "_probe7.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {} + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 0, 68, 50) # x IS azimuth; back native x=0 +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + pattern_api.SetPatternStrengthen(p, True) + +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(150) # ALL-stiff wrap: basketry stays basketry + # (v3 tenting was the wrong azimuth, not stiffness) +finally: + utility_api.SetSimulationGravity(-9800.0) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} + +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final9_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap +_tt = export_api.ExportTurntableImages(4) +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final9_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final9_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r" % (exc,) + +TINQS_GARMENT = {"garment": "voyager_bandeau_v1", "fabric": fab, + "patterns": {"front": f, "back": b}} +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_final_zerog.py b/tools/tailor/work/voyager_bandeau_v1/md_final_zerog.py new file mode 100644 index 0000000..564689e --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_final_zerog.py @@ -0,0 +1,137 @@ +# FINAL RECIPE: shaped-in-place strapless bandeau (no full-gravity exposure). +# +# Probe findings (md_probe_slide.py): MD cloth-skin contact is ~frictionless and +# elastic edges stretch under load, so NO strapless band survives -9800 gravity on +# this body -- it rides over the bust by stretching (30 frames: chest -> hips). +# Even 0.1 g slides it. Straps are the physical fix but the reference has none, and +# the deliverable is a STATIC export for the clothing pipeline -- so the drape is a +# shaping tool, not a stability proof: +# +# 1. sweep arrangement offset-y under a zero-g wrap to land the band on target +# (y=55 landed 1.078-1.287; target 1.14-1.31 -> need ~+4 cm) +# 2. rebuild at the best y: stiff zero-g wrap 80f -> soften, 0.1 g for 45f (folds +# form, slide ~2-4 cm only) -> restore full gravity WITHOUT simulating +# 3. freeze the patterns (best effort) so a stray UI play won't drop it +# +# Numbers target: band top 1.31 m, hem 1.14 m, tol 0.03. +import os + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] +TARGET_MID = (1.31 + 1.14) / 2.0 + + +def build(arr_y): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, arr_y, 50) + pattern_api.SetArrangementPosition(b, 50, arr_y, 50) + for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 430.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 380.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + return f, b + + +def span(): + path = os.path.join(SCRATCH, "_probe3.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +results = {"sweep": {}} + +# --- part 1: offset-y sweep under a pure zero-g wrap ------------------------ +utility_api.SetSimulationGravity(0.0) +try: + for arr_y in (55, 70, 85): + f, b = build(arr_y) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(60) + lo, hi = span() + results["sweep"][arr_y] = {"bottom_m": lo, "top_m": hi, + "mid_m": round((lo + hi) / 2.0, 4)} +finally: + utility_api.SetSimulationGravity(-9800.0) + +best_y = min(results["sweep"], + key=lambda k: abs(results["sweep"][k]["mid_m"] - TARGET_MID)) +results["best_y"] = best_y + +# --- part 2: final shape at best_y ------------------------------------------ +f, b = build(best_y) +pattern_api.SetPatternStrengthen(f, True) +pattern_api.SetPatternStrengthen(b, True) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(80) # weightless wrap + cinch, stiff + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.SetSimulationGravity(-980.0) # 0.1 g: folds without the slide + utility_api.Simulate(45) +finally: + utility_api.SetSimulationGravity(-9800.0) # restore; do NOT simulate again + +# best-effort freeze so a stray UI play won't drop the band +try: + for p in (f, b): + pattern_api.SetPatternFreeze(p, True) + results["frozen"] = True +except Exception as exc: + results["frozen"] = "failed: %r (doc: %s)" % (exc, pattern_api.SetPatternFreeze.__doc__) + +utility_api.Refresh3DWindow() +lo, hi = span() +results["final"] = {"bottom_m": lo, "top_m": hi, + "target": {"bottom_m": 1.14, "top_m": 1.31, "tol_m": 0.03}} +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "final_front.png") +export_api.ExportSnapshot3D(snap) +results["front_snap"] = snap + +import shutil +_tt = export_api.ExportTurntableImages(4) # 0 front, 1 side, 2 BACK, 3 side +if _tt and len(_tt) > 2: + back = os.path.join(SCRATCH, "final_back.png") + shutil.copyfile(_tt[2], back) + results["back_snap"] = back + side = os.path.join(SCRATCH, "final_side.png") + shutil.copyfile(_tt[1], side) + results["side_snap"] = side + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_flip_back.py b/tools/tailor/work/voyager_bandeau_v1/md_flip_back.py new file mode 100644 index 0000000..5a3938e --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_flip_back.py @@ -0,0 +1,30 @@ +# 1. Backup Can's manual state (zprj) BEFORE any change. +# 2. FlipPatternPiece on the back panel -- its reverse face points outward, which +# MD renders dull/dark ("under a shadow"). Introspect the doc first. +# 3. Snapshot to verify. NO sim, NO rebuild. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +BACKUP = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\work\voyager_bandeau_v1\manual_fit_backup.zprj" + +results = {} +export_api.ExportZPrj(BACKUP) +results["backup"] = BACKUP +results["flip_doc"] = pattern_api.FlipPatternPiece.__doc__ + +try: + pattern_api.FlipPatternPiece(1) # back panel + results["flipped"] = True +except Exception as exc: + results["flipped"] = "failed: %r" % (exc,) + +utility_api.Refresh3DWindow() +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "flip_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results[view] = dst + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_inspect_fix.py b/tools/tailor/work/voyager_bandeau_v1/md_inspect_fix.py new file mode 100644 index 0000000..8136457 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_inspect_fix.py @@ -0,0 +1,45 @@ +# INSPECT + MINIMAL FIX after Can's MANUAL fitting pass. His drape is sacred: +# NO NewProject, NO Simulate, NO arrangement calls, NO freeze. +# 1. snapshot the CURRENT state (front + full turntable) before touching anything +# 2. report patterns + their fabric indices +# 3. fix the "shadowed back": reassign the back panel to the front's fabric +# (v14 gave the back Tyvek, whose PBR renders darker) -- appearance only +# 4. snapshot again for comparison +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" + +results = {} +n = pattern_api.GetPatternCount() +results["pattern_count"] = n +results["fabrics_before"] = [pattern_api.GetPatternPieceFabricIndex(i) for i in range(n)] + +utility_api.Refresh3DWindow() +utility_api.SetCamViewPoint(2) +snap = os.path.join(SCRATCH, "manual_front_before.png") +export_api.ExportSnapshot3D(snap) +results["front_before"] = snap +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "manual_before_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results["before_" + view] = dst + +# ---- fix the shadowed back: give the back panel the FRONT panel's fabric ---- +# pattern 0 = front, 1 = back (created in that order by every recipe) +if n >= 2: + fab_front = pattern_api.GetPatternPieceFabricIndex(0) + pattern_api.SetPatternPieceFabricIndex(1, fab_front) + results["fabrics_after"] = [pattern_api.GetPatternPieceFabricIndex(i) for i in range(n)] + +utility_api.Refresh3DWindow() +_tt = export_api.ExportTurntableImages(4) +for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "manual_after_%s.png" % view) + shutil.copyfile(_tt[i], dst) + results["after_" + view] = dst + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_probe_arrange.py b/tools/tailor/work/voyager_bandeau_v1/md_probe_arrange.py new file mode 100644 index 0000000..e523cdc --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_probe_arrange.py @@ -0,0 +1,66 @@ +# PROBE: where do the two panels actually START, and how do they move in zero-g? +# Turntable (front/side/back/side) at 0 frames, then after 30 zero-g frames. +# Suspicion: the BACK panel is not behind the body at all, so every "tube" was +# really two panels sewing themselves into a bag in front of the chest. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) +b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) +for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) +fab = fabric_api.AddFabric(ZFAB) +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) +for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(f, 50, 68, 50) +pattern_api.SetArrangementPosition(b, 50, 68, 50) +for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 465.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 402.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + +utility_api.ResetClothArrangement() +utility_api.Refresh3DWindow() +results = {} +_tt = export_api.ExportTurntableImages(4) +for i, tag in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "arrange0_%s.png" % tag) + shutil.copyfile(_tt[i], dst) + results["presim_" + tag] = dst + +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(30) +finally: + utility_api.SetSimulationGravity(-9800.0) +utility_api.Refresh3DWindow() +_tt = export_api.ExportTurntableImages(4) +for i, tag in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "arrange30_%s.png" % tag) + shutil.copyfile(_tt[i], dst) + results["f30_" + tag] = dst + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_probe_backpoint.py b/tools/tailor/work/voyager_bandeau_v1/md_probe_backpoint.py new file mode 100644 index 0000000..ead0c3a --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_probe_backpoint.py @@ -0,0 +1,69 @@ +# PROBE: why is the back panel in FRONT? Dump Body_* arrangement entries, then +# sweep the back panel's arrangement (point name and offset z) with 0-frame +# turntable side shots. No simulation -- placement only. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +results = {} + +# one throwaway import just to read the arrangement table +utility_api.NewProject() +op = ApiTypes.ImportExportOption() +op.scale = 10.0 +op.bAddArrangementPoints = True +op.bAutoTranslate = True +import_api.ImportFBX(AVATAR_FBX, op) +full = pattern_api.GetArrangementList() +results["entry_keys"] = sorted(full[0].keys()) if full else [] +results["body_entries"] = [e for e in full + if "Body" in str(e.get("ArrangementName", ""))][:40] + +CELLS = [ + ("bp_z50", "Body_Back_Center_1", (50, 68, 50)), + ("bp_zneg", "Body_Back_Center_1", (50, 68, -50)), + ("bp_z150", "Body_Back_Center_1", (50, 68, 150)), +] + +for tag, point, (ox, oy, oz) in CELLS: + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + if point not in arr: + results[tag] = "POINT %r NOT IN LIST" % point + continue + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr[point]) + pattern_api.SetArrangementPosition(f, 50, 68, 50) + pattern_api.SetArrangementPosition(b, ox, oy, oz) + utility_api.ResetClothArrangement() + utility_api.Refresh3DWindow() + _tt = export_api.ExportTurntableImages(4) + cell = {} + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "bp_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + cell[view] = dst + results[tag] = cell + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_probe_slide.py b/tools/tailor/work/voyager_bandeau_v1/md_probe_slide.py new file mode 100644 index 0000000..8767cf4 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_probe_slide.py @@ -0,0 +1,104 @@ +# PROBE: where exactly does the bandeau escape? Three checkpoints, snapshots + spans. +# 1. after a 60-frame zero-g wrap+cinch (is it actually snug at the chest?) +# 2. after 30 frames of full gravity (has it moved? how far?) +# 3. after 60 more frames (where does it end up?) +# Also probes a LOW-gravity settle as a candidate fix in the same session. +import os + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def build(): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 55, 50) + pattern_api.SetArrangementPosition(b, 50, 55, 50) + return f, b + + +def set_elastic(p, line, total, strength): + pattern_api.SetPatternPieceElastic(p, line, True) + pattern_api.SetPatternPieceElasticTotalLength(p, line, total) + pattern_api.SetPatternPieceElasticStrength(p, line, strength) + + +def span(): + path = os.path.join(SCRATCH, "_probe2.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +def shoot(tag): + utility_api.Refresh3DWindow() + utility_api.SetCamViewPoint(2) + p = os.path.join(SCRATCH, "probe_%s.png" % tag) + export_api.ExportSnapshot3D(p) + lo, hi = span() + return {"bottom_m": lo, "top_m": hi, "snap": p} + + +results = {} + +# --- part 1: checkpointed failure ------------------------------------------ +f, b = build() +for p in (f, b): + set_elastic(p, 0, 430.0, 60.0) + set_elastic(p, 3, 380.0, 60.0) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) + results["1_after_zerog_wrap"] = shoot("1_zerog") +finally: + utility_api.SetSimulationGravity(-9800.0) +utility_api.Simulate(30) +results["2_gravity_30f"] = shoot("2_g30") +utility_api.Simulate(60) +results["3_gravity_90f"] = shoot("3_g90") + +# --- part 2: candidate fix -- LOW gravity settle after the zero-g wrap ------ +f, b = build() +for p in (f, b): + set_elastic(p, 0, 430.0, 60.0) + set_elastic(p, 3, 380.0, 60.0) +utility_api.ResetClothArrangement() +utility_api.SetSimulationGravity(0.0) +try: + utility_api.Simulate(60) + utility_api.SetSimulationGravity(-980.0) # 1/10 g: folds form, slide force 10x smaller + utility_api.Simulate(120) + results["4_lowg_settle"] = shoot("4_lowg") +finally: + utility_api.SetSimulationGravity(-9800.0) + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_script.py b/tools/tailor/work/voyager_bandeau_v1/md_script.py new file mode 100644 index 0000000..180ebb5 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_script.py @@ -0,0 +1,162 @@ +# GENERATED by tools/tailor/draft_garment.py -- DO NOT EDIT. +# garment : voyager_bandeau_v1 +# stage : all +# config : C:\Users\CAN\tinqs-ltd\animation\tools\tailor\work\voyager_bandeau_v1\config.json +# emitted : 2026-08-18T20:09:18 +# Edit the config's `md` block and re-emit; edits here are lost. +# +# Run inside an MD bridge session (a human must click Plugin > TinqsMDBridge first): +# python tools/md_bridge.py --file --timeout 310 +# +# HARD-WON MD FACTS (do not rediscover -- see tools/tailor/draft_garment.py): +# - 2D pattern space: units are mm, +y is UP in the 3D mapping. Straps/neck at +# HIGH y, hem at y=0. Panels built y-down drape upside-down over the head and +# tangle -- it looks like a seam bug, it isn't. +# - MD's 3D unit is mm (gravity -9800). Blender-exported FBX avatars land 10x +# small -- import with op.scale = 10. ImportAvatar() is .avt only (False on FBX). +# - op.bAddArrangementPoints = True generates the ~98 named arrangement points; +# without it there is nowhere to hang cloth. +# - CreatePatternWithPoints takes (x, y, type) triples, type 0 = corner. Returned +# id is the pattern index; line i = edge point[i] -> point[i+1]. +# - Seams are WHOLE-EDGE only: AddSeamlinePairGroup(a, lineA, b, lineB, False, +# False) with the SAME line index on mirrored front/back panels. Cross-pairing +# sews the garment over the face. Neck gaps and armholes are extra points in +# the outline, not partial seams. +# - SetArrangement() only ASSIGNS; utility_api.ResetClothArrangement() APPLIES it +# (ReDrape3DArrangement only materializes not-yet-draped cloth). +# - Arrangement INDICES REGENERATE on every avatar import -- always look up by +# NAME from GetArrangementList(). Offsets aren't stable either; verify with a +# 0-frame snapshot (the diagnostic that unsticks everything). +# - utility_api.NewProject() DELETES the avatar -- re-import after. +# - AddFabric() needs a .zfab FILE PATH (a name string silently fails); fabric 0 +# is the shared default, coloring it dyes every garment. Assign with +# SetPatternPieceFabricIndex -- AssignFabricToPattern() never worked. +# - SetBaseTextureMapImageGivenFilePath(PATH, fabricIdx) -- path is arg 0. +# - PNG DPI sets a texture's physical size in MD; control tiling via dpi in PIL. +# - Strengthen through the WHOLE settle, relax only at the end; elastic (if any) +# mid-settle, never from frame 0. One garment per scene. +# - Simulate(n) is synchronous, ~1 min per 300 frames -- raise the client timeout. +# - GetClothPositions() stays empty: no mesh introspection, QC is image-based. + +import os + +report = {"garment": 'voyager_bandeau_v1', "stage": 'all'} + +# ---- scene --------------------------------------------------------------- +utility_api.NewProject() # NOTE: this DELETES the avatar; re-import below +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +op = ApiTypes.ImportExportOption() +op.scale = 10.0 # Blender-exported FBX lands 10x small +op.bAddArrangementPoints = True # ~98 named points to hang cloth on +op.bAutoTranslate = True +report["avatar"] = import_api.ImportFBX(AVATAR_FBX, op) # ImportAvatar() is .avt only + +# ---- pattern (mm; +y is UP in 3D -- hem at y=0, neck/straps at high y) ---- +# front: strapless band: W 550.2 at bust (circ 1083.4 + ease 17), top 467.2, hem 405.7, H 170 +_pts_p_front = [ + (41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6), +] +p_front = pattern_api.CreatePatternWithPoints([(x + 0.0, y + 0.0, 0) for (x, y) in _pts_p_front]) +# back: identical panel; lines 0 top | 1 sideR-up | 2 sideR-low | 3 hem | 4 sideL-low | 5 sideL-up +_pts_p_back = [ + (41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6), +] +p_back = pattern_api.CreatePatternWithPoints([(x + 800.2, y + 0.0, 0) for (x, y) in _pts_p_back]) +report["ids"] = [p_front, p_back] + +# ---- seams (WHOLE-EDGE only; same line index on mirrored panels) --------- +pattern_api.AddSeamlinePairGroup(p_front, 1, p_back, 1, True, True) +pattern_api.AddSeamlinePairGroup(p_front, 2, p_back, 2, True, True) +pattern_api.AddSeamlinePairGroup(p_front, 4, p_back, 4, True, True) +pattern_api.AddSeamlinePairGroup(p_front, 5, p_back, 5, True, True) + +# Paired edges must be EQUAL, not close: a 0.075 mm 'rounding' difference was +# a slanted edge that notched a waistband. Fail loudly BEFORE wasting a sim. +_pairs = [(p_front, 1, p_back, 1), (p_front, 2, p_back, 2), (p_front, 4, p_back, 4), (p_front, 5, p_back, 5)] +report["seam_lengths"] = [] +_bad = [] +for _pa, _la, _pb, _lb in _pairs: + _fa = pattern_api.GetLineLength(_pa, _la) + _fb = pattern_api.GetLineLength(_pb, _lb) + report["seam_lengths"].append((_pa, _la, round(_fa, 3), _pb, _lb, round(_fb, 3))) + if abs(_fa - _fb) > 0.1: + _bad.append("%s.%s=%.3f vs %s.%s=%.3f" % (_pa, _la, _fa, _pb, _lb, _fb)) +if _bad: + raise RuntimeError("seam length mismatch (construction bug, not rounding): " + + "; ".join(_bad)) + +# ---- fabric (never touch index 0: it is the scene-wide default) --------- +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +fab = fabric_api.AddFabric(ZFAB) # a name string silently fails +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) # path is arg 0 +for _p in (p_front, p_back,): + pattern_api.SetPatternPieceFabricIndex(_p, fab) # AssignFabricToPattern never worked + +# ---- arrangement (BY NAME: indices regenerate on every avatar import) ---- +arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} +pattern_api.SetArrangement(p_front, arr['Body_Front_Center_1']) +pattern_api.SetArrangement(p_back, arr['Body_Back_Center_1']) +pattern_api.SetArrangementPosition(p_front, 50, 55, 50) +pattern_api.SetArrangementPosition(p_back, 50, 55, 50) + +# Hand the pattern ids to a later --stage drape/publish in the SAME session. +TINQS_GARMENT = {"garment": 'voyager_bandeau_v1', "fabric": fab, "patterns": {'front': p_front, 'back': p_back}} + +# THE diagnostic: apply the arrangement and shoot with ZERO sim frames. It shows +# where the panels actually start, before physics muddies it. Reach for this the +# moment a drape misbehaves -- upside-down panels look exactly like seam bugs. +utility_api.ResetClothArrangement() +utility_api.SetCamViewPoint(2) # SetViewPoint() does nothing; 2 = front +presim_snap = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad\voyager_bandeau_presim.png" +os.makedirs(os.path.dirname(presim_snap), exist_ok=True) +export_api.ExportSnapshot3D(presim_snap) +report['presim_snap'] = presim_snap + +# ---- drape --------------------------------------------------------------- +# Stiffen through the WHOLE settle: soft fabric from frame 0 rolls into a bunch. +pattern_api.SetPatternStrengthen(p_front, True) +pattern_api.SetPatternStrengthen(p_back, True) +utility_api.ResetClothArrangement() # SetArrangement only assigns; THIS applies it +report["sim1"] = utility_api.Simulate(250) # synchronous, ~1 min / 300 frames +# Elastic MID-SETTLE, never from frame 0 -- elastic-first drapes cinch the +# garment off one hip before the cloth has wrapped. +pattern_api.SetPatternPieceElastic(p_front, 0, True) +pattern_api.SetPatternPieceElasticTotalLength(p_front, 0, 450.0) +pattern_api.SetPatternPieceElasticStrength(p_front, 0, 60.0) +pattern_api.SetPatternPieceElastic(p_back, 0, True) +pattern_api.SetPatternPieceElasticTotalLength(p_back, 0, 450.0) +pattern_api.SetPatternPieceElasticStrength(p_back, 0, 60.0) +pattern_api.SetPatternPieceElastic(p_front, 3, True) +pattern_api.SetPatternPieceElasticTotalLength(p_front, 3, 390.0) +pattern_api.SetPatternPieceElasticStrength(p_front, 3, 60.0) +pattern_api.SetPatternPieceElastic(p_back, 3, True) +pattern_api.SetPatternPieceElasticTotalLength(p_back, 3, 390.0) +pattern_api.SetPatternPieceElasticStrength(p_back, 3, 60.0) +report["sim_elastic"] = utility_api.Simulate(80) +# Relax only at the end, so the settled shape falls into natural folds. +pattern_api.SetPatternStrengthen(p_front, False) +pattern_api.SetPatternStrengthen(p_back, False) +report["sim2"] = utility_api.Simulate(50) +utility_api.Refresh3DWindow() +utility_api.SetCamViewPoint(2) # SetViewPoint() does nothing; 2 = front +snap = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad\voyager_bandeau_front.png" +os.makedirs(os.path.dirname(snap), exist_ok=True) +export_api.ExportSnapshot3D(snap) +report['snap'] = snap +# ExportSnapshot3D has NO rear view (SetCamViewPoint 0-7: none is the back). +# Turntable ignores any path arg and reuses the same output names -- copy now. +import shutil +_tt = export_api.ExportTurntableImages(4) # 0 front, 1 side, 2 BACK, 3 side +if _tt and len(_tt) > 2: + back_snap = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad\voyager_bandeau_back.png" + os.makedirs(os.path.dirname(back_snap), exist_ok=True) + shutil.copyfile(_tt[2], back_snap) + report["back_snapshot"] = back_snap +else: + report["back_snapshot"] = "TURNTABLE RETURNED NOTHING -- rear unverified" + +result = report diff --git a/tools/tailor/work/voyager_bandeau_v1/md_sweep_backfix.py b/tools/tailor/work/voyager_bandeau_v1/md_sweep_backfix.py new file mode 100644 index 0000000..d565ccb --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_sweep_backfix.py @@ -0,0 +1,127 @@ +# SWEEP 3: iron the diagonal fold out of the BACK panel (v8 = current best). +# v8: back stiff whole wrap -> diagonal fold from phase-1 seam pull. +# v7: back soft in phase 2 -> top edge rolled. +# Variants (all inherit the v8 recipe otherwise: zero-g, y=68, back x=0, +# elastic 450/390 @ 60, stiff 60f, soften front, 90f): +# B_brief +20f with the back briefly soft at the very end (release the fold) +# C_solid phase 2 with back at SolidifyStrengthen 0.5 (half-stiff conform) +# D_delay elastic OFF during phase 1 (seams settle first), ON for phase 2 +# Judge: turntable BACK shot per variant + garment z-span. +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def build(with_elastic=True): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 68, 50) + pattern_api.SetArrangementPosition(b, 0, 68, 50) + if with_elastic: + enable_elastic(f, b) + return f, b + + +def enable_elastic(f, b): + for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + + +def span(): + path = os.path.join(SCRATCH, "_probe8.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +def shoot(tag): + utility_api.Refresh3DWindow() + out = {} + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "bf_%s_%s.png" % (tag, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + lo, hi = span() + out["bottom_m"], out["top_m"] = lo, hi + return out + + +results = {} +utility_api.SetSimulationGravity(0.0) +try: + # --- B_brief: v8 + 20f brief back-soften at the end ---------------------- + f, b = build() + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(60) + pattern_api.SetPatternStrengthen(f, False) + utility_api.Simulate(90) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(20) + results["B_brief"] = shoot("B_brief") + + # --- C_solid: back at half stiffness during phase 2 ---------------------- + f, b = build() + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(60) + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + pattern_api.SetPatternPieceSolidifyStrengthen(b, 0.5) + utility_api.Simulate(90) + results["C_solid"] = shoot("C_solid") + + # --- D_delay: seams settle 60f stiff WITHOUT elastic, then elastic 90f --- + f, b = build(with_elastic=False) + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(60) + enable_elastic(f, b) + pattern_api.SetPatternStrengthen(f, False) + utility_api.Simulate(90) + results["D_delay"] = shoot("D_delay") +finally: + utility_api.SetSimulationGravity(-9800.0) + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_sweep_backheight.py b/tools/tailor/work/voyager_bandeau_v1/md_sweep_backheight.py new file mode 100644 index 0000000..e7a5867 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_sweep_backheight.py @@ -0,0 +1,82 @@ +# SWEEP 4: lift the drooping BACK of the band. Arrangement is PER-PANEL, so the +# back can start higher (y 78 / 85) while the front stays at its proven 68. +# Recipe otherwise = v8 (zero-g, stiff 60, soften front only, 90, elastic 450/390). +# Ends UNFROZEN so Can sees the texture in the viewport (freeze tint hides it). +import os +import shutil + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def run_cell(back_y): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + pattern_api.SetAddlThicknessCollision(p, 2.0) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 68, 50) + pattern_api.SetArrangementPosition(b, 0, back_y, 50) + for p in (f, b): + pattern_api.SetPatternPieceElastic(p, 0, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 0, 450.0) + pattern_api.SetPatternPieceElasticStrength(p, 0, 60.0) + pattern_api.SetPatternPieceElastic(p, 3, True) + pattern_api.SetPatternPieceElasticTotalLength(p, 3, 390.0) + pattern_api.SetPatternPieceElasticStrength(p, 3, 60.0) + pattern_api.SetPatternStrengthen(p, True) + utility_api.ResetClothArrangement() + utility_api.SetSimulationGravity(0.0) + try: + utility_api.Simulate(60) + pattern_api.SetPatternStrengthen(f, False) + utility_api.Simulate(90) + finally: + utility_api.SetSimulationGravity(-9800.0) + utility_api.Refresh3DWindow() + + out = {} + path = os.path.join(SCRATCH, "_probe12.obj") + xop = ApiTypes.ImportExportOption() + xop.bExportGarment = True + xop.bExportAvatar = False + export_api.ExportOBJ(path, xop) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + zmin, zmax = min(zmin, yv), max(zmax, yv) + out["bottom_m"], out["top_m"] = round(zmin * 0.001, 4), round(zmax * 0.001, 4) + _tt = export_api.ExportTurntableImages(4) + for i, view in enumerate(("front", "side1", "back", "side2")): + if _tt and len(_tt) > i: + dst = os.path.join(SCRATCH, "bh_%d_%s.png" % (back_y, view)) + shutil.copyfile(_tt[i], dst) + out[view] = dst + return out + + +results = {} +results["y78"] = run_cell(78) +results["y85"] = run_cell(85) +# scene ends holding y85, UNFROZEN (texture visible; do not press play) +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_sweep_hold.py b/tools/tailor/work/voyager_bandeau_v1/md_sweep_hold.py new file mode 100644 index 0000000..0928d48 --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_sweep_hold.py @@ -0,0 +1,110 @@ +# SWEEP: can the strapless voyager bandeau hold at the bust, and with which recipe? +# +# v1 (md_script.py) slid to the floor: 250 stiff settle frames gave gravity time to +# push the rigid band off the chest before the elastic ever engaged. Axis swept here: +# WHEN the elastic lands and whether the cloth is stiff or soft while it cinches. +# +# A_control v1 recipe verbatim -- must land on the floor or the harness is broken +# B_early stiff 40 -> elastic (430/380 @ 60) -> 120 -> relax 40 +# C_soft stiff 40 -> soften + elastic (430/380 @ 60) -> 120 +# D_hard stiff 30 -> elastic (400/370 @ 100) -> 130 -> relax 40 +# +# Pass/fail is read from GEOMETRY (tooling.md section 7): probe OBJ, garment z-span +# in metres. Target: top ~1.31, bottom ~1.14 (tol 0.03). Floor = top < 0.3. +# OBJ is in mm with y as height (tooling.md section 2). +import os + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + + +def build(): + utility_api.NewProject() # deletes the avatar; re-import below + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): # identical panels -> (True, True) + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 55, 50) # Body_*_Center_1: SAME x + pattern_api.SetArrangementPosition(b, 50, 55, 50) + return f, b + + +def set_elastic(p, line, total, strength): + pattern_api.SetPatternPieceElastic(p, line, True) + pattern_api.SetPatternPieceElasticTotalLength(p, line, total) + pattern_api.SetPatternPieceElasticStrength(p, line, strength) + + +def garment_span_m(): + path = os.path.join(SCRATCH, "_sweep_probe.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) # OBJ: y is height, mm + if yv < zmin: + zmin = yv + if yv > zmax: + zmax = yv + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +VARIANTS = [ + ("A_control", dict(pre=250, top=450.0, hem=390.0, strength=60.0, + elastic_frames=80, soften_at_elastic=False, relax=50)), + ("B_early", dict(pre=40, top=430.0, hem=380.0, strength=60.0, + elastic_frames=120, soften_at_elastic=False, relax=40)), + ("C_soft", dict(pre=40, top=430.0, hem=380.0, strength=60.0, + elastic_frames=120, soften_at_elastic=True, relax=0)), + ("D_hard", dict(pre=30, top=400.0, hem=370.0, strength=100.0, + elastic_frames=130, soften_at_elastic=False, relax=40)), +] + +results = {} +for name, v in VARIANTS: + f, b = build() + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.ResetClothArrangement() + utility_api.Simulate(v["pre"]) + if v["soften_at_elastic"]: + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + for p in (f, b): + set_elastic(p, 0, v["top"], v["strength"]) # line 0 = top edge + set_elastic(p, 3, v["hem"], v["strength"]) # line 3 = hem + utility_api.Simulate(v["elastic_frames"]) + if v["relax"]: + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(v["relax"]) + utility_api.Refresh3DWindow() + lo, hi = garment_span_m() + utility_api.SetCamViewPoint(2) + snap = os.path.join(SCRATCH, "sweep_%s.png" % name) + export_api.ExportSnapshot3D(snap) + results[name] = {"band_bottom_m": lo, "band_top_m": hi, + "on_body": hi > 1.0, "snap": snap} + +result = results diff --git a/tools/tailor/work/voyager_bandeau_v1/md_sweep_zerog.py b/tools/tailor/work/voyager_bandeau_v1/md_sweep_zerog.py new file mode 100644 index 0000000..db99dda --- /dev/null +++ b/tools/tailor/work/voyager_bandeau_v1/md_sweep_zerog.py @@ -0,0 +1,133 @@ +# SWEEP 2: zero-gravity donning for the strapless voyager bandeau. +# +# Sweep 1 (md_sweep_hold.py) proved elastic timing is NOT the lever: all four +# variants (incl. frame-30 elastic at strength 100) ended on the floor. The probe +# span showed the loop passed the 1095 mm hips, which a closed 812 mm hem cannot -- +# so the panels FREE-FALL ~0.5 m during the first frames while the side seams are +# still closing, finish sewing around the shins, and slide off. Straps fixed this +# for the pari by catching the shoulders during the drop. +# +# Fix: utility_api.SetSimulationGravity(0) while the seams close and the elastic +# cinches the band onto the chest, then restore gravity and settle. Gravity is +# restored in try/finally -- the exec namespace persists in-session and a later +# garment must not inherit zero-g. +# +# E_zerog_soft zero-g wrap 100 soft + elastic 430/380 @ 60 -> gravity, 150, snapshot +# F_zerog_stiff zero-g wrap 100 stiff + same elastic -> gravity, stiff 100 -> relax 50 +# G_zerog_tight like E but top cinched to 410 +# +# Pass/fail from geometry: band top ~1.31 m, bottom ~1.14 m (tol 0.03). +import os + +SCRATCH = r"C:\Users\CAN\AppData\Local\Temp\claude\C--Users-CAN-tinqs-ltd-docs\3744fd8e-1342-446c-9677-7aafbafc8d18\scratchpad" +AVATAR_FBX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\avatar\Lena_QuatSkin_Avatar.fbx" +ZFAB = r"C:\Users\Public\Documents\MarvelousDesigner\New Assets\Fabric\(Default for Simulation).zfab" +TEX = r"C:\Users\CAN\tinqs-ltd\animation\tools\tailor\textures\voyager_bandeau.png" +PTS = [(41.5, 170.0), (508.7, 170.0), (550.2, 123.6), + (478.0, 0.0), (72.2, 0.0), (0.0, 123.6)] + +GRAVITY_DOC = utility_api.SetSimulationGravity.__doc__ + + +def set_gravity(g): + """Signature unverified -- try scalar, fall back to a vector (MD 3D is y-up).""" + try: + utility_api.SetSimulationGravity(float(g)) + return "scalar" + except TypeError: + utility_api.SetSimulationGravity(0.0, float(g), 0.0) + return "vector" + + +def build(): + utility_api.NewProject() + op = ApiTypes.ImportExportOption() + op.scale = 10.0 + op.bAddArrangementPoints = True + op.bAutoTranslate = True + import_api.ImportFBX(AVATAR_FBX, op) + f = pattern_api.CreatePatternWithPoints([(x, y, 0) for (x, y) in PTS]) + b = pattern_api.CreatePatternWithPoints([(x + 800.2, y, 0) for (x, y) in PTS]) + for ln in (1, 2, 4, 5): + pattern_api.AddSeamlinePairGroup(f, ln, b, ln, True, True) + fab = fabric_api.AddFabric(ZFAB) + fabric_api.SetBaseTextureMapImageGivenFilePath(TEX, fab) + for p in (f, b): + pattern_api.SetPatternPieceFabricIndex(p, fab) + arr = {a["ArrangementName"]: int(a["ArrangementIndex"]) + for a in pattern_api.GetArrangementList()} + pattern_api.SetArrangement(f, arr['Body_Front_Center_1']) + pattern_api.SetArrangement(b, arr['Body_Back_Center_1']) + pattern_api.SetArrangementPosition(f, 50, 55, 50) + pattern_api.SetArrangementPosition(b, 50, 55, 50) + return f, b + + +def set_elastic(p, line, total, strength): + pattern_api.SetPatternPieceElastic(p, line, True) + pattern_api.SetPatternPieceElasticTotalLength(p, line, total) + pattern_api.SetPatternPieceElasticStrength(p, line, strength) + + +def garment_span_m(): + path = os.path.join(SCRATCH, "_sweep_probe.obj") + op = ApiTypes.ImportExportOption() + op.bExportGarment = True + op.bExportAvatar = False + export_api.ExportOBJ(path, op) + zmin, zmax = 1e9, -1e9 + with open(path) as fh: + for ln in fh: + if ln.startswith("v "): + yv = float(ln.split()[2]) + if yv < zmin: + zmin = yv + if yv > zmax: + zmax = yv + return round(zmin * 0.001, 4), round(zmax * 0.001, 4) + + +VARIANTS = [ + ("E_zerog_soft", dict(stiff_wrap=False, top=430.0, hem=380.0, strength=60.0, + wrap_frames=100, settle_stiff=False, settle=150, relax=0)), + ("F_zerog_stiff", dict(stiff_wrap=True, top=430.0, hem=380.0, strength=60.0, + wrap_frames=100, settle_stiff=True, settle=100, relax=50)), + ("G_zerog_tight", dict(stiff_wrap=False, top=410.0, hem=380.0, strength=60.0, + wrap_frames=100, settle_stiff=False, settle=150, relax=0)), +] + +results = {"gravity_doc": GRAVITY_DOC} +for name, v in VARIANTS: + f, b = build() + if v["stiff_wrap"]: + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + for p in (f, b): + set_elastic(p, 0, v["top"], v["strength"]) + set_elastic(p, 3, v["hem"], v["strength"]) + utility_api.ResetClothArrangement() + mode = set_gravity(0.0) + try: + utility_api.Simulate(v["wrap_frames"]) # weightless wrap + cinch + finally: + if mode == "scalar": + utility_api.SetSimulationGravity(-9800.0) + else: + utility_api.SetSimulationGravity(0.0, -9800.0, 0.0) + if v["settle_stiff"] and not v["stiff_wrap"]: + pattern_api.SetPatternStrengthen(f, True) + pattern_api.SetPatternStrengthen(b, True) + utility_api.Simulate(v["settle"]) # now fight gravity + if v["relax"]: + pattern_api.SetPatternStrengthen(f, False) + pattern_api.SetPatternStrengthen(b, False) + utility_api.Simulate(v["relax"]) + utility_api.Refresh3DWindow() + lo, hi = garment_span_m() + utility_api.SetCamViewPoint(2) + snap = os.path.join(SCRATCH, "sweep_%s.png" % name) + export_api.ExportSnapshot3D(snap) + results[name] = {"band_bottom_m": lo, "band_top_m": hi, + "gravity_mode": mode, "snap": snap} + +result = results