105 lines
4.2 KiB
JSON
105 lines
4.2 KiB
JSON
|
|
{
|
||
|
|
"body": "C:/Users/Jeremy/tinqs/ariki-game/assets/quaternius/derived-bodies/Ariki_Female_QuatSkin_SkirtRig_4seg.glb",
|
||
|
|
"weld_threshold": 0.0006,
|
||
|
|
"shell_mm": 4,
|
||
|
|
"min_island_verts": 40,
|
||
|
|
"name": "bottomTest1",
|
||
|
|
"source": "C:/Users/Jeremy/tinqs/animation/tools/tailor/lena_piupiu_v3_garment.fbx",
|
||
|
|
"align": {
|
||
|
|
"top_bone": "spine_01",
|
||
|
|
"scale_xy": 0.1,
|
||
|
|
"scale_z": 0.1,
|
||
|
|
"z_nudge": 0.0,
|
||
|
|
"xy_nudge": [
|
||
|
|
0.0,
|
||
|
|
0.0
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"parts": {
|
||
|
|
"Bottom": {
|
||
|
|
"slot": "Legs",
|
||
|
|
"islands": [
|
||
|
|
0
|
||
|
|
],
|
||
|
|
"tris": 8000,
|
||
|
|
"planar_deg": 0,
|
||
|
|
"fit": {
|
||
|
|
"target": "BODY_SHELL",
|
||
|
|
"mask": "full",
|
||
|
|
"offset_mm": 3,
|
||
|
|
"wrap_mode": "OUTSIDE",
|
||
|
|
"hem_mm": 80,
|
||
|
|
"_note_hem": "80mm, up from the 14 the old piupiu used. This is what stops the leg clipping through: it gives the skirt a real BELL that the leg swings INSIDE, rather than cloth lying on the thigh for the leg to punch through. Graded 0 at the hip to full at the hem, so the waistband still rides the hip. 45 was not enough; 80 holds through Walk and Dance."
|
||
|
|
},
|
||
|
|
"weights": "skirt_bones",
|
||
|
|
"color": [
|
||
|
|
0.45,
|
||
|
|
0.35,
|
||
|
|
0.15
|
||
|
|
],
|
||
|
|
"texture": "../tools/tailor/textures/bottom_test1.png",
|
||
|
|
"_note_planar": "0, NOT the default 5. reduce applies a planar DISSOLVE unconditionally before the tri-budget check, and these strands are flat strips, so deg 5 collapsed 3012 verts -> 884, destroying the vertical rows the 4-segment skirt ring needs to bend smoothly (the rig session's ask 4). The 8000-tri budget was never the constraint (4136).",
|
||
|
|
"_note_texture": "bottom_test1.png is generated by tools/tailor/textures/make_bottom_test1.py and MUST stay V-only (constant along U). A strand garment samples a different U slice per strand, so any horizontal variation makes the woven bands misalign strand-to-strand and read as noise. Measured before/after: mean horizontal stdev per row 50.2 -> 5.9. The pre-strand original is kept as bottom_test1_prestrand.png."
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"export": {
|
||
|
|
"out_dir": "C:/Users/Jeremy/tinqs/ariki-game/assets/quaternius/outfits/test1",
|
||
|
|
"gender": "Female",
|
||
|
|
"set": "Test1",
|
||
|
|
"note": "32 discrete strands from a 60 mm rigid waistband - Legs slot. Bound to the 4-SEGMENT skirt ring."
|
||
|
|
},
|
||
|
|
"catalog": {
|
||
|
|
"id": "bottom_test1_f",
|
||
|
|
"displayName": "Bottom Test 1",
|
||
|
|
"charisma": 0.1,
|
||
|
|
"workSpeed": 0.02,
|
||
|
|
"category": "ceremonial"
|
||
|
|
},
|
||
|
|
"expect": {
|
||
|
|
"penetration": {
|
||
|
|
"depth_mm": 1.0,
|
||
|
|
"max_verts": 0,
|
||
|
|
"clips": [
|
||
|
|
"Idle",
|
||
|
|
"Walk"
|
||
|
|
],
|
||
|
|
"frames_per_clip": 6
|
||
|
|
},
|
||
|
|
"islands": {
|
||
|
|
"count": 1,
|
||
|
|
"mapped": {
|
||
|
|
"0": {
|
||
|
|
"verts": [
|
||
|
|
2861,
|
||
|
|
3162
|
||
|
|
],
|
||
|
|
"tris": [
|
||
|
|
3929,
|
||
|
|
4342
|
||
|
|
],
|
||
|
|
"z": [
|
||
|
|
4.21,
|
||
|
|
11.26
|
||
|
|
],
|
||
|
|
"x": [
|
||
|
|
-2.73,
|
||
|
|
2.79
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"post_export": {
|
||
|
|
"_why": "MANUAL, REQUIRED, ORDER-SENSITIVE. clothing/skirt_garment_weights.py owns skirt weights; garment_pipeline.py's own 2-segment strand_weights is overwritten by it and whichever runs LAST wins. Must run AFTER export, BEFORE import. Nothing in garment.py enforces this \u2014 use clothing/reproduce_test1.py, which reads this block.",
|
||
|
|
"tool": "clothing/skirt_garment_weights.py",
|
||
|
|
"body": "C:/Users/Jeremy/tinqs/ariki-game/assets/quaternius/derived-bodies/Ariki_Female_QuatSkin_SkirtRig_4seg.glb",
|
||
|
|
"env": {
|
||
|
|
"SKIRT_HEM_FREE": "0.02",
|
||
|
|
"SKIRT_FOLLOW_MAX": "0.70",
|
||
|
|
"SKIRT_CONTACT_R": "0.22",
|
||
|
|
"SKIRT_FALLOFF": "0.14"
|
||
|
|
},
|
||
|
|
"_why_env": "The tool's defaults (FOLLOW_MAX 0.20, HEM_FREE 0.55) were tuned against the SHORT continuous piupiu. This skirt hangs to y 0.451 with the knee at ~0.517, so HEM_FREE 0.55 put the whole knee region in the no-follow band and the knee came through the cloth. These values lift mean thigh follow 0.128 -> 0.698, which is what carries cloth WITH the knee. Env overrides were ADDED to that script by this session; its defaults are unchanged so other garments are unaffected.",
|
||
|
|
"expect": "mean thigh follow ~0.70, NO dead strands (all 8 non-zero)"
|
||
|
|
}
|
||
|
|
}
|