diff --git a/.claude/skills/character-pipeline/SKILL.md b/.claude/skills/character-pipeline/SKILL.md index 79e9b2b..3bf2a7f 100644 --- a/.claude/skills/character-pipeline/SKILL.md +++ b/.claude/skills/character-pipeline/SKILL.md @@ -42,6 +42,10 @@ python tools/pipeline.py --uid --name # From an unrigged mesh — auto-rigs, and accepts the quality loss python tools/pipeline.py --input --name + +# Rigged (or auto-rigged) but with NO skirt/hair bones — grow them, or the +# costume is welded solid and the spring solver has nothing to simulate +python tools/pipeline.py --input --name --rigged --grow-cloth ``` Then, once, so Godot sees the new files: @@ -64,6 +68,7 @@ Blender is required (`BLENDER_PATH`, or auto-found under | Fix unlit/emissive materials | `tools/gltf_fix.py` | Textures surviving import at all | | Resolve bone ROLES, not names | `tools/rig_map.py` | The model's own skeleton | | Rebuild parenting | `retarget.py::rebuild_hierarchy` | Limbs/cloth following the hips | +| Grow cloth chains (opt-in) | `tools/cloth_bones.py` | A costume that has no bones being able to move at all | | Subdivide cloth panels | `retarget.py::subdivide_cloth_panels` | A skirt being able to bend at all | | Retarget clips as rest-relative deltas | `retarget.py::retarget_clip` | Limbs not being twisted by foreign bone roll | | Leave cosmetic bones unkeyed | `export_optimize_animation_keep_anim_armature=False` | Physics owning the cloth | @@ -79,6 +84,8 @@ is a list of things that cost a debugging cycle to learn. - **`references/separation.md`** — body vs. garments vs. hair: what must stay separate, how cloth chains are detected and classed, why cloth is never skinned to a leg, and the ZZZ-convention mapping. +- **`references/growing-cloth-bones.md`** — what to do when the source has no + skirt or hair bones: how the chains are fitted to the geometry and re-weighted. - **`references/rigging.md`** — role resolution, hierarchy rebuild, cloth panel subdivision, twist bones, joint helpers, the retarget maths. - **`references/cloth-and-hair.md`** — the position-based spring solver, its diff --git a/.claude/skills/character-pipeline/references/growing-cloth-bones.md b/.claude/skills/character-pipeline/references/growing-cloth-bones.md new file mode 100644 index 0000000..8eca742 --- /dev/null +++ b/.claude/skills/character-pipeline/references/growing-cloth-bones.md @@ -0,0 +1,76 @@ +# Growing cloth bones on a model that has none + +`tools/cloth_bones.py`, opt-in via `pipeline.py --grow-cloth`. + +## When you need it + +The spring solver simulates cloth **bones**. A garment with none is welded to +whatever body bone it was weighted to, and no runtime setting changes that. Every +auto-rigged model is in this state, and so is many a "rigged" download whose +skeleton is body-only. + +Check before importing (no Blender needed — see `separation.md`): if the joint +list has nothing matching `hair|skirt|tail|ribbon`, the costume will not move. + +## What it does + +Runs on the **rigged** model, before the retarget. + +1. **Finds the geometry by material slot.** A slot called `hair` is hair. The + artist already answered the question, and on a joined mesh — which is what the + auto-rig leaves behind — the material slot is the only separation left. +2. **Splits it into clumps.** + - *Hair*: connected islands over the mesh's own edges. A strand is a connected + piece of surface; clustering by position would merge two ponytails passing + near each other and split one that bends. + - *Skirt*: radial wedges around the body's up axis. A skirt is ONE connected + surface, so islands would return the whole thing as a single piece — which + is the bell-shaped failure. Wedges are the ZZZ-convention panel grid. +3. **Fits a polyline down each clump** by binning vertices by distance from the + anchored end and taking each bin's centroid, so the chain follows the piece's + own curve. A straight root-to-tip line cuts the corner on a bent ponytail and + every vertex on the outside of that bend ends up on a bone travelling the + wrong way. +4. **Builds a bone chain along the polyline**, parented to the body bone that was + already holding that geometry. +5. **Re-weights** each vertex onto the two bones either side of where it projects, + blended by how far between them it lands — while keeping the ORIGINAL body + weight over the first `ROOT_BLEND` (22%) of the chain, so the scalp stays on + the skull and the waistband stays on the hips. + +Then `retarget.py::describe_rig` finds the chains by name exactly as it would an +artist's, and writes tips, hulls and neighbours to the sidecar. + +## Tuning + +``` +--hair-segments 3 bones per hair strand +--skirt-segments 4 bones per skirt panel +--skirt-panels 12 radial panels; more = opens around a leg more smoothly +--classes hair,skirt which material names to look for +``` + +`MIN_STRAND_LENGTH` (60 mm) and `MIN_STRAND_VERTS` (12) drop fringe and +ornaments. Simulating those costs the same as a ponytail and only ever produces +jitter around the face. + +## Worked result: Miku + +``` +19 chains, 57 bones grown from one `hair` material slot +sidecar: 0 cloth chains -> 19 +idle stability: 0.007-0.018 deg/frame (quiet) +mesh intact, no tearing (debug/character_look_capture.gd) +``` + +## Limits + +- **It cannot find a garment that shares a material with the body.** Miku's skirt + is on her `body` slot, so she got hair chains and no skirt. Splitting by + geometry rather than by material would be the next step. +- **It does not set `weights_authored`.** An auto-rigged model still gets the + destructive load-time `SkinLegRepair`. That repair only touches cross-leg + vertices, so it leaves hair alone, but it is worth knowing. +- **Grown chains are a fallback, not a substitute for a rigged source.** They + follow the geometry, but an artist's chains carry intent — where a panel should + split, which strands move together — that no fit recovers. diff --git a/assets/characters/skins/miku.glb b/assets/characters/skins/miku.glb index 8523280..53f5d81 100644 Binary files a/assets/characters/skins/miku.glb and b/assets/characters/skins/miku.glb differ diff --git a/assets/characters/skins/miku.rig.json b/assets/characters/skins/miku.rig.json index 456b659..51c16a7 100644 --- a/assets/characters/skins/miku.rig.json +++ b/assets/characters/skins/miku.rig.json @@ -10,45 +10,1832 @@ "DEF-neck", "DEF-head" ], - "forearm.R": "DEF-forearm.R", - "toe.R": "DEF-toe.R", - "upper_arm.R": "DEF-upper_arm.R", - "shin.L": "DEF-shin.L", - "shin.R": "DEF-shin.R", - "toe.L": "DEF-toe.L", - "hand.R": "DEF-hand.R", - "forearm.L": "DEF-forearm.L", - "foot.R": "DEF-foot.R", - "upper_arm.L": "DEF-upper_arm.L", - "thigh.R": "DEF-thigh.R", "hand.L": "DEF-hand.L", - "shoulder.R": "DEF-shoulder.R", "thigh.L": "DEF-thigh.L", + "thigh.R": "DEF-thigh.R", "foot.L": "DEF-foot.L", - "shoulder.L": "DEF-shoulder.L" + "upper_arm.L": "DEF-upper_arm.L", + "toe.R": "DEF-toe.R", + "toe.L": "DEF-toe.L", + "foot.R": "DEF-foot.R", + "upper_arm.R": "DEF-upper_arm.R", + "shin.R": "DEF-shin.R", + "shoulder.R": "DEF-shoulder.R", + "shoulder.L": "DEF-shoulder.L", + "hand.R": "DEF-hand.R", + "forearm.R": "DEF-forearm.R", + "shin.L": "DEF-shin.L", + "forearm.L": "DEF-forearm.L" }, - "chains": [], + "chains": [ + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.004", + "DEF-hair.004.seg1", + "DEF-hair.004.seg2" + ], + "tips": [ + [ + 0.0, + 0.11488, + -0.0 + ], + [ + 0.0, + 0.52061, + -0.0 + ], + [ + 0.00078, + 0.53789, + 0.02374 + ] + ], + "hulls": [ + [], + [ + [ + -0.08143, + 0.38272, + 0.0237 + ], + [ + 0.03426, + 0.21906, + -0.02815 + ], + [ + 0.05869, + 0.3851, + -0.03557 + ], + [ + -0.06617, + 0.22707, + 0.01893 + ], + [ + -0.01082, + 0.38781, + 0.01185 + ], + [ + -0.0172, + 0.22507, + 0.00437 + ] + ], + [ + [ + 0.06428, + 0.4061, + -0.0301 + ], + [ + -0.09033, + 0.13149, + 0.03616 + ], + [ + 0.08758, + 0.13894, + -0.03072 + ], + [ + -0.07202, + 0.39924, + 0.02431 + ], + [ + -0.00266, + 0.13484, + 0.03774 + ], + [ + 0.01549, + 0.40306, + 0.03382 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.004.seg1": 0.46886951680072686 + }, + { + "DEF-hair.004": 0.46886951680072686, + "DEF-hair.004.seg2": 0.6772610986254648 + }, + { + "DEF-hair.004.seg1": 0.6772610986254648 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.006", + "DEF-hair.006.seg1", + "DEF-hair.006.seg2" + ], + "tips": [ + [ + 0.0, + 0.02001, + 0.0 + ], + [ + 0.0, + 0.06655, + 0.0 + ], + [ + 0.00696, + 0.14742, + 0.01863 + ] + ], + "hulls": [ + [], + [ + [ + 0.00149, + 0.13945, + 0.01558 + ], + [ + 0.08355, + 0.02985, + -0.00247 + ], + [ + -0.05662, + 0.05134, + 0.02065 + ], + [ + 0.01711, + 0.03143, + 0.02301 + ], + [ + 0.04997, + 0.10124, + 0.03084 + ], + [ + -0.05233, + 0.11389, + 0.01029 + ], + [ + -0.00817, + 0.08421, + 0.03314 + ], + [ + 0.07234, + 0.05815, + 0.02038 + ], + [ + -0.07531, + 0.09487, + -0.00266 + ], + [ + 0.02116, + 0.09343, + 0.03856 + ] + ], + [ + [ + 0.08155, + 0.12413, + -0.05244 + ], + [ + -0.09422, + 0.03568, + 0.0069 + ], + [ + 0.05503, + 0.02521, + 0.05913 + ], + [ + -0.0862, + 0.11026, + -0.06485 + ], + [ + 0.08506, + 0.02327, + -0.05135 + ], + [ + -0.04198, + 0.08297, + 0.07005 + ], + [ + 0.07842, + 0.09153, + 0.03451 + ], + [ + 0.01647, + 0.08884, + 0.07662 + ], + [ + -0.09031, + 0.11647, + -0.01195 + ], + [ + -0.08667, + 0.06435, + -0.06479 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.006.seg1": 0.8066390103049459 + }, + { + "DEF-hair.006.seg2": 2.670369212863612, + "DEF-hair.006": 0.8066390103049459 + }, + { + "DEF-hair.006.seg1": 2.670369212863612 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.007", + "DEF-hair.007.seg1", + "DEF-hair.007.seg2" + ], + "tips": [ + [ + 0.0, + 0.03996, + -0.0 + ], + [ + 0.0, + 0.07962, + 0.0 + ], + [ + 0.01929, + 0.08613, + 0.01362 + ] + ], + "hulls": [ + [], + [ + [ + -0.00491, + 0.07916, + 0.07559 + ], + [ + -0.01765, + 0.06175, + -0.07444 + ], + [ + 0.01722, + 0.01808, + -0.0179 + ], + [ + 0.01941, + 0.02737, + 0.04366 + ], + [ + -0.01712, + 0.01595, + -0.05584 + ], + [ + 0.01296, + 0.05811, + -0.04058 + ], + [ + 0.02246, + 0.02669, + -0.05951 + ], + [ + 0.02696, + 0.07744, + 0.06152 + ], + [ + 0.00711, + 0.04111, + 0.07121 + ], + [ + 0.01974, + 0.00343, + -0.03804 + ] + ], + [ + [ + -0.02051, + 0.09075, + -0.05177 + ], + [ + 0.02831, + 0.01495, + 0.07289 + ], + [ + 0.04066, + 0.09145, + 0.02034 + ], + [ + -0.02461, + 0.01036, + -0.07647 + ], + [ + 0.00717, + 0.08625, + 0.06013 + ], + [ + 0.05012, + 0.03765, + 0.03758 + ], + [ + 0.05047, + 0.00497, + 0.04271 + ], + [ + -0.04302, + 0.03149, + -0.05967 + ], + [ + 0.02234, + 0.04694, + 0.07048 + ], + [ + -0.01446, + 0.01587, + -0.04816 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.007.seg1": 1.3265391012291756 + }, + { + "DEF-hair.007.seg2": 1.9591007162648184, + "DEF-hair.007": 1.3265391012291756 + }, + { + "DEF-hair.007.seg1": 1.9591007162648184 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.008", + "DEF-hair.008.seg1", + "DEF-hair.008.seg2" + ], + "tips": [ + [ + -0.0, + 0.03349, + 0.0 + ], + [ + 0.0, + 0.0869, + -0.0 + ], + [ + 0.01255, + 0.08246, + 0.00145 + ] + ], + "hulls": [ + [], + [ + [ + 0.0175, + 0.06896, + -0.03397 + ], + [ + -0.00396, + 0.00871, + 0.01948 + ], + [ + -0.00539, + 0.06022, + 0.03459 + ], + [ + 0.02111, + 0.0273, + -0.02274 + ], + [ + 0.01713, + 0.05219, + 0.00917 + ] + ], + [ + [ + -0.00435, + 0.08485, + -0.02313 + ], + [ + 0.0084, + -0.00546, + 0.03043 + ], + [ + -0.01232, + 0.02874, + -0.03545 + ], + [ + 0.01001, + 0.08381, + 0.02029 + ], + [ + 0.01925, + 0.02996, + -0.00654 + ], + [ + 0.00796, + -0.00428, + -0.00653 + ], + [ + 0.01284, + 0.02729, + 0.02918 + ], + [ + 0.00841, + 0.08495, + -0.00248 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.008.seg1": 0.544104643240255 + }, + { + "DEF-hair.008.seg2": 1.041131147026082, + "DEF-hair.008": 0.544104643240255 + }, + { + "DEF-hair.008.seg1": 1.041131147026082 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.012", + "DEF-hair.012.seg1", + "DEF-hair.012.seg2" + ], + "tips": [ + [ + 0.0, + 0.11487, + 0.0 + ], + [ + -0.0, + 0.52061, + -0.0 + ], + [ + -0.00078, + 0.53789, + 0.02374 + ] + ], + "hulls": [ + [], + [ + [ + 0.08143, + 0.38272, + 0.0237 + ], + [ + -0.03426, + 0.21906, + -0.02815 + ], + [ + -0.05869, + 0.3851, + -0.03557 + ], + [ + 0.06617, + 0.22707, + 0.01893 + ], + [ + 0.01082, + 0.38781, + 0.01185 + ], + [ + 0.0172, + 0.22507, + 0.00437 + ] + ], + [ + [ + -0.06428, + 0.4061, + -0.0301 + ], + [ + 0.09033, + 0.13149, + 0.03616 + ], + [ + -0.08758, + 0.13894, + -0.03072 + ], + [ + 0.07202, + 0.39924, + 0.02431 + ], + [ + 0.00266, + 0.13484, + 0.03774 + ], + [ + -0.01549, + 0.40306, + 0.03382 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.012.seg1": 0.4688694329841727 + }, + { + "DEF-hair.012": 0.4688694329841727, + "DEF-hair.012.seg2": 0.6772612470778174 + }, + { + "DEF-hair.012.seg1": 0.6772612470778174 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-head", + "bones": [ + "DEF-hair.016", + "DEF-hair.016.seg1", + "DEF-hair.016.seg2" + ], + "tips": [ + [ + -0.0, + 0.0359, + 0.0 + ], + [ + 0.0, + 0.06812, + 0.0 + ], + [ + -0.00281, + 0.03539, + 0.00192 + ] + ], + "hulls": [ + [], + [], + [ + [ + -0.01266, + 0.0452, + -0.009 + ], + [ + 0.00301, + -0.01919, + 0.02967 + ], + [ + 0.00968, + 0.00185, + -0.02541 + ], + [ + -0.00126, + 0.01263, + 0.02435 + ], + [ + -0.0141, + 0.005, + -0.00373 + ], + [ + -0.00126, + 0.04419, + 0.01741 + ], + [ + 0.00677, + 0.03419, + -0.02659 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.016.seg1": 0.2051926899902945 + }, + { + "DEF-hair.016": 0.2051926899902945, + "DEF-hair.016.seg2": 0.8438233012966365 + }, + { + "DEF-hair.016.seg1": 0.8438233012966365 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-neck", + "bones": [ + "DEF-hair.014", + "DEF-hair.014.seg1", + "DEF-hair.014.seg2" + ], + "tips": [ + [ + -0.0, + 0.01059, + 0.0 + ], + [ + -0.0, + 0.01859, + -0.0 + ], + [ + -0.00609, + 0.07046, + -0.00229 + ] + ], + "hulls": [ + [], + [ + [ + 0.00221, + 0.02697, + 0.0023 + ], + [ + 0.01664, + 0.00595, + 0.00377 + ], + [ + -0.00478, + 0.00845, + -0.00758 + ], + [ + -0.01537, + 0.01679, + -0.00555 + ], + [ + 0.00985, + 0.01816, + 0.00259 + ], + [ + -0.00032, + 0.02545, + 0.0048 + ], + [ + -0.013, + 0.0182, + -0.0079 + ] + ], + [ + [ + -0.00561, + 0.03819, + -0.01128 + ], + [ + -0.00105, + 0.03209, + 0.009 + ], + [ + -0.00651, + 0.03548, + -0.00097 + ], + [ + 0.00293, + 0.03804, + -0.01157 + ], + [ + -0.00499, + 0.03236, + 0.0091 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.014.seg1": 0.6311526711243278 + }, + { + "DEF-hair.014.seg2": 0.7552814283274145, + "DEF-hair.014": 0.6311526711243278 + }, + { + "DEF-hair.014.seg1": 0.7552814283274145 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-neck", + "bones": [ + "DEF-hair.015", + "DEF-hair.015.seg1", + "DEF-hair.015.seg2" + ], + "tips": [ + [ + -0.0, + 0.01059, + 0.0 + ], + [ + 0.0, + 0.01859, + -0.0 + ], + [ + 0.00609, + 0.07046, + -0.00229 + ] + ], + "hulls": [ + [], + [ + [ + -0.00221, + 0.02697, + 0.0023 + ], + [ + -0.01664, + 0.00595, + 0.00377 + ], + [ + 0.00478, + 0.00845, + -0.00758 + ], + [ + 0.01537, + 0.01679, + -0.00555 + ], + [ + -0.00985, + 0.01816, + 0.00259 + ], + [ + 0.00033, + 0.02545, + 0.0048 + ], + [ + 0.013, + 0.0182, + -0.0079 + ] + ], + [ + [ + 0.00561, + 0.03819, + -0.01128 + ], + [ + 0.00105, + 0.03209, + 0.009 + ], + [ + 0.00651, + 0.03548, + -0.00097 + ], + [ + -0.00293, + 0.03804, + -0.01157 + ], + [ + 0.00499, + 0.03236, + 0.0091 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.015.seg1": 0.6311515558643954 + }, + { + "DEF-hair.015": 0.6311515558643954, + "DEF-hair.015.seg2": 0.7552778980528112 + }, + { + "DEF-hair.015.seg1": 0.7552778980528112 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-shoulder.L", + "bones": [ + "DEF-hair.010", + "DEF-hair.010.seg1", + "DEF-hair.010.seg2" + ], + "tips": [ + [ + 0.0, + 0.00777, + -0.0 + ], + [ + 0.0, + 0.03131, + 0.0 + ], + [ + 0.01565, + 0.03355, + 0.05337 + ] + ], + "hulls": [ + [], + [], + [] + ], + "neighbours": [ + { + "DEF-hair.010.seg1": 0.16639685031303486 + }, + { + "DEF-hair.010.seg2": 0.8796921148822996, + "DEF-hair.010": 0.16639685031303486 + }, + { + "DEF-hair.010.seg1": 0.8796921148822996 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-shoulder.R", + "bones": [ + "DEF-hair.011", + "DEF-hair.011.seg1", + "DEF-hair.011.seg2" + ], + "tips": [ + [ + -0.0, + 0.00777, + -0.0 + ], + [ + 0.0, + 0.03131, + 0.0 + ], + [ + -0.01565, + 0.03355, + 0.05337 + ] + ], + "hulls": [ + [], + [], + [] + ], + "neighbours": [ + { + "DEF-hair.011.seg1": 0.1663931756391417 + }, + { + "DEF-hair.011.seg2": 0.879689124889564, + "DEF-hair.011": 0.1663931756391417 + }, + { + "DEF-hair.011.seg1": 0.879689124889564 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-shoulder.R", + "bones": [ + "DEF-hair.013", + "DEF-hair.013.seg1", + "DEF-hair.013.seg2" + ], + "tips": [ + [ + 0.0, + 0.02806, + -0.0 + ], + [ + -0.0, + 0.09427, + -0.0 + ], + [ + -0.02398, + 0.06711, + -0.00468 + ] + ], + "hulls": [ + [], + [], + [ + [ + -0.01879, + 0.07281, + -0.01286 + ], + [ + 0.00337, + -0.00433, + -0.00195 + ], + [ + -0.02922, + 0.0655, + 0.02079 + ], + [ + -0.0037, + 0.01641, + -0.01974 + ], + [ + -0.01162, + 0.0174, + 0.00207 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.013.seg1": 0.349694197366202 + }, + { + "DEF-hair.013.seg2": 0.6517327485597155, + "DEF-hair.013": 0.349694197366202 + }, + { + "DEF-hair.013.seg1": 0.6517327485597155 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-shoulder.R", + "bones": [ + "DEF-hair.017", + "DEF-hair.017.seg1", + "DEF-hair.017.seg2" + ], + "tips": [ + [ + 0.0, + 0.00941, + 0.0 + ], + [ + -0.0, + 0.05162, + -0.0 + ], + [ + 0.00128, + 0.02691, + 0.00117 + ] + ], + "hulls": [ + [], + [ + [ + -0.00375, + 0.01463, + 0.00361 + ], + [ + -0.00531, + 0.01347, + -0.00329 + ], + [ + 0.00057, + 0.01508, + 0.00012 + ] + ], + [ + [ + 0.00443, + 0.04041, + 0.00074 + ], + [ + -0.00213, + -0.00019, + -0.0022 + ], + [ + 0.00498, + -0.00025, + 0.00188 + ], + [ + -0.0006, + 0.04033, + 0.00276 + ], + [ + -0.00073, + 0.00062, + 0.00252 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.017.seg1": 1.276620211903057 + }, + { + "DEF-hair.017.seg2": 0.6642583105158355, + "DEF-hair.017": 1.276620211903057 + }, + { + "DEF-hair.017.seg1": 0.6642583105158355 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-shoulder.R", + "bones": [ + "DEF-hair.018", + "DEF-hair.018.seg1", + "DEF-hair.018.seg2" + ], + "tips": [ + [ + 0.0, + 0.02265, + 0.0 + ], + [ + 0.0, + 0.07928, + 0.0 + ], + [ + -0.01157, + 0.04388, + -0.00023 + ] + ], + "hulls": [ + [], + [ + [ + 0.01359, + 0.03136, + 0.0277 + ], + [ + 0.00546, + 0.02804, + -0.02805 + ], + [ + -0.01695, + 0.03365, + -0.00426 + ], + [ + -0.01115, + 0.03295, + 0.02135 + ] + ], + [ + [ + 0.00807, + 0.05961, + 0.01306 + ], + [ + -0.01638, + 0.00023, + -0.04035 + ], + [ + 0.00079, + -0.0029, + 0.02158 + ], + [ + -0.035, + 0.04283, + -0.01184 + ], + [ + 0.03062, + 0.00806, + 0.02309 + ], + [ + -0.01504, + -0.0054, + -0.00432 + ], + [ + -0.01355, + 0.05113, + -0.00202 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.018.seg1": 0.17496539410737744 + }, + { + "DEF-hair.018.seg2": 0.5754036757698482, + "DEF-hair.018": 0.17496539410737744 + }, + { + "DEF-hair.018.seg1": 0.5754036757698482 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.L", + "bones": [ + "DEF-hair.000", + "DEF-hair.000.seg1", + "DEF-hair.000.seg2" + ], + "tips": [ + [ + -0.0, + 0.08611, + 0.0 + ], + [ + 0.0, + 0.08, + -0.0 + ], + [ + 0.12351, + 0.78722, + -0.00183 + ] + ], + "hulls": [ + [], + [ + [ + 0.35163, + 0.47831, + -0.2775 + ], + [ + 0.1734, + 0.13358, + -0.15857 + ], + [ + 0.26841, + 0.31027, + -0.1128 + ], + [ + 0.07769, + 0.27925, + -0.12897 + ], + [ + 0.24026, + 0.3754, + -0.25789 + ], + [ + 0.15202, + 0.28491, + -0.02325 + ], + [ + 0.21512, + 0.18069, + -0.05309 + ], + [ + 0.28516, + 0.40662, + -0.16059 + ], + [ + 0.09636, + 0.18123, + -0.19363 + ], + [ + 0.30502, + 0.31783, + -0.23526 + ] + ], + [ + [ + 0.02931, + 0.47878, + 0.05529 + ], + [ + 0.06992, + 0.31481, + -0.073 + ], + [ + 0.05186, + 0.31421, + 0.06098 + ], + [ + 0.06465, + 0.47035, + -0.05671 + ], + [ + 0.08225, + 0.31131, + 0.00596 + ], + [ + 0.07251, + 0.47218, + 0.002 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.000.seg1": 2.5877335663057366 + }, + { + "DEF-hair.000": 2.5877335663057366, + "DEF-hair.000.seg2": 0.40775492159508264 + }, + { + "DEF-hair.000.seg1": 0.40775492159508264 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.L", + "bones": [ + "DEF-hair.001", + "DEF-hair.001.seg1", + "DEF-hair.001.seg2" + ], + "tips": [ + [ + -0.0, + 0.06901, + -0.0 + ], + [ + 0.0, + 0.08352, + 0.0 + ], + [ + 0.01813, + 0.83868, + 0.01008 + ] + ], + "hulls": [ + [], + [], + [ + [ + -0.01038, + 0.52617, + -0.03271 + ], + [ + 0.03572, + 0.34787, + 0.02308 + ], + [ + 0.02115, + 0.51493, + 0.02781 + ], + [ + -0.01317, + 0.35614, + -0.02186 + ], + [ + 0.012, + 0.3516, + 0.02887 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.001.seg1": 0.11834733743112169 + }, + { + "DEF-hair.001.seg2": 0.8545803994440844, + "DEF-hair.001": 0.11834733743112169 + }, + { + "DEF-hair.001.seg1": 0.8545803994440844 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.L", + "bones": [ + "DEF-hair.009", + "DEF-hair.009.seg1", + "DEF-hair.009.seg2" + ], + "tips": [ + [ + -0.0, + 0.06106, + -0.0 + ], + [ + -0.0, + 0.00838, + -0.0 + ], + [ + 0.23274, + -0.62143, + 0.22715 + ] + ], + "hulls": [ + [], + [], + [ + [ + 0.23086, + -0.52644, + 0.18471 + ], + [ + -0.05477, + -0.0258, + 0.02661 + ], + [ + 0.06495, + -0.24524, + 0.09546 + ], + [ + 0.1895, + -0.37359, + 0.12178 + ], + [ + 0.1513, + -0.3825, + 0.13931 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.009.seg1": 0.13724513036544295 + }, + { + "DEF-hair.009.seg2": 0.7363037552267393, + "DEF-hair.009": 0.13724513036544295 + }, + { + "DEF-hair.009.seg1": 0.7363037552267393 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.R", + "bones": [ + "DEF-hair.002", + "DEF-hair.002.seg1", + "DEF-hair.002.seg2" + ], + "tips": [ + [ + -0.0, + 0.08611, + -0.0 + ], + [ + -0.0, + 0.08, + 0.0 + ], + [ + -0.12351, + 0.78722, + -0.00183 + ] + ], + "hulls": [ + [], + [ + [ + -0.35163, + 0.47831, + -0.2775 + ], + [ + -0.1734, + 0.13358, + -0.15857 + ], + [ + -0.26841, + 0.31027, + -0.1128 + ], + [ + -0.07769, + 0.27925, + -0.12897 + ], + [ + -0.24026, + 0.3754, + -0.25789 + ], + [ + -0.15202, + 0.28491, + -0.02325 + ], + [ + -0.21512, + 0.18069, + -0.05309 + ], + [ + -0.28517, + 0.40662, + -0.16059 + ], + [ + -0.09637, + 0.18123, + -0.19363 + ], + [ + -0.30503, + 0.31783, + -0.23525 + ] + ], + [ + [ + -0.02931, + 0.47878, + 0.05529 + ], + [ + -0.06992, + 0.31481, + -0.073 + ], + [ + -0.05186, + 0.31421, + 0.06098 + ], + [ + -0.06465, + 0.47035, + -0.05671 + ], + [ + -0.08225, + 0.31131, + 0.00596 + ], + [ + -0.07252, + 0.47218, + 0.002 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.002.seg1": 2.5877328134030515 + }, + { + "DEF-hair.002": 2.5877328134030515, + "DEF-hair.002.seg2": 0.40775412351719176 + }, + { + "DEF-hair.002.seg1": 0.40775412351719176 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.R", + "bones": [ + "DEF-hair.003", + "DEF-hair.003.seg1", + "DEF-hair.003.seg2" + ], + "tips": [ + [ + -0.0, + 0.06106, + -0.0 + ], + [ + 0.0, + 0.00838, + -0.0 + ], + [ + -0.23274, + -0.62143, + 0.22715 + ] + ], + "hulls": [ + [], + [], + [ + [ + -0.23086, + -0.52644, + 0.18471 + ], + [ + 0.05476, + -0.0258, + 0.02661 + ], + [ + -0.06495, + -0.24524, + 0.09546 + ], + [ + -0.1895, + -0.37359, + 0.12178 + ], + [ + -0.1513, + -0.3825, + 0.13931 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.003.seg1": 0.13724553065786438 + }, + { + "DEF-hair.003.seg2": 0.7363036406695933, + "DEF-hair.003": 0.13724553065786438 + }, + { + "DEF-hair.003.seg1": 0.7363036406695933 + } + ] + }, + { + "class": "hair", + "root_parent": "DEF-thigh.R", + "bones": [ + "DEF-hair.005", + "DEF-hair.005.seg1", + "DEF-hair.005.seg2" + ], + "tips": [ + [ + -0.0, + 0.06901, + -0.0 + ], + [ + -0.0, + 0.08352, + -0.0 + ], + [ + -0.01813, + 0.83868, + 0.01008 + ] + ], + "hulls": [ + [], + [], + [ + [ + 0.01038, + 0.52617, + -0.03271 + ], + [ + -0.03572, + 0.34787, + 0.02308 + ], + [ + -0.02115, + 0.51493, + 0.02781 + ], + [ + 0.01317, + 0.35614, + -0.02186 + ], + [ + -0.012, + 0.3516, + 0.02887 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.005.seg1": 0.11834750436539365 + }, + { + "DEF-hair.005.seg2": 0.8545815840011777, + "DEF-hair.005": 0.11834750436539365 + }, + { + "DEF-hair.005.seg1": 0.8545815840011777 + } + ] + } + ], "twist": [], "colliders": [ + { + "bone": "DEF-hips", + "child": "DEF-spine.001", + "from": 0.0, + "radius_head": 0.1913, + "radius_tail": 0.1913, + "radius": 0.1913, + "lid": true + }, { "bone": "DEF-thigh.L", "child": "DEF-shin.L", - "radius": 0.1245 + "from": 0.1, + "radius_head": 0.1435, + "radius_tail": 0.1304, + "radius": 0.1304 }, { "bone": "DEF-thigh.R", "child": "DEF-shin.R", - "radius": 0.1079 + "from": 0.1, + "radius_head": 0.1084, + "radius_tail": 0.1084, + "radius": 0.1084 }, { "bone": "DEF-shin.L", "child": "DEF-foot.L", - "radius": 0.0762 + "from": 0.1, + "radius_head": 0.0741, + "radius_tail": 0.0741, + "radius": 0.0741 }, { "bone": "DEF-shin.R", "child": "DEF-foot.R", - "radius": 0.0762 + "from": 0.1, + "radius_head": 0.0741, + "radius_tail": 0.0741, + "radius": 0.0741 } ], "weights_authored": false, diff --git a/assets/characters/skins/skins.json b/assets/characters/skins/skins.json index a26e2b7..77624be 100644 --- a/assets/characters/skins/skins.json +++ b/assets/characters/skins/skins.json @@ -3,7 +3,7 @@ { "id": "miku", "name": "Miku", - "description": "Hatsune Miku \u2014 Virtual Idol", + "description": "", "model": "res://assets/characters/skins/miku.glb", "unlocked": true }, diff --git a/assets/characters/skins/taila.glb b/assets/characters/skins/taila.glb index b2cc4f0..2fc39fa 100644 Binary files a/assets/characters/skins/taila.glb and b/assets/characters/skins/taila.glb differ diff --git a/assets/characters/skins/taila.rig.json b/assets/characters/skins/taila.rig.json index f9176a3..30f9aff 100644 --- a/assets/characters/skins/taila.rig.json +++ b/assets/characters/skins/taila.rig.json @@ -11,22 +11,22 @@ "DEF-spine.005", "DEF-spine.006" ], - "thigh.R": "DEF-thigh.R", - "hand.L": "DEF-hand.L", - "toe.L": "DEF-toe.L", - "hand.R": "DEF-hand.R", - "toe.R": "DEF-toe.R", - "shoulder.R": "DEF-shoulder.R", - "thigh.L": "DEF-thigh.L", - "shin.L": "DEF-shin.L", - "upper_arm.R": "DEF-upper_arm.R", - "upper_arm.L": "DEF-upper_arm.L", - "foot.R": "DEF-foot.R", + "forearm.L": "DEF-forearm.L", "forearm.R": "DEF-forearm.R", "shin.R": "DEF-shin.R", + "hand.L": "DEF-hand.L", + "hand.R": "DEF-hand.R", + "thigh.R": "DEF-thigh.R", + "toe.L": "DEF-toe.L", + "shoulder.L": "DEF-shoulder.L", + "foot.R": "DEF-foot.R", + "upper_arm.R": "DEF-upper_arm.R", + "upper_arm.L": "DEF-upper_arm.L", "foot.L": "DEF-foot.L", - "forearm.L": "DEF-forearm.L", - "shoulder.L": "DEF-shoulder.L" + "shoulder.R": "DEF-shoulder.R", + "toe.R": "DEF-toe.R", + "thigh.L": "DEF-thigh.L", + "shin.L": "DEF-shin.L" }, "chains": [ { @@ -39,12 +39,12 @@ ], "tips": [ [ - 0.0, + -0.0, 0.06838, 0.0 ], [ - 0.0, + -0.0, 0.04506, 0.0 ], @@ -53,6 +53,185 @@ 0.00854, 0.01182 ] + ], + "hulls": [ + [ + [ + 0.01674, + 0.10291, + 0.02973 + ], + [ + 0.03451, + 0.03231, + 0.00016 + ], + [ + -0.01716, + 0.05337, + -0.00299 + ], + [ + 0.03264, + 0.08202, + 0.01591 + ], + [ + 0.00803, + 0.0577, + 0.0108 + ], + [ + 0.03992, + 0.05758, + 0.00882 + ], + [ + 0.02314, + 0.05921, + 0.0009 + ], + [ + -0.00304, + 0.05285, + 0.00139 + ], + [ + 0.01035, + 0.06042, + -0.00529 + ], + [ + 0.01928, + 0.07988, + 0.01229 + ] + ], + [ + [ + -0.00899, + 0.04442, + -0.00085 + ], + [ + -0.02404, + 0.01036, + 0.01139 + ], + [ + 0.01712, + 0.01993, + 0.005 + ], + [ + -0.00513, + 0.01451, + -0.00241 + ], + [ + 0.00984, + 0.03774, + -0.00153 + ], + [ + 0.00415, + 0.01792, + 0.0089 + ], + [ + -0.01645, + 0.0083, + -0.00014 + ], + [ + 0.00046, + 0.03505, + 0.00649 + ], + [ + -0.01208, + 0.00937, + 0.01203 + ], + [ + -0.00743, + 0.03312, + -0.00319 + ] + ], + [ + [ + -0.01394, + 0.02572, + 0.00011 + ], + [ + -0.0018, + -0.01608, + 0.01364 + ], + [ + 0.00391, + 0.0038, + -0.00163 + ], + [ + -0.01374, + 0.00288, + 0.0104 + ], + [ + 0.00701, + 0.02313, + 0.00607 + ], + [ + -0.02015, + -0.01109, + 0.01284 + ], + [ + -0.00695, + 0.01233, + 0.00213 + ], + [ + -0.00142, + -0.00478, + 0.00609 + ], + [ + -0.00975, + -0.01068, + 0.01879 + ], + [ + 5e-05, + 0.01019, + 0.00929 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.001": 6.444893450622218, + "DEF-hair.007": 2.1405753868633206, + "DEF-hair.004": 4.305379068442997, + "DEF-hair.003": 3.737794440612138, + "DEF-hair.002": 2.852879727367223 + }, + { + "DEF-hair.002": 10.932883673705392, + "DEF-hair": 6.444893450622218, + "DEF-hair.004": 0.5635176735066056, + "DEF-hair.003": 0.15824819220502323, + "DEF-hair.007": 0.3355432027270542 + }, + { + "DEF-hair.001": 10.932883673705392, + "DEF-hair": 2.852879727367223, + "DEF-hair.007": 0.03886162555068284 + } ] }, { @@ -64,7 +243,7 @@ ], "tips": [ [ - -0.0, + 0.0, 0.06123, -0.0 ], @@ -73,6 +252,124 @@ 0.04439, -0.00029 ] + ], + "hulls": [ + [ + [ + 0.00113, + 0.06236, + -0.00227 + ], + [ + 0.00701, + 0.02584, + -0.00787 + ], + [ + -0.00614, + 0.04412, + -0.00738 + ], + [ + 0.00784, + 0.04471, + 0.00317 + ], + [ + 0.00988, + 0.02683, + 0.003 + ], + [ + 0.00477, + 0.04586, + -0.00738 + ], + [ + 0.00445, + 0.05938, + 0.00744 + ], + [ + -0.00921, + 0.05971, + -0.00256 + ], + [ + 0.00043, + 0.02596, + 0.0005 + ], + [ + -0.00134, + 0.04362, + 0.00076 + ] + ], + [ + [ + 0.00022, + 0.03937, + -0.00024 + ], + [ + 0.00511, + 0.01787, + 0.00141 + ], + [ + -0.00567, + 0.01832, + -0.00298 + ], + [ + -0.00236, + 0.01841, + 0.00283 + ], + [ + 0.00218, + 0.0177, + -0.00326 + ], + [ + -0.00314, + 0.01799, + -0.00474 + ], + [ + 0.00415, + 0.01817, + 0.00434 + ], + [ + -0.00172, + 0.01822, + 0.00197 + ], + [ + -0.00465, + 0.01808, + -0.00268 + ], + [ + -0.00301, + 0.0179, + -0.00366 + ] + ] + ], + "neighbours": [ + { + "DEF-hair": 3.737794440612138, + "DEF-hair.004": 0.48107030537866957, + "DEF-hair.001": 0.15824819220502323 + }, + { + "DEF-hair": 4.305379068442997, + "DEF-hair.001": 0.5635176735066056, + "DEF-hair.003": 0.48107030537866957 + } ] }, { @@ -93,6 +390,123 @@ 0.02144, 0.00318 ] + ], + "hulls": [ + [ + [ + -0.02112, + 0.04918, + 0.02422 + ], + [ + 0.00107, + -0.01033, + 0.00095 + ], + [ + -0.00347, + 0.03222, + -0.00397 + ], + [ + -0.00948, + 0.01364, + 0.01086 + ], + [ + 0.01133, + 0.01422, + -0.00041 + ], + [ + -0.00915, + 0.03367, + 0.01549 + ], + [ + -0.0059, + -0.00788, + 0.01565 + ], + [ + -0.00287, + 0.01257, + -0.00376 + ], + [ + 0.00363, + 0.03034, + 0.00838 + ], + [ + 0.00801, + -0.00529, + 0.01351 + ] + ], + [ + [ + -0.00018, + 0.03655, + -0.00043 + ], + [ + 0.01031, + -0.00915, + -4e-05 + ], + [ + -0.00729, + 0.01104, + 0.00395 + ], + [ + 0.0085, + 0.01128, + -0.00185 + ], + [ + 0.0031, + 0.01248, + 0.00607 + ], + [ + -0.00257, + 0.00994, + -0.00246 + ], + [ + 0.01434, + -0.00662, + 0.00254 + ], + [ + -0.00639, + 0.01211, + 0.00782 + ], + [ + 0.00527, + 0.01035, + -0.00419 + ], + [ + 0.0075, + 0.01099, + -0.00153 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.005": 3.2375640964822265, + "DEF-hair": 2.1405753868633206, + "DEF-hair.001": 0.3355432027270542, + "DEF-hair.002": 0.03886162555068284 + }, + { + "DEF-hair.007": 3.2375640964822265 + } ] }, { @@ -125,6 +539,221 @@ 0.02087, 0.00039 ] + ], + "hulls": [ + [ + [ + 0.02765, + 0.09489, + -0.00831 + ], + [ + 0.01218, + -0.00528, + -0.01352 + ], + [ + -0.00966, + 0.04947, + 0.0296 + ], + [ + 0.03232, + 0.03961, + -0.02464 + ], + [ + -0.00344, + 0.06915, + -0.00733 + ], + [ + 0.01392, + 0.01818, + 0.01576 + ], + [ + -0.01562, + 0.08459, + 0.02502 + ], + [ + 0.01659, + 0.07392, + 0.02003 + ], + [ + 0.02263, + 0.06867, + -0.02538 + ], + [ + -0.00898, + 0.01997, + -0.0017 + ] + ], + [ + [ + 0.03852, + 0.0474, + -0.02382 + ], + [ + -0.01561, + 0.01392, + 0.02178 + ], + [ + -0.01735, + 0.05484, + -0.01292 + ], + [ + 0.01606, + 0.01503, + -0.0077 + ], + [ + 0.00483, + 0.03686, + 0.01325 + ], + [ + 0.01213, + 0.05777, + -0.01159 + ], + [ + -0.00464, + 0.03242, + -0.01137 + ], + [ + -0.01895, + 0.0337, + 0.00761 + ], + [ + -0.01409, + 0.06012, + 0.00746 + ], + [ + 0.01101, + 0.01666, + 0.01597 + ] + ], + [ + [ + -0.01869, + 0.01611, + 0.00917 + ], + [ + -0.00763, + 0.01686, + -0.01105 + ], + [ + -0.0002, + 0.01687, + 0.01034 + ], + [ + -0.01846, + 0.0161, + 0.00208 + ], + [ + -0.00718, + 0.01676, + -0.01006 + ], + [ + -0.01743, + 0.01605, + 0.00244 + ], + [ + -0.0005, + 0.0168, + 0.00929 + ], + [ + -0.01785, + 0.01605, + 0.00846 + ] + ], + [ + [ + 0.00088, + 0.03163, + -0.00099 + ], + [ + -0.01318, + 0.00392, + 0.00628 + ], + [ + 0.01083, + 0.00678, + -0.00118 + ], + [ + -0.00504, + 0.00595, + -0.00867 + ], + [ + 0.00037, + 0.00517, + 0.00747 + ], + [ + 0.00756, + 0.0066, + -0.00563 + ], + [ + -0.01301, + 0.00416, + 0.00091 + ], + [ + -0.01235, + 0.00379, + 0.00558 + ], + [ + 0.00012, + 0.00504, + 0.00641 + ], + [ + 0.00708, + 0.00616, + -0.00476 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.009": 5.0612108830893465, + "DEF-hair.L.008": 0.10078104744782834, + "DEF-hair.R.012": 9.298894414270677 + }, + { + "DEF-hair.010": 2.072245581610017, + "DEF-hair.008": 5.0612108830893465 + }, + { + "DEF-hair.009": 2.072245581610017 + }, + {} ] }, { @@ -145,10 +774,10 @@ [ 0.0, 0.1139, - -0.0 + 0.0 ], [ - 0.0, + -0.0, 0.0683, -0.0 ], @@ -157,6 +786,206 @@ 0.09275, -0.00073 ] + ], + "hulls": [ + [ + [ + -0.0201, + 0.12899, + -0.03061 + ], + [ + -0.02432, + 0.079, + 0.02303 + ], + [ + -0.02055, + 0.07496, + -0.03044 + ], + [ + -0.01427, + 0.12502, + 0.01645 + ], + [ + -0.00353, + 0.07731, + -0.0035 + ], + [ + -0.03306, + 0.07625, + -0.00346 + ], + [ + -0.03185, + 0.12799, + -0.00534 + ], + [ + -0.00435, + 0.12595, + -0.00541 + ], + [ + -0.01423, + 0.07892, + 0.01983 + ], + [ + -0.01092, + 0.07553, + -0.02619 + ] + ], + [ + [ + -0.01584, + 0.11898, + 0.02156 + ], + [ + -0.01937, + 0.01511, + -0.02701 + ], + [ + -0.01421, + 0.07061, + -0.01786 + ], + [ + -0.02173, + 0.01636, + 0.01885 + ], + [ + -0.01499, + 0.11514, + -0.01949 + ], + [ + -0.02382, + 0.06925, + 0.0219 + ], + [ + -0.00429, + 0.01801, + -0.00334 + ], + [ + -0.02958, + 0.01445, + -0.00452 + ], + [ + -0.03155, + 0.07078, + -0.00053 + ], + [ + -0.02325, + 0.1195, + 0.00065 + ] + ], + [ + [ + -0.00944, + 0.07223, + 0.01619 + ], + [ + -0.00096, + -0.00272, + 0.00095 + ], + [ + -0.02097, + 0.02867, + 0.02652 + ], + [ + -0.02263, + 0.03074, + -0.00958 + ], + [ + -0.0118, + 0.06831, + -0.00751 + ], + [ + -0.00862, + 0.02933, + 0.0079 + ], + [ + -0.029, + 0.02986, + 0.00881 + ], + [ + -0.01507, + 0.07231, + 0.00445 + ], + [ + -0.01532, + 0.03041, + -0.00731 + ], + [ + -0.01399, + 0.02864, + 0.02361 + ] + ], + [ + [ + -0.00073, + 0.05526, + -0.00107 + ], + [ + -0.00219, + -0.00378, + 0.00364 + ], + [ + -0.00111, + -0.00363, + 0.00361 + ], + [ + -0.00086, + 0.05418, + -0.00098 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.008": 0.10078104744782834, + "DEF-hair.L": 0.07930559596010497, + "DEF-hair.L.009": 1.529110640133334, + "DEF-hair.L.012": 3.1007271781263652, + "DEF-hair.L.013": 0.021517533900501484 + }, + { + "DEF-hair.L.010": 2.697011560446442, + "DEF-hair.L.008": 1.529110640133334 + }, + { + "DEF-hair.L.011": 3.3977685462242633, + "DEF-hair.L.009": 2.697011560446442 + }, + { + "DEF-hair.L.010": 3.3977685462242633 + } ] }, { @@ -176,13 +1005,187 @@ [ 0.0, 0.05073, - -0.0 + 0.0 ], [ -0.0067, 0.04095, 0.00485 ] + ], + "hulls": [ + [ + [ + -0.02527, + 0.09, + 0.0122 + ], + [ + -0.01623, + 0.01641, + -0.012 + ], + [ + -0.00057, + 0.05122, + 0.0168 + ], + [ + -0.02063, + 0.05217, + -0.01658 + ], + [ + -0.01205, + 0.0868, + -0.0162 + ], + [ + -0.00573, + 0.08579, + 0.01506 + ], + [ + -0.00293, + 0.05454, + -0.00049 + ], + [ + -0.00287, + 0.0856, + -0.00186 + ], + [ + -0.01003, + 0.06304, + 0.01981 + ], + [ + -0.00815, + 0.01761, + -0.01073 + ] + ], + [ + [ + -0.01738, + 0.05399, + 0.00728 + ], + [ + -0.01851, + 0.00751, + -0.01353 + ], + [ + -0.01059, + 0.00565, + 0.02048 + ], + [ + -0.02089, + 0.03301, + -0.00948 + ], + [ + -0.01369, + 0.03096, + 0.02149 + ], + [ + -0.00248, + 0.00933, + 0.00082 + ], + [ + -0.00592, + 0.03143, + 0.00333 + ], + [ + -0.02149, + 0.00584, + 0.00598 + ], + [ + -0.02351, + 0.03225, + 0.00747 + ], + [ + -0.01105, + 0.04818, + -0.00687 + ] + ], + [ + [ + 0.00167, + 0.03852, + -0.0 + ], + [ + -0.00624, + 0.00804, + 0.01374 + ], + [ + -0.01075, + 0.00706, + -0.00464 + ], + [ + -0.00133, + 0.00698, + 0.00283 + ], + [ + -0.01224, + 0.00774, + 0.00546 + ], + [ + -0.00636, + 0.00686, + -0.00431 + ], + [ + -0.0025, + 0.0077, + 0.01144 + ], + [ + -0.00238, + 0.00686, + 0.00309 + ], + [ + -0.01002, + 0.00687, + -0.00385 + ], + [ + -0.00595, + 0.00775, + 0.01272 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.L.008": 3.1007271781263652, + "DEF-hair.L.013": 2.0607935679774254, + "DEF-hair.L.018": 5.976813796675678, + "DEF-hair.L.025": 0.040129953350502845 + }, + { + "DEF-hair.L.014": 3.4327523504035433, + "DEF-hair.L.012": 2.0607935679774254, + "DEF-hair.L.008": 0.021517533900501484 + }, + { + "DEF-hair.L.013": 3.4327523504035433 + } ] }, { @@ -198,23 +1201,250 @@ [ 0.0, 0.06312, - -0.0 + 0.0 ], [ - -0.0, + 0.0, 0.05056, 0.0 ], [ 0.0, 0.02034, - 0.0 + -0.0 ], [ 0.0048, 0.02461, -0.00168 ] + ], + "hulls": [ + [ + [ + -0.02612, + 0.14192, + -0.003 + ], + [ + -0.02929, + -0.03494, + 7e-05 + ], + [ + 0.00844, + 0.05412, + 0.0319 + ], + [ + -0.01794, + 0.08142, + -0.01905 + ], + [ + -0.01421, + 0.01826, + -0.00923 + ], + [ + -0.00185, + 0.10668, + 0.02716 + ], + [ + 0.01647, + 0.12274, + -0.02448 + ], + [ + -0.00038, + -0.01378, + 0.03151 + ], + [ + 0.01097, + 0.01946, + 0.02163 + ], + [ + 0.0037, + 0.04788, + -0.003 + ] + ], + [ + [ + -0.02288, + 0.05079, + -0.0256 + ], + [ + -0.00914, + -0.01232, + 0.01282 + ], + [ + 0.01774, + 0.04282, + 0.01727 + ], + [ + -0.00945, + 0.0198, + -0.00823 + ], + [ + 0.01435, + 0.00964, + 0.01206 + ], + [ + -0.00794, + 0.04511, + -0.00021 + ], + [ + -0.00348, + 0.01658, + 0.01378 + ], + [ + 0.00623, + 0.05728, + 0.00083 + ], + [ + -0.01301, + 0.04025, + -0.01727 + ], + [ + 0.01291, + 0.04211, + -0.00045 + ] + ], + [ + [ + 0.01476, + 0.03544, + 0.01055 + ], + [ + 0.00952, + -0.00352, + -0.00197 + ], + [ + 0.0258, + 0.01218, + 0.01849 + ], + [ + 0.00063, + 0.01187, + 0.00239 + ], + [ + 0.02179, + 0.00272, + 0.0051 + ], + [ + 0.0095, + 0.02439, + 0.00123 + ], + [ + 0.02216, + 0.02327, + 0.01003 + ], + [ + 0.02259, + -0.0023, + 0.01636 + ], + [ + 0.0127, + 0.01015, + 0.00256 + ], + [ + 0.01403, + 0.00342, + 0.01365 + ] + ], + [ + [ + -0.0004, + 0.02115, + -0.00031 + ], + [ + 0.00701, + 0.01093, + 0.00114 + ], + [ + -0.00091, + 0.00992, + -0.00415 + ], + [ + 0.00074, + 0.00975, + 0.00111 + ], + [ + 0.00552, + 0.01082, + -0.00311 + ], + [ + 0.00155, + 0.01032, + -0.00522 + ], + [ + 0.00567, + 0.01064, + 0.0034 + ], + [ + 0.00147, + 0.00995, + -0.0042 + ], + [ + 0.00474, + 0.01042, + -0.00245 + ], + [ + 0.00535, + 0.01032, + 0.00241 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.L.019": 30.077657354322675, + "DEF-hair.L.012": 5.976813796675678 + }, + { + "DEF-hair.L.018": 30.077657354322675, + "DEF-hair.L.020": 8.790750150303484 + }, + { + "DEF-hair.L.019": 8.790750150303484, + "DEF-hair.L.021": 1.3119401760714409 + }, + { + "DEF-hair.L.020": 1.3119401760714409 + } ] }, { @@ -230,7 +1460,7 @@ [ 0.0, 0.06757, - 0.0 + -0.0 ], [ 0.0, @@ -238,7 +1468,7 @@ 0.0 ], [ - -0.0, + 0.0, 0.02554, 0.0 ], @@ -247,6 +1477,193 @@ 0.05819, -0.00047 ] + ], + "hulls": [ + [ + [ + -0.0171, + 0.05533, + -0.00825 + ], + [ + 0.00085, + 0.05042, + 0.01568 + ], + [ + -0.01647, + 0.05217, + 0.00964 + ], + [ + 0.00017, + 0.05294, + -0.00219 + ], + [ + 0.0041, + 0.05091, + 0.01062 + ], + [ + -0.01131, + 0.05508, + -0.00972 + ], + [ + 0.00302, + 0.05085, + 0.01045 + ], + [ + -0.00071, + 0.0528, + -0.00156 + ], + [ + -0.01627, + 0.05521, + -0.00756 + ], + [ + 0.00057, + 0.05054, + 0.01463 + ] + ], + [ + [ + -0.00961, + 0.04836, + -0.01404 + ], + [ + -0.01303, + 0.00389, + -0.01295 + ], + [ + -0.00493, + 0.01951, + 0.00843 + ], + [ + -0.00136, + 0.02665, + -0.01764 + ], + [ + -0.0161, + 0.03114, + -0.01071 + ], + [ + -0.01843, + 0.01304, + 0.00013 + ], + [ + 0.00438, + 0.04454, + -0.00581 + ], + [ + 0.00052, + 0.0112, + -0.00443 + ], + [ + -0.00752, + 0.03146, + 0.00147 + ], + [ + 0.00152, + 0.04372, + -0.02001 + ] + ], + [ + [ + -0.00382, + 0.02522, + -0.00718 + ], + [ + -0.00559, + 0.0012, + -0.00894 + ], + [ + 0.00224, + 0.00661, + -0.00227 + ], + [ + -0.00973, + 0.02269, + 0.00034 + ], + [ + 0.00214, + 0.00447, + -0.01281 + ], + [ + -0.00643, + 0.00293, + 3e-05 + ], + [ + -0.00344, + 0.0247, + 3e-05 + ], + [ + -0.00842, + 0.02339, + -0.00509 + ], + [ + 0.00399, + 0.00592, + -0.00951 + ], + [ + -0.00327, + 0.00453, + 0.00141 + ] + ], + [ + [ + -0.00355, + 0.02964, + -0.00022 + ], + [ + -0.00363, + 0.02855, + -0.00025 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.L.023": 1.3606538529242842 + }, + { + "DEF-hair.L.022": 1.3606538529242842, + "DEF-hair.L.024": 1.7455139142072973 + }, + { + "DEF-hair.L.025": 1.9640462828626353, + "DEF-hair.L.023": 1.7455139142072973 + }, + { + "DEF-hair.L.012": 0.040129953350502845, + "DEF-hair.L.024": 1.9640462828626353 + } ] }, { @@ -279,6 +1696,186 @@ -0.00932, 0.00663 ] + ], + "hulls": [ + [ + [ + 0.02108, + 0.12855, + -0.03051 + ], + [ + 0.05777, + 0.0078, + -0.02551 + ], + [ + 0.0253, + 0.07855, + 0.02313 + ], + [ + 0.10638, + 0.04973, + -0.03343 + ], + [ + 0.02152, + 0.07451, + -0.03034 + ], + [ + 0.01525, + 0.12457, + 0.01655 + ], + [ + 0.07178, + 0.03724, + -0.00026 + ], + [ + 0.02707, + 0.01361, + -0.01575 + ], + [ + 0.00451, + 0.07687, + -0.00339 + ], + [ + 0.08192, + 0.03253, + -0.03457 + ] + ], + [ + [ + 0.01656, + 0.11824, + 0.02184 + ], + [ + 0.02009, + 0.01436, + -0.02673 + ], + [ + 0.01493, + 0.06986, + -0.01758 + ], + [ + 0.02245, + 0.01562, + 0.01914 + ], + [ + 0.01571, + 0.11439, + -0.01921 + ], + [ + 0.02454, + 0.0685, + 0.02218 + ], + [ + 0.00501, + 0.01726, + -0.00305 + ], + [ + 0.0303, + 0.01371, + -0.00423 + ], + [ + 0.03227, + 0.07003, + -0.00025 + ], + [ + 0.02397, + 0.11875, + 0.00093 + ] + ], + [ + [ + -0.02348, + 0.11573, + -0.01225 + ], + [ + 0.00105, + -0.00379, + 0.00086 + ], + [ + 0.00953, + 0.07116, + 0.01609 + ], + [ + 0.02106, + 0.0276, + 0.02643 + ], + [ + 0.02271, + 0.02967, + -0.00967 + ], + [ + 0.01189, + 0.06724, + -0.00761 + ], + [ + 0.00871, + 0.02826, + 0.0078 + ], + [ + 0.02909, + 0.02879, + 0.00872 + ], + [ + 0.01515, + 0.07124, + 0.00436 + ], + [ + 0.0154, + 0.02934, + -0.0074 + ] + ], + [] + ], + "neighbours": [ + { + "DEF-hair.R.005": 1.3949822409393602, + "DEF-hair.R": 2.6819264528755653, + "DEF-hair.R.006": 0.08180381100485945, + "DEF-hair.R.009": 5.783332277237857, + "DEF-hair.R.012": 9.98357400601948, + "DEF-hair.R.013": 0.03451450992651994 + }, + { + "DEF-hair.R.010": 2.9875086680951517, + "DEF-hair.R.008": 5.783332277237857 + }, + { + "DEF-hair.R.011": 3.9748911536524965, + "DEF-hair.R.009": 2.9875086680951517 + }, + { + "DEF-hair.R.010": 3.9748911536524965 + } ] }, { @@ -305,6 +1902,179 @@ 0.03897, 0.00457 ] + ], + "hulls": [ + [ + [ + 0.02629, + 0.08967, + 0.01231 + ], + [ + 0.02854, + 0.01432, + -0.02129 + ], + [ + 0.00159, + 0.05089, + 0.0169 + ], + [ + 0.02154, + 0.04587, + -0.04861 + ], + [ + 0.01367, + 0.05223, + -0.01523 + ], + [ + 0.01307, + 0.08647, + -0.0161 + ], + [ + 0.03538, + 0.029, + -0.00254 + ], + [ + 0.00917, + 0.01728, + -0.01063 + ], + [ + 0.03284, + 0.03419, + -0.02689 + ], + [ + 0.00675, + 0.08546, + 0.01516 + ] + ], + [ + [ + 0.0181, + 0.0532, + 0.00736 + ], + [ + 0.01924, + 0.00672, + -0.01345 + ], + [ + 0.01131, + 0.00486, + 0.02056 + ], + [ + 0.02162, + 0.03222, + -0.0094 + ], + [ + 0.01442, + 0.03017, + 0.02157 + ], + [ + 0.00321, + 0.00854, + 0.0009 + ], + [ + 0.00665, + 0.03064, + 0.00341 + ], + [ + 0.02221, + 0.00505, + 0.00606 + ], + [ + 0.02424, + 0.03146, + 0.00755 + ], + [ + 0.01178, + 0.04739, + -0.00679 + ] + ], + [ + [ + -0.00207, + 0.03753, + -0.00014 + ], + [ + 0.00584, + 0.00705, + 0.0136 + ], + [ + 0.01035, + 0.00607, + -0.00478 + ], + [ + 0.00093, + 0.00599, + 0.00268 + ], + [ + 0.01184, + 0.00675, + 0.00532 + ], + [ + 0.00596, + 0.00587, + -0.00445 + ], + [ + 0.0021, + 0.00671, + 0.0113 + ], + [ + 0.00198, + 0.00587, + 0.00294 + ], + [ + 0.00555, + 0.00676, + 0.01258 + ], + [ + 0.00962, + 0.00588, + -0.00399 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.R.013": 2.1961626040734146, + "DEF-hair.R.008": 9.98357400601948, + "DEF-hair.008": 9.298894414270677 + }, + { + "DEF-hair.R.014": 4.241960469519606, + "DEF-hair.R.012": 2.1961626040734146, + "DEF-hair.R.008": 0.03451450992651994 + }, + { + "DEF-hair.R.013": 4.241960469519606 + } ] }, { @@ -318,25 +2088,262 @@ ], "tips": [ [ - -0.0, + 0.0, 0.11762, 0.0 ], [ 0.0, 0.18049, - 0.0 + -0.0 ], [ - -0.0, + 0.0, 0.10823, - 0.0 + -0.0 ], [ -0.04057, -0.18138, -0.1173 ] + ], + "hulls": [ + [ + [ + -0.15137, + 0.17534, + -0.07598 + ], + [ + -0.00863, + -0.01403, + -0.03231 + ], + [ + -0.21243, + 0.04236, + -0.06494 + ], + [ + -0.05177, + 0.08996, + 0.01251 + ], + [ + -0.13274, + 0.06548, + -0.05554 + ], + [ + -0.00623, + 0.09071, + -0.05371 + ], + [ + -0.07673, + -0.03425, + -0.01586 + ], + [ + -0.04578, + 0.02054, + 0.01325 + ], + [ + -0.06815, + 0.05124, + -0.0536 + ], + [ + -0.11547, + 0.09188, + -0.01059 + ] + ], + [ + [ + -0.04022, + 0.19274, + 0.02268 + ], + [ + -0.18808, + -0.01116, + -0.04065 + ], + [ + -0.00948, + 0.03806, + -0.05252 + ], + [ + -0.00011, + 0.12049, + -0.03261 + ], + [ + -0.05524, + 0.03318, + 0.01582 + ], + [ + -0.0526, + 0.12081, + 0.02013 + ], + [ + -0.16581, + 0.05417, + -0.05721 + ], + [ + -0.00179, + 0.18739, + -0.03687 + ], + [ + -0.0086, + 0.0377, + -0.00229 + ], + [ + -0.04574, + 0.03444, + -0.02739 + ] + ], + [ + [ + -0.13171, + -0.13625, + -0.07775 + ], + [ + -0.01593, + 0.10242, + 0.01499 + ], + [ + -0.03483, + 0.00179, + -0.01444 + ], + [ + -0.12119, + -0.04466, + -0.10461 + ], + [ + -0.03919, + 0.04719, + 0.02226 + ], + [ + -0.00011, + 0.04727, + -0.01891 + ], + [ + -0.14944, + -0.07688, + -0.1013 + ], + [ + 0.00414, + 0.00687, + -0.02526 + ], + [ + -0.11494, + -0.1096, + -0.09973 + ], + [ + -0.00516, + 0.09746, + -0.01752 + ] + ], + [ + [ + -0.00177, + -0.27194, + -0.12983 + ], + [ + 0.00148, + 0.04408, + -0.00096 + ], + [ + -0.09496, + -0.20564, + -0.13214 + ], + [ + -0.04621, + -0.22711, + -0.13847 + ], + [ + -0.01361, + 0.01332, + 0.0075 + ], + [ + -0.03276, + -0.24628, + -0.12281 + ], + [ + -0.00278, + 0.01174, + -0.01145 + ], + [ + -0.07862, + -0.20395, + -0.14078 + ], + [ + -0.00561, + -0.27193, + -0.11553 + ], + [ + -0.02874, + -0.24582, + -0.13598 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.L.005": 11.524415420547314, + "DEF-hair.L.006": 0.95175079508802, + "DEF-hair.L.007": 0.02390360394735, + "DEF-hair.L.008": 0.07930559596010497, + "DEF-hair.L.004": 3.6971060377822207, + "DEF-hair.L.001": 1.7201846105818497 + }, + { + "DEF-hair.L.002": 4.3335288549483275, + "DEF-hair.L": 1.7201846105818497, + "DEF-hair.L.005": 1.389903376048438, + "DEF-hair.L.004": 0.12349060048937432, + "DEF-hair.L.003": 2.1324736022343336 + }, + { + "DEF-hair.L.003": 9.736097935389328, + "DEF-hair.L.001": 4.3335288549483275, + "DEF-hair.L.005": 3.6150717720990997 + }, + { + "DEF-hair.L.002": 9.736097935389328, + "DEF-hair.L.005": 4.400683455708296, + "DEF-hair.L.001": 2.1324736022343336 + } ] }, { @@ -369,6 +2376,249 @@ -0.26952, -0.08576 ] + ], + "hulls": [ + [ + [ + -0.12642, + 0.30292, + 0.00405 + ], + [ + 0.05763, + -0.01675, + -0.04559 + ], + [ + -0.06843, + 0.11737, + -0.0105 + ], + [ + -0.01425, + 0.23819, + 0.01163 + ], + [ + -0.04616, + -0.00216, + -0.04609 + ], + [ + 0.02452, + 0.11463, + -0.05849 + ], + [ + -0.08785, + 0.22711, + -0.05288 + ], + [ + -0.04701, + 0.30847, + -0.0095 + ], + [ + 0.06689, + 0.05756, + -0.04087 + ], + [ + 0.01631, + 0.00124, + -0.00275 + ] + ], + [ + [ + 0.22683, + 0.29103, + 0.02328 + ], + [ + -0.08923, + 0.10069, + -0.15483 + ], + [ + 0.10543, + -0.04097, + -0.04243 + ], + [ + -0.05913, + 0.1578, + 0.02553 + ], + [ + 0.13118, + 0.13005, + 0.05197 + ], + [ + 0.01882, + 0.07286, + -0.05548 + ], + [ + 0.12421, + 0.23997, + 0.00629 + ], + [ + 0.04625, + 0.10805, + -0.14725 + ], + [ + 0.10061, + 0.13139, + -0.04347 + ], + [ + 0.01364, + 0.17206, + -0.05526 + ] + ], + [ + [ + -0.03371, + 0.08882, + 0.00318 + ], + [ + 0.01108, + 0.04109, + -0.04371 + ], + [ + -0.02901, + 0.03766, + 0.01054 + ], + [ + 0.01259, + 0.08166, + -0.02576 + ], + [ + -0.02479, + 0.03974, + -0.03012 + ], + [ + 0.00154, + 0.03876, + -0.00124 + ], + [ + -0.02018, + 0.0886, + -0.02503 + ], + [ + 0.00084, + 0.08176, + -0.00177 + ], + [ + 0.01614, + 0.04051, + -0.03052 + ], + [ + -0.04167, + 0.03777, + 0.00429 + ] + ], + [ + [ + 0.09474, + -0.32132, + -0.06828 + ], + [ + -0.00094, + 0.06392, + 0.00035 + ], + [ + -0.10686, + -0.18513, + -0.02452 + ], + [ + 0.03872, + -0.24274, + -0.13557 + ], + [ + -0.11326, + -0.09615, + 0.0002 + ], + [ + -0.03432, + -0.169, + -0.05155 + ], + [ + 0.09388, + -0.25139, + -0.1342 + ], + [ + -0.02109, + 0.01802, + 0.00233 + ], + [ + -0.07019, + -0.21769, + -0.02149 + ], + [ + -0.09006, + -0.1274, + -0.02563 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.R.004": 4.686255793960349, + "DEF-hair.L.005": 40.2787691692223, + "DEF-hair.R.005": 0.15631888339514832, + "DEF-hair.L": 3.6971060377822207, + "DEF-hair.L.007": 2.0160448574603813, + "DEF-hair.L.006": 1.8851661673028555, + "DEF-hair.L.001": 0.12349060048937432 + }, + { + "DEF-hair.R.004": 0.45132666236203267, + "DEF-hair.L.004": 40.2787691692223, + "DEF-hair.L.006": 18.005348521988193, + "DEF-hair.L.007": 11.200201317515079, + "DEF-hair.L": 11.524415420547314, + "DEF-hair.L.001": 1.389903376048438, + "DEF-hair.L.002": 3.6150717720990997, + "DEF-hair.L.003": 4.400683455708296 + }, + { + "DEF-hair.L.005": 18.005348521988193, + "DEF-hair.L.007": 11.514555192106366, + "DEF-hair.L": 0.95175079508802, + "DEF-hair.L.004": 1.8851661673028555 + }, + { + "DEF-hair.L.005": 11.200201317515079, + "DEF-hair.L.006": 11.514555192106366, + "DEF-hair.L": 0.02390360394735, + "DEF-hair.L.004": 2.0160448574603813 + } ] }, { @@ -382,14 +2632,14 @@ ], "tips": [ [ - -0.0, - 0.11761, + 0.0, + 0.11762, -0.0 ], [ - 0.0, + -0.0, 0.18049, - -0.0 + 0.0 ], [ 0.0, @@ -401,6 +2651,236 @@ 0.04894, -0.00199 ] + ], + "hulls": [ + [ + [ + 0.10392, + 0.04499, + -0.03143 + ], + [ + -0.00179, + 0.08913, + -0.04032 + ], + [ + 0.01042, + -0.01469, + -0.03154 + ], + [ + 0.05269, + 0.08941, + 0.01263 + ], + [ + 0.0467, + 0.01999, + 0.01337 + ], + [ + 0.00289, + 0.0244, + -0.00341 + ], + [ + 0.03259, + 0.06069, + -0.03311 + ], + [ + 0.00187, + 0.02225, + -0.05257 + ], + [ + 0.06928, + 0.05051, + -0.05454 + ], + [ + 0.03548, + 0.01714, + -0.02935 + ] + ], + [ + [ + 0.04087, + 0.19192, + 0.02292 + ], + [ + 0.01014, + 0.03724, + -0.05229 + ], + [ + 0.00077, + 0.11967, + -0.03237 + ], + [ + 0.05589, + 0.03236, + 0.01606 + ], + [ + 0.05326, + 0.11999, + 0.02036 + ], + [ + 0.00244, + 0.18657, + -0.03663 + ], + [ + 0.00925, + 0.03688, + -0.00205 + ], + [ + 0.0464, + 0.03362, + -0.02716 + ], + [ + 0.04423, + 0.12228, + -0.02088 + ], + [ + 0.033, + 0.19244, + -0.01446 + ] + ], + [ + [ + 0.02337, + 0.10374, + 0.0137 + ], + [ + 0.02848, + -0.00246, + 0.02582 + ], + [ + 0.0076, + 0.04735, + -0.02831 + ], + [ + 0.03954, + 0.04619, + 0.02246 + ], + [ + 0.00572, + 0.04488, + 0.00827 + ], + [ + 0.00551, + 0.09646, + -0.01731 + ], + [ + 0.00242, + 0.00207, + 0.00675 + ], + [ + 0.0336, + 0.04774, + -0.00921 + ], + [ + 0.0059, + 0.07567, + 0.00688 + ], + [ + 0.0273, + 0.0798, + -0.0066 + ] + ], + [ + [ + -0.00144, + 0.04301, + -0.00088 + ], + [ + 0.01365, + 0.01225, + 0.00757 + ], + [ + 0.00282, + 0.01066, + -0.01138 + ], + [ + 0.00127, + 0.00974, + 0.00225 + ], + [ + 0.01206, + 0.0122, + -0.00415 + ], + [ + -0.0003, + 0.00984, + -0.00764 + ], + [ + 0.00895, + 0.0112, + 0.00848 + ], + [ + 0.00926, + 0.01102, + 0.00745 + ], + [ + 0.01117, + 0.01186, + -0.00363 + ], + [ + -0.00118, + 0.04195, + -0.00089 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.R.005": 8.895136039757556, + "DEF-hair.R.006": 0.5874295932403306, + "DEF-hair.R.008": 2.6819264528755653, + "DEF-hair.R.004": 3.0752010115277004, + "DEF-hair.R.001": 1.8037417183725024 + }, + { + "DEF-hair.R.002": 3.682230264940157, + "DEF-hair.R": 1.8037417183725024 + }, + { + "DEF-hair.R.003": 3.8194620543874045, + "DEF-hair.R.001": 3.682230264940157 + }, + { + "DEF-hair.R.002": 3.8194620543874045 + } ] }, { @@ -414,7 +2894,7 @@ ], "tips": [ [ - 0.0, + -0.0, 0.13941, 0.0 ], @@ -424,7 +2904,7 @@ -0.0 ], [ - -0.0, + 0.0, 0.10005, -0.0 ], @@ -433,160 +2913,3081 @@ -0.20337, -0.03794 ] + ], + "hulls": [ + [ + [ + 0.12748, + 0.30272, + 0.00416 + ], + [ + -0.05658, + -0.01695, + -0.04548 + ], + [ + 0.10849, + 0.10936, + -0.0433 + ], + [ + 0.01637, + 0.2129, + -0.00652 + ], + [ + -0.02347, + 0.11443, + -0.05839 + ], + [ + 0.04721, + -0.00236, + -0.04598 + ], + [ + 0.12972, + 0.2226, + -0.03887 + ], + [ + 0.04806, + 0.30826, + -0.0094 + ], + [ + 0.03544, + 0.11472, + -0.00615 + ], + [ + -0.06583, + 0.05736, + -0.04077 + ] + ], + [ + [ + -0.22588, + 0.29058, + 0.02349 + ], + [ + 0.03823, + 0.00201, + -0.07772 + ], + [ + -0.0914, + 0.12009, + 0.04015 + ], + [ + 0.07244, + 0.14233, + -0.1518 + ], + [ + 0.06008, + 0.15735, + 0.02574 + ], + [ + -0.10791, + -0.04429, + -0.05776 + ], + [ + -0.02672, + 0.08048, + -0.13759 + ], + [ + -0.12325, + 0.23952, + 0.0065 + ], + [ + -0.01314, + 0.17179, + -0.05603 + ], + [ + -0.03432, + 0.04033, + 0.0005 + ] + ], + [ + [ + 0.03454, + 0.08821, + 0.00351 + ], + [ + -0.01025, + 0.04049, + -0.04339 + ], + [ + 0.02984, + 0.03706, + 0.01086 + ], + [ + -0.01176, + 0.08105, + -0.02544 + ], + [ + 0.02562, + 0.03913, + -0.0298 + ], + [ + -0.00071, + 0.03816, + -0.00091 + ], + [ + 0.02101, + 0.08799, + -0.02471 + ], + [ + -1e-05, + 0.08116, + -0.00145 + ], + [ + -0.01531, + 0.03991, + -0.03019 + ], + [ + 0.0425, + 0.03716, + 0.00461 + ] + ], + [ + [ + -0.09428, + -0.32225, + -0.06802 + ], + [ + 0.0014, + 0.06298, + 0.00062 + ], + [ + 0.10733, + -0.18606, + -0.02425 + ], + [ + 0.11373, + -0.09708, + 0.00047 + ], + [ + 0.03479, + -0.16994, + -0.05128 + ], + [ + 0.02156, + 0.01709, + 0.0026 + ], + [ + 0.07066, + -0.21863, + -0.02122 + ], + [ + 0.09053, + -0.12833, + -0.02536 + ], + [ + -0.11638, + -0.28965, + -0.06878 + ], + [ + 0.06006, + -0.19855, + -0.05526 + ] + ] + ], + "neighbours": [ + { + "DEF-hair.R.005": 39.8027606329575, + "DEF-hair.R": 3.0752010115277004, + "DEF-hair.R.007": 2.4225536161899783, + "DEF-hair.R.006": 1.7560717991488746, + "DEF-hair.L.004": 4.686255793960349, + "DEF-hair.L.005": 0.45132666236203267 + }, + { + "DEF-hair.R.006": 16.949170511515604, + "DEF-hair.R.007": 4.844983954094674, + "DEF-hair.R": 8.895136039757556, + "DEF-hair.R.008": 1.3949822409393602, + "DEF-hair.R.004": 39.8027606329575, + "DEF-hair.L.004": 0.15631888339514832, + "DEF-skirt.L.003.seg3": 2.6234847961983174 + }, + { + "DEF-hair.R.005": 16.949170511515604, + "DEF-hair.R.007": 7.382812583882695, + "DEF-hair.R": 0.5874295932403306, + "DEF-hair.R.008": 0.08180381100485945, + "DEF-hair.R.004": 1.7560717991488746 + }, + { + "DEF-hair.R.005": 4.844983954094674, + "DEF-hair.R.006": 7.382812583882695, + "DEF-hair.R.004": 2.4225536161899783 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt" + "DEF-skirt", + "DEF-skirt.seg1", + "DEF-skirt.seg2", + "DEF-skirt.seg3" ], "tips": [ [ - 0.00968, - 0.19273, - -0.02416 + -0.0, + 0.04862, + 0.0 + ], + [ + 0.0, + 0.04862, + -0.0 + ], + [ + 0.0, + 0.04862, + 0.0 + ], + [ + -0.0511, + 0.12938, + -0.02471 ] + ], + "hulls": [ + [ + [ + -0.01048, + 0.00471, + -0.09838 + ], + [ + 0.00854, + -0.00859, + 0.01809 + ], + [ + -0.0271, + 0.03158, + -0.01766 + ], + [ + -0.0049, + 0.0074, + -0.04266 + ], + [ + -0.00582, + -0.0011, + -0.0058 + ], + [ + -0.00356, + 0.02438, + -0.02161 + ], + [ + -0.02431, + 0.0063, + -0.04071 + ], + [ + 0.00058, + -0.00428, + 0.00657 + ], + [ + -0.01003, + 0.00121, + -0.01887 + ], + [ + -0.0145, + 0.00333, + -0.03183 + ] + ], + [ + [ + 0.03347, + 0.04167, + 0.04521 + ], + [ + 0.00529, + 0.02842, + -0.04709 + ], + [ + -0.00166, + 0.02549, + 0.00886 + ], + [ + 0.03107, + 0.00122, + 0.0163 + ], + [ + 0.02719, + 0.03735, + -0.013 + ], + [ + -0.01386, + 0.01375, + -0.02703 + ], + [ + 0.0171, + 0.01031, + -0.01507 + ], + [ + 0.04061, + 0.03722, + 0.02051 + ], + [ + 0.00867, + 0.01004, + 0.02387 + ], + [ + 0.02478, + 0.02369, + 0.00318 + ] + ], + [ + [ + -0.03953, + 0.03328, + -0.05187 + ], + [ + 0.04098, + 0.02712, + 0.02868 + ], + [ + -0.03136, + 0.01869, + 0.01049 + ], + [ + 0.00783, + 0.03339, + -0.01775 + ], + [ + 0.02203, + 0.01142, + 0.00456 + ], + [ + -0.04381, + 0.01432, + -0.02093 + ], + [ + -0.01168, + 0.02406, + 0.03633 + ], + [ + -0.0128, + 0.04482, + 0.00027 + ], + [ + 0.01566, + 0.0355, + 0.04064 + ], + [ + -0.01628, + 0.04258, + -0.02244 + ] + ], + [ + [ + -0.06106, + 0.11464, + -0.09045 + ], + [ + -0.01295, + 0.03749, + 0.09158 + ], + [ + -0.04234, + 0.03208, + -0.02001 + ], + [ + -0.02317, + 0.11069, + -0.0164 + ], + [ + 0.01719, + 0.00293, + 0.03068 + ], + [ + -0.07535, + 0.03421, + -0.07642 + ], + [ + -0.02094, + 0.09802, + 0.0734 + ], + [ + 0.01737, + 0.0661, + 0.02554 + ], + [ + -0.0279, + 0.0519, + -0.06022 + ], + [ + -0.02057, + 0.03865, + 0.01785 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.L": 10.771234691287294, + "DEF-skirt.L.003": 1.4136845819587607, + "DEF-skirt.003": 10.346675467459745, + "DEF-skirt.007": 0.09543175411841748, + "DEF-skirt.003.seg2": 2.6303551266513883, + "DEF-skirt.003.seg3": 1.595806262183024, + "DEF-skirt.seg1": 1.8893422721806523, + "DEF-skirt.003.seg1": 2.168171665547564, + "DEF-skirt.L.004": 0.19603096959511881, + "DEF-skirt.L.seg1": 0.2516482614836598 + }, + { + "DEF-skirt": 1.8893422721806523, + "DEF-skirt.003.seg2": 3.097181898448024, + "DEF-skirt.003.seg1": 1.512647745279899, + "DEF-skirt.003.seg3": 5.170624213956808, + "DEF-skirt.007.seg3": 0.12245594475491542, + "DEF-skirt.005": 0.16033306364800098, + "DEF-skirt.seg2": 2.792140468584722, + "DEF-skirt.009": 0.09372445010591768, + "DEF-skirt.L.seg1": 2.1407108254297182, + "DEF-skirt.007": 0.04866960387074015, + "DEF-skirt.L.seg2": 1.587180682104046, + "DEF-skirt.L.004": 0.20676807425859, + "DEF-skirt.007.seg2": 0.01650988077651644, + "DEF-skirt.L.003": 0.31053856632945737, + "DEF-skirt.003": 0.0982967789470155, + "DEF-skirt.L": 0.12044016764635926 + }, + { + "DEF-skirt.003.seg3": 5.211532068417141, + "DEF-skirt.seg3": 2.155654134166214, + "DEF-skirt.007.seg2": 0.05601081196344071, + "DEF-skirt.L.seg3": 2.7081503117896872, + "DEF-skirt.007.seg1": 0.09495247018795672, + "DEF-skirt.L.001": 0.07432020535983441, + "DEF-skirt.005": 0.4334825864653958, + "DEF-skirt.L.004": 0.14029811314042995, + "DEF-skirt.009": 0.16869629844680606, + "DEF-skirt.seg1": 2.792140468584722, + "DEF-skirt.011": 0.15320185432908007, + "DEF-skirt.007.seg3": 0.1889945161820596, + "DEF-skirt.009.seg1": 0.0714384640111776, + "DEF-skirt.009.seg2": 0.01027086487236381, + "DEF-skirt.005.seg1": 0.007790076778398158, + "DEF-skirt.L.seg2": 3.2111160715999776, + "DEF-skirt.L.003": 0.7391116369404801, + "DEF-skirt.003.seg1": 0.12276459342907578, + "DEF-skirt.L.seg1": 0.3928760868859329, + "DEF-skirt.003.seg2": 0.2754052277329222 + }, + { + "DEF-skirt.002": 0.25142821495506595, + "DEF-skirt.011.seg1": 5.570096570820647, + "DEF-skirt.L.001": 0.4132729913690881, + "DEF-skirt.011": 4.6961528319649295, + "DEF-skirt.003.seg3": 8.365425825133514, + "DEF-skirt.005.seg2": 4.61498402848288, + "DEF-skirt.009": 0.7582600522037454, + "DEF-skirt.009.seg1": 0.9144382488613035, + "DEF-skirt.seg2": 2.155654134166214, + "DEF-skirt.L.seg3": 4.3393369779026685, + "DEF-skirt.011.seg2": 2.8357110381653126, + "DEF-skirt.006": 0.1217170026805725, + "DEF-skirt.005.seg1": 3.920393819893497, + "DEF-skirt.005": 1.3755075436915636, + "DEF-skirt.L.004": 0.8155590405608446, + "DEF-skirt.007.seg3": 0.42513202420982066, + "DEF-skirt.009.seg2": 0.16737698817810986, + "DEF-skirt.007.seg2": 0.04747602245800686, + "DEF-skirt.011.seg3": 0.14448731559887507, + "DEF-skirt.005.seg3": 0.040614199510271565, + "DEF-skirt.L.004.seg1": 0.029836616482513456, + "DEF-skirt.L.seg2": 0.0966744171849947, + "DEF-skirt.L.003": 0.04019258132871978 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.003" + "DEF-skirt.003", + "DEF-skirt.003.seg1", + "DEF-skirt.003.seg2", + "DEF-skirt.003.seg3" ], "tips": [ [ - 0.00768, - 0.07108, - -0.00326 + -0.0, + 0.01789, + -0.0 + ], + [ + -0.0, + 0.01789, + -0.0 + ], + [ + 0.0, + 0.01789, + 0.0 + ], + [ + -0.01933, + 0.17699, + 0.01439 ] + ], + "hulls": [ + [ + [ + -0.05008, + -0.05696, + -0.04666 + ], + [ + 0.03924, + 0.00423, + 0.05153 + ], + [ + -0.0226, + 0.01376, + -0.00513 + ], + [ + -0.01061, + -0.04128, + -0.00124 + ], + [ + -0.04675, + -0.01389, + -0.0306 + ], + [ + 0.01629, + 0.00121, + 0.01377 + ], + [ + 0.00116, + -0.03008, + 0.03884 + ], + [ + 0.04402, + -0.0359, + 0.03842 + ], + [ + -0.03107, + -0.02404, + -0.06145 + ], + [ + -0.03916, + -0.04651, + -0.02056 + ] + ], + [ + [ + 0.05649, + 0.01409, + -0.02176 + ], + [ + -0.02953, + 0.00775, + -0.02538 + ], + [ + 0.01593, + 0.01651, + -0.02885 + ], + [ + 0.03006, + 0.00965, + 0.00505 + ], + [ + -0.00527, + 0.00065, + -0.02313 + ], + [ + 0.03474, + 0.00541, + -0.02441 + ], + [ + 0.03365, + 0.00732, + -0.01286 + ], + [ + 0.05361, + 0.01518, + -0.01043 + ], + [ + 0.0404, + 0.01194, + -0.01841 + ], + [ + -0.02809, + 0.0097, + -0.01762 + ] + ], + [ + [ + 0.05188, + 0.00935, + -0.01886 + ], + [ + -0.00277, + 0.01551, + 0.0356 + ], + [ + -0.00301, + 0.00995, + -0.03276 + ], + [ + 0.0326, + 0.00707, + 0.03816 + ], + [ + -0.01411, + 0.01538, + -0.00122 + ], + [ + 0.02057, + 0.01059, + 0.03576 + ], + [ + 0.04274, + 0.01002, + -0.02639 + ], + [ + 0.00871, + 0.01341, + 0.03461 + ], + [ + -0.00379, + 0.0099, + -0.02409 + ], + [ + -0.0027, + 0.01545, + 0.03451 + ] + ], + [ + [ + 0.00158, + 0.24736, + -0.0107 + ], + [ + -0.06139, + 0.00862, + 0.01247 + ], + [ + 0.05627, + 0.11884, + 0.02984 + ], + [ + 0.02881, + 0.00607, + -0.03046 + ], + [ + -0.04123, + 0.12774, + 0.04129 + ], + [ + 0.00339, + 0.07794, + -0.01952 + ], + [ + -0.01982, + 0.19296, + 0.03012 + ], + [ + 0.03832, + 0.05577, + 0.03226 + ], + [ + -0.03876, + 0.06343, + 0.04015 + ], + [ + 0.01598, + 0.1495, + 0.00201 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt": 10.346675467459745, + "DEF-skirt.007": 17.306699839384407, + "DEF-skirt.003.seg1": 2.1973733196999894, + "DEF-skirt.L": 7.836036998479067, + "DEF-skirt.seg1": 0.0982967789470155, + "DEF-skirt.L.003": 0.05178392130275811, + "DEF-skirt.R": 1.8390214778296556, + "DEF-skirt.007.seg1": 0.03645670787178257 + }, + { + "DEF-skirt.seg1": 1.512647745279899, + "DEF-skirt": 2.168171665547564, + "DEF-skirt.003.seg2": 1.2503227871553237, + "DEF-skirt.003": 2.1973733196999894, + "DEF-skirt.L.seg2": 0.33299535676595077, + "DEF-skirt.seg2": 0.12276459342907578, + "DEF-skirt.L.seg1": 0.2760094692193936, + "DEF-skirt.L.003": 0.049952687783858335 + }, + { + "DEF-skirt": 2.6303551266513883, + "DEF-skirt.003.seg3": 2.4862878647459423, + "DEF-skirt.seg1": 3.097181898448024, + "DEF-skirt.003.seg1": 1.2503227871553237, + "DEF-skirt.L.seg1": 0.4596588821250581, + "DEF-skirt.007": 0.1699214252576411, + "DEF-skirt.L.seg2": 0.29650027410600566, + "DEF-skirt.seg2": 0.2754052277329222, + "DEF-skirt.L.seg3": 0.024977540935678944, + "DEF-skirt.L.003": 0.03862589214435566 + }, + { + "DEF-skirt.006": 0.32341552001905205, + "DEF-skirt.005.seg1": 4.093617441427922, + "DEF-skirt.005": 2.6745725910706306, + "DEF-skirt.seg3": 8.365425825133514, + "DEF-skirt.005.seg2": 4.8612654356533715, + "DEF-skirt.009": 1.1286794898007495, + "DEF-skirt.009.seg1": 0.8940016644600399, + "DEF-skirt.011.seg1": 1.3719167847603355, + "DEF-skirt.seg2": 5.211532068417141, + "DEF-skirt.007.seg2": 1.980115868442557, + "DEF-skirt.011": 1.6883411692987111, + "DEF-skirt.007.seg1": 2.9822736639827294, + "DEF-skirt.L.seg3": 0.5467618653323603, + "DEF-skirt": 1.595806262183024, + "DEF-skirt.003.seg2": 2.4862878647459423, + "DEF-skirt.seg1": 5.170624213956808, + "DEF-skirt.007.seg3": 2.7651239767046945, + "DEF-skirt.009.seg2": 0.18218562382336984, + "DEF-skirt.R.seg2": 0.02413577489838903, + "DEF-skirt.R.seg1": 0.07982489265778714, + "DEF-skirt.007": 1.5140279785753088, + "DEF-skirt.011.seg2": 0.25246157887255904, + "DEF-skirt.005.seg3": 0.04013802336446326, + "DEF-skirt.R.seg3": 0.018324890406280048, + "DEF-skirt.L.seg2": 0.5537837520574962, + "DEF-skirt.L.003": 0.1310899159343887, + "DEF-skirt.R": 0.058546876452437446, + "DEF-skirt.L.seg1": 0.07840127522781742 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.L" + "DEF-skirt.L", + "DEF-skirt.L.seg1", + "DEF-skirt.L.seg2", + "DEF-skirt.L.seg3" ], "tips": [ [ - 0.00938, - 0.15041, - 0.0127 + -0.0, + 0.03781, + 0.0 + ], + [ + -0.0, + 0.03781, + -0.0 + ], + [ + -0.0, + 0.03781, + 0.0 + ], + [ + -0.01275, + 0.14672, + 0.03258 ] + ], + "hulls": [ + [ + [ + -0.01718, + -0.03886, + 0.07057 + ], + [ + 0.03955, + 0.02731, + -0.04543 + ], + [ + 0.01011, + -0.04105, + -0.01324 + ], + [ + -0.01167, + 0.00334, + 0.01467 + ], + [ + -0.01033, + 0.03067, + -0.02984 + ], + [ + 0.00037, + -0.0048, + 0.0536 + ], + [ + 0.034, + -0.00826, + -0.03108 + ], + [ + 0.01864, + -0.03554, + -0.04963 + ], + [ + -0.01519, + -0.03227, + 0.00973 + ], + [ + -0.00034, + 0.00351, + -0.01547 + ] + ], + [ + [ + -0.01733, + 0.03016, + 0.03129 + ], + [ + 0.00029, + 0.03363, + -0.01135 + ], + [ + 0.01304, + 0.01139, + 0.02869 + ], + [ + -0.0117, + 0.00289, + 0.01837 + ], + [ + -0.00597, + 0.03249, + 0.01887 + ], + [ + 0.002, + 0.03388, + 0.00543 + ], + [ + -0.0113, + 0.00187, + 0.01831 + ], + [ + 0.00094, + 0.03396, + 0.00519 + ], + [ + 0.01244, + 0.01059, + 0.02825 + ], + [ + -0.01822, + 0.03022, + 0.03066 + ] + ], + [ + [ + 0.02797, + 0.02078, + -0.06929 + ], + [ + -0.00319, + 0.02407, + 0.05732 + ], + [ + 0.03008, + 0.0173, + -0.01102 + ], + [ + 0.00404, + 0.00325, + 0.00995 + ], + [ + 0.02352, + 0.03451, + 0.01921 + ], + [ + 0.01962, + 0.01154, + -0.03737 + ], + [ + -0.01275, + 0.00262, + 0.04527 + ], + [ + 0.03356, + 0.02949, + -0.04329 + ], + [ + 0.0172, + 0.00476, + -0.0589 + ], + [ + 0.01944, + 0.01544, + 0.01925 + ] + ], + [ + [ + -0.07888, + 0.14866, + 0.10517 + ], + [ + 0.02098, + 0.00616, + -0.07077 + ], + [ + 0.00728, + 0.17813, + -0.01431 + ], + [ + -0.04021, + 0.01427, + 0.07286 + ], + [ + -0.02487, + 0.08854, + -0.00247 + ], + [ + 0.02708, + 0.01623, + 0.01893 + ], + [ + 0.00583, + 0.14213, + -0.07387 + ], + [ + -0.02766, + 0.13164, + 0.04888 + ], + [ + -0.0686, + 0.06595, + 0.08917 + ], + [ + -0.00615, + 0.02573, + -0.03441 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt": 10.771234691287294, + "DEF-skirt.L.003": 16.419495031726157, + "DEF-skirt.L.003.seg1": 1.5219704851834268, + "DEF-skirt.L.003.seg3": 1.5856033828218843, + "DEF-skirt.R.003": 3.3102703706591687, + "DEF-skirt.003": 7.836036998479067, + "DEF-skirt.L.seg1": 0.8892123245093044, + "DEF-skirt.seg1": 0.12044016764635926, + "DEF-skirt.L.003.seg2": 0.9837299947917074, + "DEF-skirt.R": 0.7833441613586325 + }, + { + "DEF-skirt.L.003": 4.760126868318332, + "DEF-skirt.seg1": 2.1407108254297182, + "DEF-skirt.L.seg2": 4.229518094249963, + "DEF-skirt.003.seg2": 0.4596588821250581, + "DEF-skirt.L.003.seg1": 0.6595836843532097, + "DEF-skirt.seg2": 0.3928760868859329, + "DEF-skirt.003.seg1": 0.2760094692193936, + "DEF-skirt": 0.2516482614836598, + "DEF-skirt.L": 0.8892123245093044, + "DEF-skirt.L.003.seg2": 0.322305533592365, + "DEF-skirt.003.seg3": 0.07840127522781742 + }, + { + "DEF-skirt.L.004": 0.06935733543747569, + "DEF-skirt.L.003": 4.430261283824864, + "DEF-skirt.L.seg3": 3.686576538966275, + "DEF-skirt.L.003.seg3": 0.009721631050302243, + "DEF-skirt.L.003.seg2": 0.19439024437881924, + "DEF-skirt.L.seg1": 4.229518094249963, + "DEF-skirt.seg1": 1.587180682104046, + "DEF-skirt.L.003.seg1": 0.1957218245564052, + "DEF-skirt.seg2": 3.2111160715999776, + "DEF-skirt.003.seg3": 0.5537837520574962, + "DEF-skirt.seg3": 0.0966744171849947, + "DEF-skirt.003.seg1": 0.33299535676595077, + "DEF-skirt.003.seg2": 0.29650027410600566, + "DEF-skirt.L.001": 0.10371684437270923, + "DEF-skirt.011": 0.01208546172060343 + }, + { + "DEF-skirt.L.001.seg2": 0.1699154302186351, + "DEF-skirt.L.002": 0.10102962666415694, + "DEF-skirt.L.001.seg1": 0.19093190472623134, + "DEF-skirt.L.005": 0.04318668795316161, + "DEF-skirt.L.004": 3.793317002760232, + "DEF-skirt.011.seg3": 4.602221938080493, + "DEF-skirt.011.seg2": 3.711280083702404, + "DEF-skirt.L.004.seg1": 0.9764221426855458, + "DEF-skirt.L.003": 3.6402760699503562, + "DEF-skirt.L.seg2": 3.686576538966275, + "DEF-skirt.L.001": 1.7430155018692777, + "DEF-skirt.seg3": 4.3393369779026685, + "DEF-skirt.seg2": 2.7081503117896872, + "DEF-skirt.003.seg3": 0.5467618653323603, + "DEF-skirt.L.003.seg3": 1.533915214427354, + "DEF-skirt.L.003.seg2": 0.7716510583968516, + "DEF-skirt.005.seg2": 0.03759796665737425, + "DEF-skirt.011.seg1": 0.6236902469398551, + "DEF-skirt.L.003.seg1": 0.7045235895324149, + "DEF-skirt.011": 0.13239584627096912, + "DEF-skirt.003.seg2": 0.024977540935678944 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.L.003" + "DEF-skirt.L.003", + "DEF-skirt.L.003.seg1", + "DEF-skirt.L.003.seg2", + "DEF-skirt.L.003.seg3" ], "tips": [ [ - 0.04759, - 0.0342, - 0.00628 + 0.0, + 0.01473, + -0.0 + ], + [ + 0.0, + 0.01473, + 0.0 + ], + [ + 0.0, + 0.01473, + -0.0 + ], + [ + 0.0279, + 0.14363, + -0.02295 ] + ], + "hulls": [ + [ + [ + -0.11938, + 0.01472, + 0.08554 + ], + [ + 0.03737, + -0.00762, + -0.02167 + ], + [ + -0.04228, + -0.06138, + 0.03614 + ], + [ + -0.06996, + 0.01341, + 0.01895 + ], + [ + -0.01719, + 0.00218, + -0.0034 + ], + [ + -0.0946, + -0.01653, + 0.05222 + ], + [ + -0.02027, + -0.04183, + -0.005 + ], + [ + -0.11124, + -0.02195, + 0.08811 + ], + [ + -0.00607, + -0.04564, + 0.02964 + ], + [ + 0.02042, + 0.01328, + 0.00447 + ] + ], + [ + [ + 0.14256, + 0.00647, + -0.14966 + ], + [ + -0.02332, + 0.00279, + 0.01466 + ], + [ + 0.07423, + 0.01319, + -0.03945 + ], + [ + 0.09275, + 0.00189, + -0.1056 + ], + [ + 0.03046, + 0.00077, + -0.00282 + ], + [ + 0.04307, + 0.00641, + -0.04658 + ], + [ + -0.00094, + 0.00519, + -0.00354 + ], + [ + 0.00014, + 0.00336, + 0.01308 + ], + [ + -0.01507, + 0.00064, + 0.00183 + ], + [ + 0.02267, + 0.00104, + -0.0143 + ] + ], + [ + [ + 0.08569, + 0.00881, + -0.09381 + ], + [ + -0.04002, + 0.00864, + 0.02482 + ], + [ + 0.02842, + 0.00921, + -0.02168 + ], + [ + 0.06602, + 0.00044, + -0.04476 + ], + [ + -0.00207, + 0.01085, + 0.01334 + ], + [ + 0.03399, + 0.0046, + -0.00424 + ], + [ + 0.03981, + 0.00639, + -0.03647 + ], + [ + -0.00247, + 0.01096, + 0.01233 + ], + [ + -0.04035, + 0.00881, + 0.02379 + ], + [ + 0.08488, + 0.00908, + -0.0945 + ] + ], + [ + [ + -0.1601, + 0.2389, + 0.17881 + ], + [ + 0.18049, + 0.03004, + -0.17856 + ], + [ + -0.044, + 0.01497, + 0.02135 + ], + [ + 0.06877, + 0.11585, + -0.07637 + ], + [ + 0.08415, + 0.01272, + -0.07912 + ], + [ + 0.03725, + 0.00859, + -0.00617 + ], + [ + 0.15246, + 0.07652, + -0.13417 + ], + [ + -0.11244, + 0.19171, + 0.16551 + ], + [ + 0.05084, + 0.0605, + -0.06074 + ], + [ + 0.12019, + 0.02429, + -0.12566 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt": 1.4136845819587607, + "DEF-skirt.L": 16.419495031726157, + "DEF-skirt.L.004": 0.21646333191305667, + "DEF-skirt.L.seg3": 3.6402760699503562, + "DEF-skirt.L.seg2": 4.430261283824864, + "DEF-skirt.L.001": 0.23974937651991812, + "DEF-skirt.L.003.seg1": 6.056427661191389, + "DEF-skirt.R.003": 3.8759857822260786, + "DEF-skirt.L.seg1": 4.760126868318332, + "DEF-skirt.seg2": 0.7391116369404801, + "DEF-skirt.003.seg3": 0.1310899159343887, + "DEF-skirt.seg3": 0.04019258132871978, + "DEF-skirt.seg1": 0.31053856632945737, + "DEF-skirt.003.seg1": 0.049952687783858335, + "DEF-skirt.003.seg2": 0.03862589214435566, + "DEF-skirt.R": 0.7233312277085479, + "DEF-skirt.003": 0.05178392130275811 + }, + { + "DEF-skirt.L.003": 6.056427661191389, + "DEF-skirt.R.003": 3.5362091427452844, + "DEF-skirt.L.003.seg2": 1.4465578586045362, + "DEF-skirt.R.003.seg1": 0.0075091120423149416, + "DEF-skirt.L.004": 0.3003293425343978, + "DEF-skirt.L.seg3": 0.7045235895324149, + "DEF-skirt.L.seg2": 0.1957218245564052, + "DEF-skirt.L.seg1": 0.6595836843532097, + "DEF-skirt.L": 1.5219704851834268, + "DEF-skirt.R": 0.6615938216234099 + }, + { + "DEF-skirt.L.003.seg3": 1.7624733424013248, + "DEF-skirt.R.003": 5.005937962569201, + "DEF-skirt.L.004": 0.677365454643255, + "DEF-skirt.L.seg3": 0.7716510583968516, + "DEF-skirt.L.seg2": 0.19439024437881924, + "DEF-skirt.L.003.seg1": 1.4465578586045362, + "DEF-skirt.R.003.seg1": 0.1158529500045482, + "DEF-skirt.L": 0.9837299947917074, + "DEF-skirt.L.seg1": 0.322305533592365, + "DEF-skirt.R": 0.7641415590885685 + }, + { + "DEF-skirt.L.003.seg2": 1.7624733424013248, + "DEF-skirt.R.003": 4.763912732133256, + "DEF-skirt.L.005.seg2": 0.07865966284521508, + "DEF-skirt.L.004.seg3": 0.5971418419198388, + "DEF-skirt.L.005.seg1": 0.09606776911003378, + "DEF-skirt.R.005.seg3": 0.5377347293486077, + "DEF-skirt.L.005": 1.1878016405318974, + "DEF-skirt.L.004.seg2": 5.510255386232652, + "DEF-skirt.R.003.seg3": 5.539891594630126, + "DEF-skirt.L.004.seg1": 7.552187895272386, + "DEF-skirt.R.004": 1.6662561376102858, + "DEF-skirt.L.004": 5.259879864898258, + "DEF-skirt.L.seg3": 1.533915214427354, + "DEF-skirt.L.seg2": 0.009721631050302243, + "DEF-skirt.R.004.seg1": 0.2699483450459348, + "DEF-skirt.R.003.seg2": 1.2716413510540925, + "DEF-skirt.R.003.seg1": 1.7362462282224314, + "DEF-skirt.L": 1.5856033828218843, + "DEF-skirt.R": 0.9611470727391278, + "DEF-skirt.R.005": 0.04733610412909939, + "DEF-hair.R.005": 2.6234847961983174 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.R" + "DEF-skirt.R", + "DEF-skirt.R.seg1", + "DEF-skirt.R.seg2", + "DEF-skirt.R.seg3" ], "tips": [ [ - -0.03068, - 0.21535, - -0.00882 + 0.0, + 0.05443, + -0.0 + ], + [ + -0.0, + 0.05443, + 0.0 + ], + [ + -0.0, + 0.05443, + 0.0 + ], + [ + -0.01241, + 0.17736, + -0.03549 ] + ], + "hulls": [ + [ + [ + -0.02114, + 0.03224, + -0.06298 + ], + [ + 0.01753, + -0.04064, + 0.03519 + ], + [ + -0.03099, + -0.03708, + -0.04283 + ], + [ + -0.01695, + 0.00322, + 0.00621 + ], + [ + -0.04181, + 0.00588, + -0.02927 + ], + [ + -0.01038, + 0.04966, + -0.02862 + ], + [ + 0.0017, + -0.02936, + -0.02451 + ], + [ + 0.0158, + -0.00613, + 0.04503 + ], + [ + -0.00272, + -0.04123, + 0.00572 + ], + [ + 0.01175, + 0.0006, + 0.01497 + ] + ], + [ + [ + -0.0338, + 0.02373, + -0.06959 + ], + [ + 0.03166, + 0.01198, + 0.06806 + ], + [ + -0.03022, + 0.02067, + 0.00739 + ], + [ + 0.01239, + 0.02598, + 0.0297 + ], + [ + -0.01945, + 0.05274, + -0.03983 + ], + [ + -0.00359, + 0.01483, + -0.02065 + ], + [ + -0.00875, + 0.00158, + 0.04019 + ], + [ + -0.01189, + 0.04561, + -0.00244 + ], + [ + -0.03758, + 0.02729, + -0.03186 + ], + [ + -0.01054, + 0.01781, + -0.06306 + ] + ], + [ + [ + 0.03154, + 0.02968, + 0.0552 + ], + [ + -0.04492, + 0.00877, + -0.04155 + ], + [ + -0.00477, + 0.03216, + 0.00435 + ], + [ + -0.0023, + 0.02461, + -0.05262 + ], + [ + -0.03492, + 0.00104, + 0.00234 + ], + [ + -0.01097, + 0.02919, + -0.03038 + ], + [ + -0.00754, + 0.01281, + -0.00936 + ], + [ + 0.01201, + 0.03077, + 0.01999 + ], + [ + 0.02955, + 0.015, + 0.03963 + ], + [ + -0.01696, + 0.03229, + -0.01065 + ] + ], + [ + [ + -0.03429, + 0.15006, + -0.0334 + ], + [ + 0.03093, + 0.03534, + 0.06112 + ], + [ + -0.01386, + 0.02495, + -0.0922 + ], + [ + 0.02118, + 0.12149, + 0.04485 + ], + [ + -0.02544, + 0.03965, + -0.01748 + ], + [ + -0.01071, + 0.09867, + -0.07886 + ], + [ + -0.01355, + 0.09263, + -0.00563 + ], + [ + 0.01192, + 0.03451, + 0.01784 + ], + [ + 0.01219, + 0.03774, + -0.02933 + ], + [ + 0.02983, + 0.09163, + 0.06656 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.R.003": 21.153115252758028, + "DEF-skirt.007": 18.84494971969905, + "DEF-skirt.007.seg1": 0.7598426687282531, + "DEF-skirt.R.seg1": 3.2779650971406786, + "DEF-skirt.007.seg3": 0.5922937660442745, + "DEF-skirt.R.003.seg1": 0.9644485221168745, + "DEF-skirt.003.seg3": 0.058546876452437446, + "DEF-skirt.007.seg2": 0.17227260051985324, + "DEF-skirt.L": 0.7833441613586325, + "DEF-skirt.L.003.seg1": 0.6615938216234099, + "DEF-skirt.L.003.seg3": 0.9611470727391278, + "DEF-skirt.L.003.seg2": 0.7641415590885685, + "DEF-skirt.L.003": 0.7233312277085479, + "DEF-skirt.003": 1.8390214778296556, + "DEF-skirt.R.003.seg2": 0.0144911590928406 + }, + { + "DEF-skirt.R.seg2": 3.9264200827331246, + "DEF-skirt.007.seg3": 5.990418387665851, + "DEF-skirt.003.seg3": 0.07982489265778714, + "DEF-skirt.R.003.seg1": 2.6460365216903683, + "DEF-skirt.R": 3.2779650971406786, + "DEF-skirt.R.003.seg2": 0.26822713323056313, + "DEF-skirt.R.003": 1.2574131429974016, + "DEF-skirt.007.seg2": 0.014808934502137577, + "DEF-skirt.R.001": 0.07198854155120338, + "DEF-skirt.R.003.seg3": 0.02249763078136091 + }, + { + "DEF-skirt.R.003.seg3": 1.6634802939376083, + "DEF-skirt.R.003.seg2": 0.7907999176082137, + "DEF-skirt.R.001": 1.5263588944722746, + "DEF-skirt.007.seg3": 2.713153852899096, + "DEF-skirt.R.seg1": 3.9264200827331246, + "DEF-skirt.003.seg3": 0.02413577489838903, + "DEF-skirt.R.004": 0.16426175880538585, + "DEF-skirt.R.seg3": 0.09424409085089636, + "DEF-skirt.R.003.seg1": 0.04449534258909127 + }, + { + "DEF-skirt.R.005": 0.020397376975925585, + "DEF-skirt.R.001.seg1": 0.15912477238749645, + "DEF-skirt.R.004.seg1": 0.19151314001136188, + "DEF-skirt.R.004.seg2": 0.04455171348530562, + "DEF-skirt.009.seg3": 4.171412457713149, + "DEF-skirt.R.003.seg3": 7.040713262058846, + "DEF-skirt.009.seg2": 0.6798349904287918, + "DEF-skirt.009.seg1": 0.03686175164852512, + "DEF-skirt.007.seg3": 0.916461866501328, + "DEF-skirt.R.001": 0.6250004873314858, + "DEF-skirt.R.seg2": 0.09424409085089636, + "DEF-skirt.009": 0.08669143553370695, + "DEF-skirt.R.004": 0.21310817027062778, + "DEF-skirt.003.seg3": 0.018324890406280048 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.R.003" + "DEF-skirt.R.003", + "DEF-skirt.R.003.seg1", + "DEF-skirt.R.003.seg2", + "DEF-skirt.R.003.seg3" ], "tips": [ [ - -0.01829, - 0.13101, - 0.02073 + -0.0, + 0.03347, + -0.0 + ], + [ + -0.0, + 0.03347, + -0.0 + ], + [ + -0.0, + 0.03347, + 0.0 + ], + [ + -0.02389, + 0.20399, + 0.00927 ] + ], + "hulls": [ + [ + [ + 0.0844, + -0.03265, + 0.07657 + ], + [ + -0.05994, + -0.02462, + -0.01868 + ], + [ + 0.04684, + 0.03075, + -0.00621 + ], + [ + 0.01437, + -0.03527, + -0.00805 + ], + [ + 0.05972, + -0.01943, + 0.03067 + ], + [ + -0.02106, + -0.00097, + 0.013 + ], + [ + 0.08081, + 0.02144, + 0.01002 + ], + [ + -0.02151, + -0.02616, + -0.02293 + ], + [ + 0.05128, + -0.00727, + -0.00235 + ], + [ + -0.05568, + 0.00449, + 0.0053 + ] + ], + [ + [ + -0.06047, + 0.01677, + -0.03231 + ], + [ + 0.00516, + 0.03249, + 0.00244 + ], + [ + -0.02776, + 0.02669, + -0.00895 + ], + [ + -0.04241, + 0.02239, + -0.02278 + ], + [ + -0.01253, + 0.03006, + 0.00094 + ], + [ + 0.00139, + 0.01878, + 0.00639 + ], + [ + -0.06013, + 0.00359, + -0.03558 + ], + [ + -0.04959, + 0.02001, + -0.02242 + ], + [ + -0.05991, + 0.01697, + -0.03323 + ], + [ + -0.04301, + 0.02224, + -0.02188 + ] + ], + [ + [ + -0.10588, + 0.01972, + -0.04355 + ], + [ + 0.02367, + 0.0003, + 0.00112 + ], + [ + 0.02368, + 0.00034, + 3e-05 + ], + [ + -0.1051, + 0.02009, + -0.04422 + ] + ], + [ + [ + -0.0632, + 0.17938, + -0.00054 + ], + [ + 0.06162, + 0.01689, + 0.02182 + ], + [ + -0.08635, + 0.01546, + -0.03002 + ], + [ + 0.04345, + 0.13606, + 0.01532 + ], + [ + -0.0313, + 0.08171, + 0.01205 + ], + [ + -0.03046, + 0.01385, + 0.01574 + ], + [ + -0.07855, + 0.12217, + -0.02139 + ], + [ + -0.01458, + 0.15008, + 0.01746 + ], + [ + 0.0647, + 0.08471, + 0.01586 + ], + [ + -0.09754, + 0.06735, + -0.03116 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.L.003.seg3": 4.763912732133256, + "DEF-skirt.L.003.seg2": 5.005937962569201, + "DEF-skirt.R": 21.153115252758028, + "DEF-skirt.007": 1.0301041294739737, + "DEF-skirt.007.seg1": 0.22632611848096784, + "DEF-skirt.L.003.seg1": 3.5362091427452844, + "DEF-skirt.L.003": 3.8759857822260786, + "DEF-skirt.L": 3.3102703706591687, + "DEF-skirt.R.seg1": 1.2574131429974016, + "DEF-skirt.R.003.seg1": 1.0807317991880538 + }, + { + "DEF-skirt.L.003.seg2": 0.1158529500045482, + "DEF-skirt.L.003.seg1": 0.0075091120423149416, + "DEF-skirt.L.003.seg3": 1.7362462282224314, + "DEF-skirt.R.003.seg2": 2.396364732019504, + "DEF-skirt.R.seg1": 2.6460365216903683, + "DEF-skirt.R": 0.9644485221168745, + "DEF-skirt.R.003": 1.0807317991880538, + "DEF-skirt.R.seg2": 0.04449534258909127 + }, + { + "DEF-skirt.R.003.seg3": 0.33796963284365766, + "DEF-skirt.R.seg2": 0.7907999176082137, + "DEF-skirt.R.001": 0.15603431496875952, + "DEF-skirt.L.003.seg3": 1.2716413510540925, + "DEF-skirt.R.003.seg1": 2.396364732019504, + "DEF-skirt.R.004": 0.016111401937035363, + "DEF-skirt.R.seg1": 0.26822713323056313, + "DEF-skirt.R": 0.0144911590928406 + }, + { + "DEF-skirt.R.005": 1.091596357605304, + "DEF-skirt.L.005": 0.1715765989223872, + "DEF-skirt.L.003.seg3": 5.539891594630126, + "DEF-skirt.R.005.seg3": 0.1178247570438451, + "DEF-skirt.R.002": 0.012816917290188745, + "DEF-skirt.R.001.seg1": 0.11280987179495439, + "DEF-skirt.L.004.seg2": 5.3545195307750895, + "DEF-skirt.L.004.seg1": 1.9171418898471628, + "DEF-skirt.R.004": 4.464269337643888, + "DEF-skirt.L.004.seg3": 1.2748603054718204, + "DEF-skirt.L.004": 0.845388225157766, + "DEF-skirt.R.004.seg1": 3.6078875543646496, + "DEF-skirt.R.seg3": 7.040713262058846, + "DEF-skirt.R.004.seg2": 3.272260373183556, + "DEF-skirt.R.seg2": 1.6634802939376083, + "DEF-skirt.R.003.seg2": 0.33796963284365766, + "DEF-skirt.R.001": 0.07035853311526641, + "DEF-skirt.R.005.seg1": 0.15873896284533995, + "DEF-skirt.R.seg1": 0.02249763078136091 + } ] }, { "class": "skirt", "root_parent": "DEF-spine.001", "bones": [ - "DEF-skirt.007" + "DEF-skirt.007", + "DEF-skirt.007.seg1", + "DEF-skirt.007.seg2", + "DEF-skirt.007.seg3" ], "tips": [ [ - 0.04149, - 0.08297, - 0.01074 + -0.0, + 0.02335, + 0.0 + ], + [ + -0.0, + 0.02335, + -0.0 + ], + [ + -0.0, + 0.02335, + -0.0 + ], + [ + 0.03535, + 0.15778, + -0.0477 ] + ], + "hulls": [ + [ + [ + 0.07416, + 0.02127, + -0.0527 + ], + [ + -0.02713, + -0.02362, + 0.00114 + ], + [ + 0.04523, + -0.0157, + 0.01881 + ], + [ + 0.029, + 0.01019, + -0.02257 + ], + [ + 0.00178, + 0.0014, + 0.02398 + ], + [ + 0.01602, + -0.0364, + 0.01125 + ], + [ + 0.05427, + -0.02101, + -0.0099 + ], + [ + 0.02523, + 0.01242, + 0.00803 + ], + [ + -0.00408, + -0.00653, + -0.00666 + ], + [ + 0.04906, + 0.00665, + 0.00352 + ] + ], + [ + [ + 0.02545, + 0.01511, + -0.05992 + ], + [ + 0.02253, + 0.01262, + -0.04982 + ], + [ + 0.02635, + 0.0152, + -0.0593 + ], + [ + 0.02174, + 0.01292, + -0.05051 + ] + ], + [ + [ + 0.01812, + 0.00211, + -0.04788 + ], + [ + 0.01567, + 0.01366, + -0.02762 + ], + [ + 0.01857, + 0.00977, + -0.03272 + ], + [ + 0.0163, + 0.01437, + -0.02815 + ], + [ + 0.01752, + 0.01005, + -0.0328 + ], + [ + 0.01709, + 0.00219, + -0.04823 + ] + ], + [ + [ + 0.07896, + 0.05691, + -0.14429 + ], + [ + -0.01373, + 0.01928, + 0.01223 + ], + [ + 0.03479, + 0.13195, + -0.03282 + ], + [ + 0.01653, + 0.03488, + -0.07348 + ], + [ + 0.04884, + 0.09787, + -0.09754 + ], + [ + 0.02565, + 0.07312, + -0.01098 + ], + [ + -0.004, + 6e-05, + -0.03836 + ], + [ + 0.01205, + 0.13481, + 0.00179 + ], + [ + 0.04044, + 0.05296, + -0.0456 + ], + [ + 0.04575, + 0.02487, + -0.09731 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.R": 18.84494971969905, + "DEF-skirt.R.003": 1.0301041294739737, + "DEF-skirt.007.seg1": 1.8201384429565644, + "DEF-skirt": 0.09543175411841748, + "DEF-skirt.003": 17.306699839384407, + "DEF-skirt.003.seg3": 1.5140279785753088, + "DEF-skirt.seg1": 0.04866960387074015, + "DEF-skirt.003.seg2": 0.1699214252576411 + }, + { + "DEF-skirt.R.003": 0.22632611848096784, + "DEF-skirt.R": 0.7598426687282531, + "DEF-skirt.007": 1.8201384429565644, + "DEF-skirt.003.seg3": 2.9822736639827294, + "DEF-skirt.seg2": 0.09495247018795672, + "DEF-skirt.007.seg2": 0.7137936641847316, + "DEF-skirt.003": 0.03645670787178257 + }, + { + "DEF-skirt.seg2": 0.05601081196344071, + "DEF-skirt.003.seg3": 1.980115868442557, + "DEF-skirt.seg3": 0.04747602245800686, + "DEF-skirt.005": 0.016322135250931735, + "DEF-skirt.007.seg1": 0.7137936641847316, + "DEF-skirt.007.seg3": 0.623153370820441, + "DEF-skirt.seg1": 0.01650988077651644, + "DEF-skirt.R": 0.17227260051985324, + "DEF-skirt.R.seg1": 0.014808934502137577 + }, + { + "DEF-skirt.010.seg1": 0.015989096555482363, + "DEF-skirt.R.001": 0.2677451548737494, + "DEF-skirt.010": 0.23355445061974422, + "DEF-skirt.009.seg2": 4.5295165581740635, + "DEF-skirt.009.seg3": 1.5188658246344597, + "DEF-skirt.009.seg1": 2.906074152306811, + "DEF-skirt.003.seg3": 2.7651239767046945, + "DEF-skirt.R.seg2": 2.713153852899096, + "DEF-skirt.R.seg1": 5.990418387665851, + "DEF-skirt.005.seg2": 0.3911211444359659, + "DEF-skirt.005.seg1": 0.7179370267663041, + "DEF-skirt.seg1": 0.12245594475491542, + "DEF-skirt.seg3": 0.42513202420982066, + "DEF-skirt.009": 9.43662584664051, + "DEF-skirt.005": 0.23030644633612807, + "DEF-skirt.R": 0.5922937660442745, + "DEF-skirt.R.seg3": 0.916461866501328, + "DEF-skirt.seg2": 0.1889945161820596, + "DEF-skirt.007.seg2": 0.623153370820441 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.002" + "DEF-skirt.002", + "DEF-skirt.002.seg1", + "DEF-skirt.002.seg2", + "DEF-skirt.002.seg3" ], "tips": [ [ - -0.02029, - 0.0589, - -0.05819 + 0.0, + 0.02131, + 0.0 + ], + [ + 0.0, + 0.02131, + 0.0 + ], + [ + 0.0, + 0.02131, + 0.0 + ], + [ + 0.00417, + 0.04451, + 0.05542 ] + ], + "hulls": [ + [ + [ + 0.00491, + 0.02036, + 0.02338 + ], + [ + 0.00118, + -0.01008, + -0.00922 + ], + [ + -0.00535, + 0.02023, + 0.02123 + ], + [ + 0.00431, + 0.02083, + 0.0226 + ], + [ + 0.00206, + -0.00953, + -0.00956 + ], + [ + -0.00449, + 0.02079, + 0.02086 + ] + ], + [], + [ + [ + -0.006, + 0.00129, + -0.04552 + ], + [ + 0.00173, + 0.0009, + -0.04551 + ], + [ + 0.00111, + 0.00086, + -0.04461 + ], + [ + -0.00544, + 0.00115, + -0.0446 + ] + ], + [ + [ + 0.00349, + 0.00442, + 0.04343 + ], + [ + -0.0032, + 0.02814, + 0.02127 + ], + [ + 0.00456, + 0.02879, + 0.02285 + ], + [ + -0.00265, + 0.02743, + 0.02189 + ], + [ + 0.00243, + 0.00429, + 0.04321 + ], + [ + 0.00375, + 0.0281, + 0.0231 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.002.seg1": 0.9936210139550372, + "DEF-skirt.011.seg2": 0.6140337423742315, + "DEF-skirt.011.seg1": 1.0432309729624893, + "DEF-skirt.seg3": 0.25142821495506595, + "DEF-skirt.L.001": 0.17433376040275084, + "DEF-skirt.011": 0.17798888515931122 + }, + { + "DEF-skirt.002.seg2": 1.0752501775274976, + "DEF-skirt.011.seg3": 0.3210989021621229, + "DEF-skirt.002": 0.9936210139550372, + "DEF-skirt.011.seg2": 0.5566789920191999, + "DEF-skirt.L.002": 0.09750582234609562, + "DEF-skirt.011.seg1": 0.07562430091019157, + "DEF-skirt.L.001": 0.23053920218779567, + "DEF-skirt.L.001.seg1": 0.07011653736356815 + }, + { + "DEF-skirt.002.seg1": 1.0752501775274976, + "DEF-skirt.011.seg3": 0.5137219364069667, + "DEF-skirt.L.002": 0.08363487573375844, + "DEF-skirt.002.seg3": 0.15905285339786146, + "DEF-skirt.011.seg2": 0.09621669328872662, + "DEF-skirt.L.001.seg1": 0.07726076569748527, + "DEF-skirt.011.seg1": 0.012493393667064645, + "DEF-skirt.L.001": 0.03671082080693666 + }, + { + "DEF-skirt.L.002": 0.5233835144511887, + "DEF-skirt.011.seg3": 0.8674111035481489, + "DEF-skirt.L.001.seg1": 0.45340715496411454, + "DEF-skirt.002.seg2": 0.15905285339786146, + "DEF-skirt.011.seg2": 0.11034352255838153 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.011" + "DEF-skirt.011", + "DEF-skirt.011.seg1", + "DEF-skirt.011.seg2", + "DEF-skirt.011.seg3" ], "tips": [ [ - 0.02937, - 0.14504, - -0.07502 + 0.0, + 0.04148, + 0.0 + ], + [ + -0.0, + 0.04148, + -0.0 + ], + [ + -0.0, + 0.04148, + 0.0 + ], + [ + 0.01816, + 0.02605, + 0.10442 ] + ], + "hulls": [ + [ + [ + 0.04555, + 0.01719, + 0.05065 + ], + [ + -0.01818, + 0.0315, + -0.01141 + ], + [ + 0.04426, + 0.04093, + 0.00452 + ], + [ + -0.01417, + 0.04083, + 0.02064 + ], + [ + 0.01652, + 0.02853, + 0.01278 + ], + [ + 0.0061, + 0.04136, + -0.0152 + ], + [ + 0.04377, + 0.02788, + 0.02971 + ], + [ + -0.00782, + 0.01914, + 0.01736 + ], + [ + 0.00605, + 0.04099, + -0.01622 + ], + [ + 0.04483, + 0.02814, + 0.02981 + ] + ], + [ + [ + -0.03298, + 0.02109, + -0.1014 + ], + [ + 0.044, + 0.0191, + 0.03982 + ], + [ + -0.02397, + 0.02043, + -0.02027 + ], + [ + -0.01378, + 0.02499, + 0.05045 + ], + [ + 0.01469, + 0.03476, + -0.05242 + ], + [ + -0.02705, + 0.01748, + -0.06127 + ], + [ + 0.00949, + 0.00032, + -0.02296 + ], + [ + -0.02195, + 0.00929, + 0.01784 + ], + [ + 0.00381, + 0.03256, + -0.00438 + ], + [ + 0.02225, + 0.02837, + 0.01891 + ] + ], + [ + [ + 0.00183, + 0.02126, + 0.06646 + ], + [ + -0.00828, + 0.0029, + -0.04347 + ], + [ + 0.05092, + 0.0052, + 0.02605 + ], + [ + 0.0205, + 0.03405, + -0.00684 + ], + [ + -0.00219, + 0.02441, + 0.02832 + ], + [ + -0.01201, + 0.00779, + -0.00708 + ], + [ + 0.02938, + 0.00509, + -0.0261 + ], + [ + 0.02464, + 0.00163, + 0.01023 + ], + [ + -0.03066, + 0.01182, + -0.03711 + ], + [ + 0.0055, + 0.02391, + -0.02374 + ] + ], + [ + [ + 0.00434, + 0.01589, + 0.1013 + ], + [ + 0.03806, + 0.00779, + 0.00774 + ], + [ + -0.00642, + 0.01225, + 0.04932 + ], + [ + 0.00873, + 0.00112, + 0.01833 + ], + [ + 0.01395, + 0.02871, + 0.07745 + ], + [ + -0.00506, + 0.00682, + 0.08185 + ], + [ + 0.0056, + 0.02706, + 0.07629 + ], + [ + 0.01711, + 0.00205, + 0.01798 + ], + [ + 0.00143, + 0.01361, + 0.04976 + ], + [ + -0.00568, + 0.01153, + 0.04966 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.011.seg1": 4.58106049623973, + "DEF-skirt.002": 0.17798888515931122, + "DEF-skirt.seg3": 4.6961528319649295, + "DEF-skirt.003.seg3": 1.6883411692987111, + "DEF-skirt.005.seg2": 1.117578855302317, + "DEF-skirt.005.seg1": 1.9069345583682153, + "DEF-skirt.005": 0.20566438243868845, + "DEF-skirt.L.seg3": 0.13239584627096912, + "DEF-skirt.seg2": 0.15320185432908007, + "DEF-skirt.L.seg2": 0.01208546172060343, + "DEF-skirt.005.seg3": 0.006026445906482214 + }, + { + "DEF-skirt.011": 4.58106049623973, + "DEF-skirt.011.seg2": 7.206079765921628, + "DEF-skirt.L.002": 0.02658579166615116, + "DEF-skirt.002.seg2": 0.012493393667064645, + "DEF-skirt.002.seg1": 0.07562430091019157, + "DEF-skirt.L.001": 1.879150088933239, + "DEF-skirt.L.001.seg1": 0.060376459628942836, + "DEF-skirt.002": 1.0432309729624893, + "DEF-skirt.seg3": 5.570096570820647, + "DEF-skirt.003.seg3": 1.3719167847603355, + "DEF-skirt.005.seg2": 3.0893325526066313, + "DEF-skirt.005.seg1": 1.0448083213115291, + "DEF-skirt.L.seg3": 0.6236902469398551, + "DEF-skirt.005.seg3": 0.031181913198806976 + }, + { + "DEF-skirt.011.seg1": 7.206079765921628, + "DEF-skirt.L.002": 0.1453999495240184, + "DEF-skirt.002.seg3": 0.11034352255838153, + "DEF-skirt.011.seg3": 2.7495159105118065, + "DEF-skirt.002.seg2": 0.09621669328872662, + "DEF-skirt.L.001.seg1": 0.8697016458385258, + "DEF-skirt.002.seg1": 0.5566789920191999, + "DEF-skirt.002": 0.6140337423742315, + "DEF-skirt.L.001": 1.0570456406771491, + "DEF-skirt.L.seg3": 3.711280083702404, + "DEF-skirt.seg3": 2.8357110381653126, + "DEF-skirt.005.seg2": 1.4663347373091402, + "DEF-skirt.005.seg1": 0.06153290296288072, + "DEF-skirt.003.seg3": 0.25246157887255904, + "DEF-skirt.L.001.seg2": 0.02397434757873418 + }, + { + "DEF-skirt.002.seg2": 0.5137219364069667, + "DEF-skirt.002.seg1": 0.3210989021621229, + "DEF-skirt.L.002": 0.2979373224340631, + "DEF-skirt.002.seg3": 0.8674111035481489, + "DEF-skirt.L.001.seg1": 0.43628207869348157, + "DEF-skirt.011.seg2": 2.7495159105118065, + "DEF-skirt.L.seg3": 4.602221938080493, + "DEF-skirt.seg3": 0.14448731559887507, + "DEF-skirt.005.seg2": 0.06419735157119555, + "DEF-skirt.L.001.seg2": 0.020762523308016423 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.006" + "DEF-skirt.006", + "DEF-skirt.006.seg1", + "DEF-skirt.006.seg2", + "DEF-skirt.006.seg3" ], "tips": [ [ - 0.00091, - 0.03548, - -0.00392 + -0.0, + 0.00893, + -0.0 + ], + [ + 0.0, + 0.00893, + -0.0 + ], + [ + 0.0, + 0.00893, + -0.0 + ], + [ + -0.00117, + 0.04461, + -0.0053 ] + ], + "hulls": [ + [ + [ + 0.00216, + -0.04675, + -0.00554 + ], + [ + 0.00152, + -0.01123, + -0.00176 + ], + [ + 0.00053, + -0.01137, + -0.00133 + ], + [ + 0.00319, + -0.04662, + -0.00587 + ] + ], + [], + [], + [ + [ + -0.00142, + 0.03972, + -0.00011 + ], + [ + -0.00123, + 0.00532, + -0.00385 + ], + [ + 0.00706, + 0.00757, + 0.0056 + ], + [ + -0.00256, + 0.03845, + -0.00764 + ], + [ + -0.00168, + 0.00542, + -0.00286 + ], + [ + -0.002, + 0.03881, + -0.00032 + ], + [ + 0.00607, + 0.00733, + 0.00522 + ], + [ + -0.0029, + 0.03793, + -0.00674 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.005.seg1": 1.2229846542125553, + "DEF-skirt.005.seg2": 0.38039666877214595, + "DEF-skirt.003.seg3": 0.32341552001905205, + "DEF-skirt.005": 0.26069539357345217, + "DEF-skirt.seg3": 0.1217170026805725 + }, + {}, + {}, + { + "DEF-skirt.005.seg2": 0.6104225058278434, + "DEF-skirt.005.seg3": 0.24410953164354598 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.005" + "DEF-skirt.005", + "DEF-skirt.005.seg1", + "DEF-skirt.005.seg2", + "DEF-skirt.005.seg3" ], "tips": [ [ - 0.02723, - 0.16522, - -0.072 + -0.0, + 0.04557, + -0.0 + ], + [ + 0.0, + 0.04557, + 0.0 + ], + [ + -0.0, + 0.04557, + 0.0 + ], + [ + -0.0, + 0.04557, + 0.0 ] + ], + "hulls": [ + [], + [ + [ + 0.04663, + 0.01394, + 0.04105 + ], + [ + -0.02303, + 0.03049, + -0.02364 + ], + [ + -0.00475, + 0.0113, + 0.02904 + ], + [ + 0.02439, + 0.03557, + 0.01084 + ], + [ + -0.00047, + 0.01757, + -0.00073 + ], + [ + 0.0183, + 0.01347, + 0.04315 + ], + [ + -0.00173, + 0.03373, + -0.00677 + ], + [ + 0.02397, + 0.01999, + 0.01807 + ], + [ + -0.00389, + 0.01687, + -0.00884 + ], + [ + 0.02427, + 0.01958, + 0.0171 + ] + ], + [ + [ + -0.08284, + 0.01524, + -0.00176 + ], + [ + 0.0806, + 0.01055, + 0.01714 + ], + [ + -0.00087, + 0.0032, + -0.02655 + ], + [ + 0.02081, + 0.01037, + 0.02289 + ], + [ + -0.05224, + 0.01847, + -0.02383 + ], + [ + 0.06023, + 0.0273, + -0.00431 + ], + [ + -0.02686, + 0.00487, + -0.00898 + ], + [ + -0.02613, + 0.02093, + -0.03629 + ], + [ + 0.02407, + 0.02705, + 0.00052 + ], + [ + -0.00454, + 0.02535, + -0.01046 + ] + ], + [] + ], + "neighbours": [ + { + "DEF-skirt.003.seg3": 2.6745725910706306, + "DEF-skirt.006": 0.26069539357345217, + "DEF-skirt.005.seg1": 1.0802518478592633, + "DEF-skirt.seg3": 1.3755075436915636, + "DEF-skirt.009": 0.7109617764468392, + "DEF-skirt.seg2": 0.4334825864653958, + "DEF-skirt.011": 0.20566438243868845, + "DEF-skirt.009.seg1": 0.3450042763204117, + "DEF-skirt.007.seg3": 0.23030644633612807, + "DEF-skirt.seg1": 0.16033306364800098, + "DEF-skirt.007.seg2": 0.016322135250931735, + "DEF-skirt.010": 0.010310972552469655, + "DEF-skirt.009.seg2": 0.05151539510096881 + }, + { + "DEF-skirt.006": 1.2229846542125553, + "DEF-skirt.005.seg2": 2.2839419227847424, + "DEF-skirt.003.seg3": 4.093617441427922, + "DEF-skirt.005": 1.0802518478592633, + "DEF-skirt.seg3": 3.920393819893497, + "DEF-skirt.011.seg1": 1.0448083213115291, + "DEF-skirt.011": 1.9069345583682153, + "DEF-skirt.011.seg2": 0.06153290296288072, + "DEF-skirt.009": 1.1164002439418375, + "DEF-skirt.010": 0.18882265189366965, + "DEF-skirt.009.seg1": 1.364221007427845, + "DEF-skirt.009.seg2": 1.0288586076015256, + "DEF-skirt.007.seg3": 0.7179370267663041, + "DEF-skirt.009.seg3": 0.16007123804476198, + "DEF-skirt.seg2": 0.007790076778398158 + }, + { + "DEF-skirt.006.seg3": 0.6104225058278434, + "DEF-skirt.005.seg3": 0.22486251911275246, + "DEF-skirt.006": 0.38039666877214595, + "DEF-skirt.005.seg1": 2.2839419227847424, + "DEF-skirt.003.seg3": 4.8612654356533715, + "DEF-skirt.seg3": 4.61498402848288, + "DEF-skirt.009": 0.3083252302655602, + "DEF-skirt.009.seg1": 1.2483108134831402, + "DEF-skirt.011.seg1": 3.0893325526066313, + "DEF-skirt.011": 1.117578855302317, + "DEF-skirt.011.seg2": 1.4663347373091402, + "DEF-skirt.L.seg3": 0.03759796665737425, + "DEF-skirt.010": 0.11437498180926176, + "DEF-skirt.009.seg2": 0.8744732184988231, + "DEF-skirt.007.seg3": 0.3911211444359659, + "DEF-skirt.011.seg3": 0.06419735157119555, + "DEF-skirt.009.seg3": 0.08906398621705636 + }, + { + "DEF-skirt.006.seg3": 0.24410953164354598, + "DEF-skirt.005.seg2": 0.22486251911275246, + "DEF-skirt.011.seg1": 0.031181913198806976, + "DEF-skirt.seg3": 0.040614199510271565, + "DEF-skirt.003.seg3": 0.04013802336446326, + "DEF-skirt.011": 0.006026445906482214 + } ] }, { @@ -597,52 +5998,670 @@ ], "tips": [ [ - 0.00968, - 0.11247, - 0.00454 + 0.03121, + 0.10187, + -0.02038 ] + ], + "hulls": [ + [ + [ + 0.06915, + 0.02444, + -0.07296 + ], + [ + 2e-05, + 0.06885, + 1e-05 + ], + [ + 0.0171, + 0.03783, + 0.00801 + ], + [ + -0.00058, + 0.03804, + -0.00026 + ], + [ + 0.00719, + 0.06892, + 0.00329 + ], + [ + 0.00668, + 0.06797, + 0.00311 + ], + [ + 0.00041, + 0.03801, + 0.00021 + ], + [ + 0.01613, + 0.03765, + 0.00756 + ], + [ + 0.06968, + 0.02446, + -0.07201 + ], + [ + 0.00073, + 0.06811, + 0.00037 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.002.seg3": 0.5233835144511887, + "DEF-skirt.011.seg3": 0.2979373224340631, + "DEF-skirt.L.001.seg1": 1.4627848674895, + "DEF-skirt.L.001.seg3": 0.988772566592522, + "DEF-skirt.L.001.seg2": 1.6368903816027336, + "DEF-skirt.L.005.seg3": 0.26989297982735216, + "DEF-skirt.002.seg2": 0.08363487573375844, + "DEF-skirt.011.seg2": 0.1453999495240184, + "DEF-skirt.L.005.seg2": 0.16870674232060612, + "DEF-skirt.002.seg1": 0.09750582234609562, + "DEF-skirt.011.seg1": 0.02658579166615116, + "DEF-skirt.L.001": 0.08222018431886025, + "DEF-skirt.L.seg3": 0.10102962666415694, + "DEF-skirt.L.005": 0.13331009360929014, + "DEF-skirt.L.004": 0.808795880142356 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.L.001" + "DEF-skirt.L.001", + "DEF-skirt.L.001.seg1", + "DEF-skirt.L.001.seg2", + "DEF-skirt.L.001.seg3" ], "tips": [ [ - 0.08352, - 0.19687, - -0.07977 + -0.0, + 0.05706, + -0.0 + ], + [ + 0.0, + 0.05706, + 0.0 + ], + [ + -0.0, + 0.05706, + 0.0 + ], + [ + -0.01745, + 0.0433, + 0.00879 ] + ], + "hulls": [ + [], + [ + [ + 0.0453, + 0.03397, + -0.03352 + ], + [ + -0.02599, + 0.04117, + 0.03719 + ], + [ + 0.01442, + 0.0089, + -0.03226 + ], + [ + 0.03648, + 0.00736, + -0.02149 + ], + [ + 0.02389, + 0.0376, + -0.04501 + ], + [ + -0.03656, + 0.03795, + 0.02107 + ], + [ + 0.02876, + 0.0087, + -0.02573 + ], + [ + 0.03718, + 0.03412, + -0.03711 + ], + [ + 0.04134, + 0.03589, + -0.03638 + ], + [ + 0.03182, + 0.0073, + -0.02352 + ] + ], + [ + [ + -0.02291, + 0.04811, + -0.00045 + ], + [ + -0.02001, + 0.01423, + 0.02762 + ], + [ + -0.03027, + 0.01093, + 0.01132 + ], + [ + -0.02969, + 0.01111, + 0.01223 + ], + [ + -0.02058, + 0.01404, + 0.02671 + ], + [ + -0.02238, + 0.0481, + 0.00051 + ] + ], + [ + [ + -0.0072, + 0.02243, + 0.00665 + ], + [ + -0.01133, + 0.02133, + 2e-05 + ], + [ + -0.01118, + 0.02051, + 0.00071 + ], + [ + -0.00772, + 0.0216, + 0.00617 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.L.002": 0.08222018431886025, + "DEF-skirt.011.seg2": 1.0570456406771491, + "DEF-skirt.002.seg2": 0.03671082080693666, + "DEF-skirt.002.seg1": 0.23053920218779567, + "DEF-skirt.011.seg1": 1.879150088933239, + "DEF-skirt.L.001.seg1": 1.7333563654776996, + "DEF-skirt.002": 0.17433376040275084, + "DEF-skirt.seg3": 0.4132729913690881, + "DEF-skirt.L.seg3": 1.7430155018692777, + "DEF-skirt.seg2": 0.07432020535983441, + "DEF-skirt.L.003": 0.23974937651991812, + "DEF-skirt.L.seg2": 0.10371684437270923 + }, + { + "DEF-skirt.L.002": 1.4627848674895, + "DEF-skirt.002.seg3": 0.45340715496411454, + "DEF-skirt.011.seg3": 0.43628207869348157, + "DEF-skirt.002.seg2": 0.07726076569748527, + "DEF-skirt.011.seg2": 0.8697016458385258, + "DEF-skirt.L.001.seg2": 1.5718474151046895, + "DEF-skirt.002.seg1": 0.07011653736356815, + "DEF-skirt.011.seg1": 0.060376459628942836, + "DEF-skirt.L.001": 1.7333563654776996, + "DEF-skirt.L.seg3": 0.19093190472623134, + "DEF-skirt.L.005": 0.36357547421065073, + "DEF-skirt.L.004": 0.8051463519527622 + }, + { + "DEF-skirt.L.002": 1.6368903816027336, + "DEF-skirt.L.001.seg3": 0.4428292313472455, + "DEF-skirt.L.005.seg3": 0.0646526762887677, + "DEF-skirt.L.001.seg1": 1.5718474151046895, + "DEF-skirt.L.005.seg2": 0.21270272007869018, + "DEF-skirt.L.seg3": 0.1699154302186351, + "DEF-skirt.L.005": 0.358614413021921, + "DEF-skirt.L.004": 0.6736723993011002, + "DEF-skirt.011.seg2": 0.02397434757873418, + "DEF-skirt.011.seg3": 0.020762523308016423 + }, + { + "DEF-skirt.L.002": 0.988772566592522, + "DEF-skirt.L.001.seg2": 0.4428292313472455, + "DEF-skirt.L.005.seg3": 0.47097637669824355, + "DEF-skirt.L.005.seg2": 0.12279700596246146 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.L.005" + "DEF-skirt.L.005", + "DEF-skirt.L.005.seg1", + "DEF-skirt.L.005.seg2", + "DEF-skirt.L.005.seg3" ], "tips": [ [ - -0.00431, - 0.06347, - 0.00967 + -0.0, + 0.01609, + -0.0 + ], + [ + 0.0, + 0.01609, + 0.0 + ], + [ + -0.0, + 0.01609, + -0.0 + ], + [ + -0.00328, + 0.03949, + 0.01665 ] + ], + "hulls": [ + [ + [ + -0.00485, + -0.03063, + 0.00248 + ], + [ + -0.00254, + 0.0033, + 0.01753 + ], + [ + -0.00239, + 0.00046, + -0.0018 + ], + [ + -0.00253, + 0.00314, + 0.01645 + ], + [ + -0.0024, + 0.00062, + -0.00072 + ], + [ + -0.00485, + -0.03047, + 0.00356 + ] + ], + [], + [ + [ + -0.00236, + 0.00948, + -0.012 + ], + [ + 0.00046, + 0.00643, + 0.00707 + ], + [ + -0.00219, + 0.00911, + -0.01099 + ], + [ + 0.00031, + 0.00659, + 0.006 + ] + ], + [ + [ + -0.00127, + 0.01968, + 0.01112 + ], + [ + -0.00243, + 0.02102, + 0.00345 + ], + [ + -0.00226, + 0.02, + 0.00382 + ], + [ + -0.00131, + 0.01905, + 0.01023 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.L.004.seg3": 0.18071373217817754, + "DEF-skirt.L.003.seg3": 1.1878016405318974, + "DEF-skirt.L.004.seg2": 0.48988694772853547, + "DEF-skirt.R.005.seg3": 0.8433881844420577, + "DEF-skirt.L.seg3": 0.04318668795316161, + "DEF-skirt.L.001.seg2": 0.358614413021921, + "DEF-skirt.L.002": 0.13331009360929014, + "DEF-skirt.L.001.seg1": 0.36357547421065073, + "DEF-skirt.R.003.seg3": 0.1715765989223872, + "DEF-skirt.R.004": 0.030876031930140435, + "DEF-skirt.R.004.seg1": 0.020803836908132034, + "DEF-skirt.L.004": 0.22954852875263643, + "DEF-skirt.L.004.seg1": 1.117666014626619, + "DEF-skirt.R.005": 0.00681448318365796 + }, + { + "DEF-skirt.L.005.seg2": 0.2999459253805148, + "DEF-skirt.L.004.seg3": 0.286943106992394, + "DEF-skirt.L.003.seg3": 0.09606776911003378, + "DEF-skirt.R.005.seg3": 0.289521499895125 + }, + { + "DEF-skirt.L.004.seg3": 0.2371031746007346, + "DEF-skirt.L.003.seg3": 0.07865966284521508, + "DEF-skirt.L.005.seg1": 0.2999459253805148, + "DEF-skirt.R.005.seg3": 0.2372906590447128, + "DEF-skirt.L.002": 0.16870674232060612, + "DEF-skirt.L.001.seg3": 0.12279700596246146, + "DEF-skirt.L.001.seg2": 0.21270272007869018, + "DEF-skirt.L.005.seg3": 0.14366482829699256 + }, + { + "DEF-skirt.L.002": 0.26989297982735216, + "DEF-skirt.L.001.seg3": 0.47097637669824355, + "DEF-skirt.L.001.seg2": 0.0646526762887677, + "DEF-skirt.L.005.seg2": 0.14366482829699256 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.L.004" + "DEF-skirt.L.004", + "DEF-skirt.L.004.seg1", + "DEF-skirt.L.004.seg2", + "DEF-skirt.L.004.seg3" ], "tips": [ [ - 0.12519, - 0.17009, - 0.08382 + 0.0, + 0.0568, + -0.0 + ], + [ + 0.0, + 0.05681, + -0.0 + ], + [ + -0.0, + 0.0568, + 0.0 + ], + [ + -0.0338, + 0.05438, + 0.08144 ] + ], + "hulls": [ + [ + [ + -0.15102, + 0.0078, + 0.08207 + ], + [ + 0.00824, + 0.03576, + 0.00178 + ], + [ + -0.05835, + 0.0553, + -0.00941 + ], + [ + -0.09639, + 0.03085, + 0.06009 + ], + [ + -0.12285, + -0.00656, + 0.08433 + ], + [ + -0.12841, + -0.01172, + 0.07969 + ], + [ + -0.1452, + 0.0128, + 0.08653 + ], + [ + -0.05826, + 0.05446, + -0.01011 + ], + [ + -0.15, + 0.00781, + 0.08246 + ], + [ + 0.00825, + 0.03587, + 0.00286 + ] + ], + [ + [ + 0.08616, + 0.03472, + -0.05979 + ], + [ + -0.05431, + 0.05202, + 0.02224 + ], + [ + 0.02518, + 0.0375, + 0.00055 + ], + [ + -0.02527, + 0.02548, + -0.02003 + ], + [ + 0.07674, + 0.02108, + 0.00321 + ], + [ + 0.04784, + 0.00565, + -0.01696 + ], + [ + 0.05354, + 0.035, + -0.0416 + ], + [ + -0.0043, + 0.04893, + 0.0021 + ], + [ + 0.05709, + 0.03934, + -0.00321 + ], + [ + 0.07479, + 0.0475, + -0.02989 + ] + ], + [ + [ + -0.0656, + 0.03387, + 0.0299 + ], + [ + 0.06661, + 0.00056, + -0.00535 + ], + [ + -0.00376, + 0.00758, + -0.01638 + ], + [ + -0.01302, + 0.03632, + 0.01466 + ], + [ + -0.03914, + 0.01854, + 0.04737 + ], + [ + -0.02557, + 0.00374, + 0.01734 + ], + [ + 0.03762, + 0.0123, + -0.00983 + ], + [ + -0.04518, + 0.02831, + 0.01086 + ], + [ + -0.03363, + 0.04644, + 0.02948 + ], + [ + 0.00975, + 0.02427, + -0.00104 + ] + ], + [] + ], + "neighbours": [ + { + "DEF-skirt.L.004.seg1": 4.0678154269769955, + "DEF-skirt.L.005": 0.22954852875263643, + "DEF-skirt.L.001.seg2": 0.6736723993011002, + "DEF-skirt.L.002": 0.808795880142356, + "DEF-skirt.L.001.seg1": 0.8051463519527622, + "DEF-skirt.L.seg3": 3.793317002760232, + "DEF-skirt.L.003": 0.21646333191305667, + "DEF-skirt.L.seg2": 0.06935733543747569, + "DEF-skirt.L.003.seg3": 5.259879864898258, + "DEF-skirt.R.003.seg3": 0.845388225157766, + "DEF-skirt.L.003.seg2": 0.677365454643255, + "DEF-skirt.seg3": 0.8155590405608446, + "DEF-skirt": 0.19603096959511881, + "DEF-skirt.seg2": 0.14029811314042995, + "DEF-skirt.L.003.seg1": 0.3003293425343978, + "DEF-skirt.R.004": 0.13967539384350525, + "DEF-skirt.seg1": 0.20676807425859 + }, + { + "DEF-skirt.L.004": 4.0678154269769955, + "DEF-skirt.L.005": 1.117666014626619, + "DEF-skirt.R.003.seg3": 1.9171418898471628, + "DEF-skirt.L.004.seg2": 4.7309382362110455, + "DEF-skirt.L.003.seg3": 7.552187895272386, + "DEF-skirt.R.004": 1.5419089252454603, + "DEF-skirt.L.seg3": 0.9764221426855458, + "DEF-skirt.R.004.seg1": 0.07202823700664285, + "DEF-skirt.seg3": 0.029836616482513456 + }, + { + "DEF-skirt.L.004.seg3": 1.095682577471105, + "DEF-skirt.L.003.seg3": 5.510255386232652, + "DEF-skirt.L.005": 0.48988694772853547, + "DEF-skirt.R.005.seg3": 0.4449604793694335, + "DEF-skirt.R.004": 1.9079217533708204, + "DEF-skirt.R.004.seg1": 1.6832252773454213, + "DEF-skirt.R.003.seg3": 5.3545195307750895, + "DEF-skirt.L.004.seg1": 4.7309382362110455, + "DEF-skirt.R.004.seg2": 0.15842716545330904, + "DEF-skirt.R.005.seg1": 0.035164787307590095, + "DEF-skirt.R.005": 0.007233539959747903 + }, + { + "DEF-skirt.L.005.seg2": 0.2371031746007346, + "DEF-skirt.L.003.seg3": 0.5971418419198388, + "DEF-skirt.L.005.seg1": 0.286943106992394, + "DEF-skirt.R.005.seg3": 0.7169556622842608, + "DEF-skirt.L.005": 0.18071373217817754, + "DEF-skirt.L.004.seg2": 1.095682577471105, + "DEF-skirt.R.003.seg3": 1.2748603054718204, + "DEF-skirt.R.004.seg1": 0.5166879515818066, + "DEF-skirt.R.004.seg2": 0.25998774990698886 + } ] }, { @@ -657,76 +6676,1153 @@ 0.11247, 0.00454 ] + ], + "hulls": [ + [ + [ + -0.00719, + 0.06892, + 0.00329 + ], + [ + -0.0171, + 0.03783, + 0.00801 + ], + [ + 0.00058, + 0.03804, + -0.00026 + ], + [ + -2e-05, + 0.06885, + 1e-05 + ], + [ + -0.00073, + 0.06811, + 0.00037 + ], + [ + -0.00041, + 0.03801, + 0.00021 + ], + [ + -0.01612, + 0.03765, + 0.00756 + ], + [ + -0.00668, + 0.06797, + 0.00311 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.R.001.seg3": 0.4721447238142513, + "DEF-skirt.R.001.seg2": 1.3861041106828074, + "DEF-skirt.R.005": 0.5360177981787058, + "DEF-skirt.R.001.seg1": 1.026548805673111, + "DEF-skirt.010.seg3": 0.27244704748154724, + "DEF-skirt.010.seg2": 0.18258340776049164, + "DEF-skirt.009.seg3": 0.5169325843054446, + "DEF-skirt.010.seg1": 0.051648361776784, + "DEF-skirt.R.003.seg3": 0.012816917290188745, + "DEF-skirt.R.004.seg2": 0.018325292971089646, + "DEF-skirt.R.001": 0.06312256627611201, + "DEF-skirt.010": 0.029037682237823992 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.R.001" + "DEF-skirt.R.001", + "DEF-skirt.R.001.seg1", + "DEF-skirt.R.001.seg2", + "DEF-skirt.R.001.seg3" ], "tips": [ [ - -0.1032, - 0.21865, - -0.0877 + 0.0, + 0.0643, + -0.0 + ], + [ + -0.0, + 0.0643, + 0.0 + ], + [ + -0.0, + 0.0643, + 0.0 + ], + [ + -0.00053, + 0.0016, + 0.01591 ] + ], + "hulls": [ + [ + [ + 0.0053, + 0.01949, + 0.11977 + ], + [ + 0.03099, + 0.06327, + 0.02728 + ], + [ + 0.00431, + 0.01991, + 0.11959 + ], + [ + 0.02996, + 0.0634, + 0.02764 + ] + ], + [ + [ + 0.0247, + 0.06188, + 0.01354 + ], + [ + -0.04416, + 0.02727, + -0.03656 + ], + [ + -0.01632, + 0.00129, + -0.03211 + ], + [ + 0.02158, + 0.03459, + 0.03826 + ], + [ + -0.02664, + 0.0297, + -0.04487 + ], + [ + 0.03255, + 0.03188, + 0.02232 + ], + [ + -0.0173, + 0.00116, + -0.03165 + ], + [ + 0.0253, + 0.06173, + 0.01264 + ], + [ + -0.04318, + 0.0274, + -0.03703 + ], + [ + 0.02218, + 0.03444, + 0.03736 + ] + ], + [ + [ + 0.0003, + 0.06429, + 0.00748 + ], + [ + 0.01463, + 0.00023, + 0.02877 + ], + [ + 0.01676, + 0.03439, + 0.00096 + ], + [ + 0.0061, + 0.03696, + 0.01711 + ], + [ + 0.00403, + 0.06421, + 0.00139 + ], + [ + 0.00669, + 0.0368, + 0.01621 + ], + [ + 0.01523, + 7e-05, + 0.02786 + ], + [ + 0.0039, + 0.06337, + 0.00209 + ], + [ + 0.01621, + 0.03435, + 0.0019 + ] + ], + [] + ], + "neighbours": [ + { + "DEF-skirt.010.seg1": 0.027378974892033114, + "DEF-skirt.007.seg3": 0.2677451548737494, + "DEF-skirt.010": 0.31555339612032274, + "DEF-skirt.009.seg2": 0.4018968056498796, + "DEF-skirt.009.seg3": 0.24376088738124668, + "DEF-skirt.R.001.seg1": 1.0607064606861076, + "DEF-skirt.009.seg1": 0.05524117514372051, + "DEF-skirt.R.002": 0.06312256627611201, + "DEF-skirt.R.seg2": 1.5263588944722746, + "DEF-skirt.R.003.seg3": 0.07035853311526641, + "DEF-skirt.R.003.seg2": 0.15603431496875952, + "DEF-skirt.R.seg3": 0.6250004873314858, + "DEF-skirt.R.seg1": 0.07198854155120338 + }, + { + "DEF-skirt.010.seg3": 0.2332891127301584, + "DEF-skirt.R.002": 1.026548805673111, + "DEF-skirt.010.seg2": 0.12614822889344357, + "DEF-skirt.009.seg3": 0.39026871228668636, + "DEF-skirt.R.001.seg2": 0.45374872514639186, + "DEF-skirt.010.seg1": 0.033309799028286846, + "DEF-skirt.R.005": 0.4914130450568921, + "DEF-skirt.R.003.seg3": 0.11280987179495439, + "DEF-skirt.R.001": 1.0607064606861076, + "DEF-skirt.R.004.seg2": 0.14391126107917818, + "DEF-skirt.010": 0.01830603357103766, + "DEF-skirt.R.seg3": 0.15912477238749645, + "DEF-skirt.R.004.seg1": 0.10724688171236707 + }, + { + "DEF-skirt.R.001.seg3": 0.48646409436291727, + "DEF-skirt.R.002": 1.3861041106828074, + "DEF-skirt.R.005": 0.7915718703374228, + "DEF-skirt.R.001.seg1": 0.45374872514639186, + "DEF-skirt.R.004.seg2": 0.04626688987928218 + }, + { + "DEF-skirt.R.002": 0.4721447238142513, + "DEF-skirt.R.001.seg2": 0.48646409436291727, + "DEF-skirt.R.005": 0.2593759751341018 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.R.005" + "DEF-skirt.R.005", + "DEF-skirt.R.005.seg1", + "DEF-skirt.R.005.seg2", + "DEF-skirt.R.005.seg3" ], "tips": [ [ - -0.06487, - 0.03189, - 0.02494 + 0.0, + 0.01912, + 0.0 + ], + [ + 0.0, + 0.01912, + 0.0 + ], + [ + 0.0, + 0.01912, + -0.0 + ], + [ + 0.08661, + 0.13329, + 0.07735 ] + ], + "hulls": [ + [ + [ + 0.0341, + 0.01431, + 0.01315 + ], + [ + -0.02492, + -0.01564, + -0.00996 + ], + [ + -0.00759, + 0.00361, + 0.01594 + ], + [ + 0.00187, + -0.00238, + -7e-05 + ], + [ + 0.00134, + -0.00204, + 0.00082 + ], + [ + 0.03357, + 0.01464, + 0.01405 + ], + [ + -0.00707, + 0.00327, + 0.01504 + ], + [ + -0.02438, + -0.01598, + -0.01085 + ] + ], + [ + [ + -0.05443, + 0.00812, + -0.03221 + ], + [ + -0.02008, + 0.00129, + -0.03264 + ], + [ + -0.04983, + 0.01063, + -0.03808 + ], + [ + -0.02056, + 0.00086, + -0.03176 + ], + [ + -0.04941, + 0.01002, + -0.03727 + ], + [ + -0.05337, + 0.00801, + -0.03246 + ] + ], + [], + [ + [ + 0.08062, + 0.02593, + 0.06383 + ], + [ + 0.01748, + 0.09156, + 0.02803 + ], + [ + 0.04592, + 0.07269, + 0.02198 + ], + [ + 0.06121, + 0.04666, + 0.05168 + ], + [ + 0.03615, + 0.07203, + 0.03887 + ], + [ + 0.03671, + 0.07206, + 0.03793 + ], + [ + 0.08118, + 0.02596, + 0.06289 + ], + [ + 0.01837, + 0.09107, + 0.02763 + ], + [ + 0.06065, + 0.04663, + 0.05262 + ], + [ + 0.04551, + 0.07252, + 0.02298 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.R.005.seg1": 1.1971281659610125, + "DEF-skirt.R.001.seg3": 0.2593759751341018, + "DEF-skirt.R.002": 0.5360177981787058, + "DEF-skirt.R.001.seg2": 0.7915718703374228, + "DEF-skirt.R.001.seg1": 0.4914130450568921, + "DEF-skirt.R.003.seg3": 1.091596357605304, + "DEF-skirt.R.004.seg2": 9.754011944602853, + "DEF-skirt.R.seg3": 0.020397376975925585, + "DEF-skirt.R.004.seg1": 6.500489989848925, + "DEF-skirt.L.004.seg2": 0.007233539959747903, + "DEF-skirt.R.004": 0.0037763106041570904, + "DEF-skirt.R.004.seg3": 0.2621371448345676, + "DEF-skirt.L.003.seg3": 0.04733610412909939, + "DEF-skirt.L.005": 0.00681448318365796 + }, + { + "DEF-skirt.R.005": 1.1971281659610125, + "DEF-skirt.R.003.seg3": 0.15873896284533995, + "DEF-skirt.R.004.seg2": 0.05547518726174139, + "DEF-skirt.R.004.seg1": 0.09565318256508437, + "DEF-skirt.L.004.seg2": 0.035164787307590095, + "DEF-skirt.R.004": 0.018476782348616994, + "DEF-skirt.R.005.seg2": 0.05278311122623336 + }, + { + "DEF-skirt.R.005.seg1": 0.05278311122623336 + }, + { + "DEF-skirt.L.005.seg2": 0.2372906590447128, + "DEF-skirt.L.004.seg3": 0.7169556622842608, + "DEF-skirt.L.003.seg3": 0.5377347293486077, + "DEF-skirt.L.005.seg1": 0.289521499895125, + "DEF-skirt.L.005": 0.8433881844420577, + "DEF-skirt.L.004.seg2": 0.4449604793694335, + "DEF-skirt.R.003.seg3": 0.1178247570438451, + "DEF-skirt.R.004": 0.03221048762352208, + "DEF-skirt.R.004.seg1": 0.021702974422598054 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.R.004" + "DEF-skirt.R.004", + "DEF-skirt.R.004.seg1", + "DEF-skirt.R.004.seg2", + "DEF-skirt.R.004.seg3" ], "tips": [ [ - 0.04541, - 0.19105, - -0.00365 + -0.0, + 0.0491, + -0.0 + ], + [ + -0.0, + 0.0491, + -0.0 + ], + [ + -0.0, + 0.0491, + 0.0 + ], + [ + -0.0, + 0.0491, + 0.0 ] + ], + "hulls": [ + [ + [ + -0.1167, + 0.01819, + 0.04148 + ], + [ + -0.02518, + 0.01477, + 0.0226 + ], + [ + -0.11245, + 0.01782, + 0.04839 + ], + [ + -0.11668, + 0.01753, + 0.04061 + ], + [ + -0.11302, + 0.01872, + 0.0486 + ], + [ + -0.02577, + 0.01467, + 0.02169 + ] + ], + [ + [ + -0.03391, + 0.04902, + 0.02667 + ], + [ + 0.02743, + 0.01628, + -0.00983 + ], + [ + -0.00994, + 0.03813, + -0.0066 + ], + [ + 0.01438, + 0.02973, + 0.00607 + ], + [ + -0.00761, + 0.03188, + 0.01466 + ], + [ + 0.01318, + 0.02813, + -0.01841 + ], + [ + 0.03012, + 0.01732, + 0.01001 + ], + [ + -0.00982, + 0.03887, + 0.00271 + ], + [ + 0.0137, + 0.03, + -0.00279 + ], + [ + -0.03511, + 0.04812, + 0.01805 + ] + ], + [ + [ + 0.04779, + 0.02322, + -0.02176 + ], + [ + -0.04971, + 0.00448, + 0.02323 + ], + [ + 0.00662, + 0.02205, + 0.01108 + ], + [ + -0.03678, + 0.02978, + -0.00441 + ], + [ + -0.02466, + 0.02702, + 0.02605 + ], + [ + 0.04436, + 0.00749, + 0.00644 + ], + [ + -0.0462, + 0.00208, + -0.00291 + ], + [ + 0.02212, + 0.00747, + -0.00466 + ], + [ + 0.00344, + 0.01565, + -0.0085 + ], + [ + 0.04078, + 0.00627, + -0.01328 + ] + ], + [] + ], + "neighbours": [ + { + "DEF-skirt.L.005": 0.030876031930140435, + "DEF-skirt.L.004.seg2": 1.9079217533708204, + "DEF-skirt.R.005.seg3": 0.03221048762352208, + "DEF-skirt.R.004.seg1": 1.0732347883554358, + "DEF-skirt.R.003.seg3": 4.464269337643888, + "DEF-skirt.L.003.seg3": 1.6662561376102858, + "DEF-skirt.L.004.seg1": 1.5419089252454603, + "DEF-skirt.R.seg2": 0.16426175880538585, + "DEF-skirt.L.004": 0.13967539384350525, + "DEF-skirt.R.003.seg2": 0.016111401937035363, + "DEF-skirt.R.seg3": 0.21310817027062778, + "DEF-skirt.R.005.seg1": 0.018476782348616994, + "DEF-skirt.R.005": 0.0037763106041570904 + }, + { + "DEF-skirt.R.004.seg2": 10.738716948372819, + "DEF-skirt.L.005": 0.020803836908132034, + "DEF-skirt.L.004.seg2": 1.6832252773454213, + "DEF-skirt.R.005.seg3": 0.021702974422598054, + "DEF-skirt.R.004": 1.0732347883554358, + "DEF-skirt.R.seg3": 0.19151314001136188, + "DEF-skirt.R.005": 6.500489989848925, + "DEF-skirt.R.001.seg1": 0.10724688171236707, + "DEF-skirt.R.003.seg3": 3.6078875543646496, + "DEF-skirt.L.003.seg3": 0.2699483450459348, + "DEF-skirt.L.004.seg3": 0.5166879515818066, + "DEF-skirt.R.005.seg1": 0.09565318256508437, + "DEF-skirt.L.004.seg1": 0.07202823700664285 + }, + { + "DEF-skirt.R.004.seg1": 10.738716948372819, + "DEF-skirt.R.005": 9.754011944602853, + "DEF-skirt.R.001.seg2": 0.04626688987928218, + "DEF-skirt.R.002": 0.018325292971089646, + "DEF-skirt.R.001.seg1": 0.14391126107917818, + "DEF-skirt.R.seg3": 0.04455171348530562, + "DEF-skirt.R.003.seg3": 3.272260373183556, + "DEF-skirt.L.004.seg3": 0.25998774990698886, + "DEF-skirt.L.004.seg2": 0.15842716545330904, + "DEF-skirt.R.005.seg1": 0.05547518726174139, + "DEF-skirt.R.004.seg3": 0.5314995138158436 + }, + { + "DEF-skirt.R.005": 0.2621371448345676, + "DEF-skirt.R.004.seg2": 0.5314995138158436 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.010" + "DEF-skirt.010", + "DEF-skirt.010.seg1", + "DEF-skirt.010.seg2", + "DEF-skirt.010.seg3" ], "tips": [ [ - 0.03727, - 0.10017, - 0.00882 + -0.0, + 0.02681, + 0.0 + ], + [ + -0.0, + 0.02681, + -0.0 + ], + [ + 0.0, + 0.02681, + 0.0 + ], + [ + -0.04852, + 0.01964, + 0.12108 ] + ], + "hulls": [ + [ + [ + 0.08387, + 0.01976, + -0.01391 + ], + [ + -0.06183, + 0.02188, + -0.00739 + ], + [ + -0.03781, + -0.01788, + 0.00557 + ], + [ + 0.05871, + 0.01031, + -0.02099 + ], + [ + -0.05956, + 0.01908, + 0.01173 + ], + [ + -0.05956, + 0.01926, + 0.01065 + ], + [ + 0.08341, + 0.01978, + -0.01491 + ], + [ + -0.03783, + -0.01771, + 0.0045 + ], + [ + 0.05915, + 0.0103, + -0.01999 + ], + [ + -0.06175, + 0.02156, + -0.00635 + ] + ], + [ + [ + 0.02077, + 0.02144, + -0.07553 + ], + [ + 0.02768, + 0.02288, + -0.07198 + ], + [ + 0.02139, + 0.02087, + -0.07483 + ], + [ + 0.02711, + 0.02196, + -0.07183 + ] + ], + [], + [ + [ + -0.02616, + 0.01002, + 0.06035 + ], + [ + -0.01828, + 0.01042, + 0.06088 + ], + [ + -0.02535, + 0.00932, + 0.06056 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.010.seg1": 0.5487628936145512, + "DEF-skirt.009.seg2": 2.1035028646904017, + "DEF-skirt.009.seg3": 1.345437829411113, + "DEF-skirt.009.seg1": 1.1850910995461685, + "DEF-skirt.007.seg3": 0.23355445061974422, + "DEF-skirt.R.001": 0.31555339612032274, + "DEF-skirt.009": 0.23097140030928476, + "DEF-skirt.R.002": 0.029037682237823992, + "DEF-skirt.R.001.seg1": 0.01830603357103766, + "DEF-skirt.005.seg2": 0.11437498180926176, + "DEF-skirt.005.seg1": 0.18882265189366965, + "DEF-skirt.005": 0.010310972552469655 + }, + { + "DEF-skirt.010.seg2": 0.9157422602751464, + "DEF-skirt.009.seg3": 1.5453642087036952, + "DEF-skirt.010": 0.5487628936145512, + "DEF-skirt.009.seg2": 0.04938591538750098, + "DEF-skirt.R.001.seg1": 0.033309799028286846, + "DEF-skirt.R.002": 0.051648361776784, + "DEF-skirt.007.seg3": 0.015989096555482363, + "DEF-skirt.R.001": 0.027378974892033114 + }, + { + "DEF-skirt.R.001.seg1": 0.12614822889344357, + "DEF-skirt.010.seg3": 0.11231192164214132, + "DEF-skirt.R.002": 0.18258340776049164, + "DEF-skirt.009.seg3": 0.7490264894622274, + "DEF-skirt.010.seg1": 0.9157422602751464 + }, + { + "DEF-skirt.R.001.seg1": 0.2332891127301584, + "DEF-skirt.R.002": 0.27244704748154724, + "DEF-skirt.010.seg2": 0.11231192164214132, + "DEF-skirt.009.seg3": 0.7566836571082174 + } ] }, { "class": "skirt", "root_parent": "DEF-spine", "bones": [ - "DEF-skirt.009" + "DEF-skirt.009", + "DEF-skirt.009.seg1", + "DEF-skirt.009.seg2", + "DEF-skirt.009.seg3" ], "tips": [ [ - 0.04312, - 0.09673, - -0.03854 + 0.0, + 0.02818, + -0.0 + ], + [ + 0.0, + 0.02818, + 0.0 + ], + [ + -0.0, + 0.02818, + 0.0 + ], + [ + -0.03619, + 0.04068, + -0.00405 ] + ], + "hulls": [ + [ + [ + -0.0934, + 0.01308, + -0.05741 + ], + [ + 0.09157, + 0.01046, + 6e-05 + ], + [ + -0.04856, + 0.02623, + 0.00682 + ], + [ + -0.07845, + 0.01877, + -0.02838 + ], + [ + -0.06331, + 0.02572, + -0.00594 + ], + [ + 0.08445, + 0.01441, + 0.00469 + ], + [ + 0.08911, + 0.01898, + -0.0017 + ], + [ + 0.09016, + 0.01656, + 0.00119 + ], + [ + 0.09129, + 0.01152, + 1e-05 + ], + [ + -0.07787, + 0.01952, + -0.02892 + ] + ], + [ + [ + 0.09362, + 0.00863, + -0.08179 + ], + [ + -0.05087, + 0.02478, + 0.04259 + ], + [ + 0.02526, + 0.01004, + -0.02974 + ], + [ + 0.02918, + 0.02075, + -0.07815 + ], + [ + 0.05947, + 0.00301, + -0.06983 + ], + [ + 0.0185, + 0.0247, + -0.00059 + ], + [ + 0.06892, + 0.0245, + -0.06689 + ], + [ + 0.02461, + 0.02325, + -0.04076 + ], + [ + 0.03153, + 0.00983, + -0.06629 + ], + [ + 0.05892, + 0.01463, + -0.081 + ] + ], + [ + [ + -0.07292, + 0.02213, + 0.09532 + ], + [ + 0.06001, + 0.00472, + -0.09372 + ], + [ + -0.01288, + 0.01989, + 0.00375 + ], + [ + 0.0358, + 0.01343, + -0.04136 + ], + [ + -0.04798, + 0.00526, + 0.04757 + ], + [ + 0.01666, + 0.01022, + -0.01058 + ], + [ + 0.02945, + 0.01043, + -0.0912 + ], + [ + -0.03094, + 0.01476, + 0.02644 + ], + [ + 0.02255, + 0.02536, + -0.06376 + ], + [ + 0.04226, + 0.00062, + -0.06501 + ] + ], + [ + [ + -0.0721, + 0.06955, + -0.00063 + ], + [ + 0.021, + 0.01513, + -0.02777 + ], + [ + -0.0281, + 0.01052, + 0.04322 + ], + [ + -0.01592, + 0.00469, + -0.00519 + ], + [ + -0.05269, + 0.04819, + 0.01577 + ], + [ + -0.04035, + 0.01305, + 0.00828 + ], + [ + -0.00951, + 0.02526, + -0.01258 + ], + [ + -0.0199, + 0.01686, + 0.01286 + ], + [ + -0.04182, + 0.01246, + 0.03474 + ], + [ + -0.01674, + 0.02392, + -0.01633 + ] + ] + ], + "neighbours": [ + { + "DEF-skirt.010": 0.23097140030928476, + "DEF-skirt.009.seg1": 2.8972802492875527, + "DEF-skirt.003.seg3": 1.1286794898007495, + "DEF-skirt.seg3": 0.7582600522037454, + "DEF-skirt.005.seg2": 0.3083252302655602, + "DEF-skirt.005.seg1": 1.1164002439418375, + "DEF-skirt.005": 0.7109617764468392, + "DEF-skirt.007.seg3": 9.43662584664051, + "DEF-skirt.seg2": 0.16869629844680606, + "DEF-skirt.seg1": 0.09372445010591768, + "DEF-skirt.R.seg3": 0.08669143553370695 + }, + { + "DEF-skirt.010": 1.1850910995461685, + "DEF-skirt.009.seg2": 2.723864090688208, + "DEF-skirt.009": 2.8972802492875527, + "DEF-skirt.R.001": 0.05524117514372051, + "DEF-skirt.007.seg3": 2.906074152306811, + "DEF-skirt.003.seg3": 0.8940016644600399, + "DEF-skirt.seg3": 0.9144382488613035, + "DEF-skirt.005.seg2": 1.2483108134831402, + "DEF-skirt.005.seg1": 1.364221007427845, + "DEF-skirt.005": 0.3450042763204117, + "DEF-skirt.R.seg3": 0.03686175164852512, + "DEF-skirt.seg2": 0.0714384640111776 + }, + { + "DEF-skirt.010.seg1": 0.04938591538750098, + "DEF-skirt.010": 2.1035028646904017, + "DEF-skirt.009.seg3": 1.8092874106016312, + "DEF-skirt.009.seg1": 2.723864090688208, + "DEF-skirt.007.seg3": 4.5295165581740635, + "DEF-skirt.R.001": 0.4018968056498796, + "DEF-skirt.005.seg2": 0.8744732184988231, + "DEF-skirt.005.seg1": 1.0288586076015256, + "DEF-skirt.003.seg3": 0.18218562382336984, + "DEF-skirt.R.seg3": 0.6798349904287918, + "DEF-skirt.seg3": 0.16737698817810986, + "DEF-skirt.seg2": 0.01027086487236381, + "DEF-skirt.005": 0.05151539510096881 + }, + { + "DEF-skirt.R.001.seg1": 0.39026871228668636, + "DEF-skirt.010.seg3": 0.7566836571082174, + "DEF-skirt.R.002": 0.5169325843054446, + "DEF-skirt.010.seg2": 0.7490264894622274, + "DEF-skirt.010.seg1": 1.5453642087036952, + "DEF-skirt.010": 1.345437829411113, + "DEF-skirt.009.seg2": 1.8092874106016312, + "DEF-skirt.007.seg3": 1.5188658246344597, + "DEF-skirt.R.001": 0.24376088738124668, + "DEF-skirt.R.seg3": 4.171412457713149, + "DEF-skirt.005.seg1": 0.16007123804476198, + "DEF-skirt.005.seg2": 0.08906398621705636 + } ] } ], @@ -773,25 +7869,46 @@ } ], "colliders": [ + { + "bone": "DEF-spine", + "child": "DEF-spine.001", + "from": 0.0, + "radius_head": 0.1842, + "radius_tail": 0.1842, + "radius": 0.1842, + "lid": true + }, { "bone": "DEF-thigh.L", "child": "DEF-shin.L", - "radius": 0.1543 + "from": 0.1, + "radius_head": 0.1104, + "radius_tail": 0.063, + "radius": 0.063 }, { "bone": "DEF-thigh.R", "child": "DEF-shin.R", - "radius": 0.1519 + "from": 0.1, + "radius_head": 0.1107, + "radius_tail": 0.062, + "radius": 0.062 }, { "bone": "DEF-shin.L", "child": "DEF-foot.L", - "radius": 0.0739 + "from": 0.1, + "radius_head": 0.0953, + "radius_tail": 0.082, + "radius": 0.082 }, { "bone": "DEF-shin.R", "child": "DEF-foot.R", - "radius": 0.0739 + "from": 0.1, + "radius_head": 0.0955, + "radius_tail": 0.0815, + "radius": 0.0815 } ], "weights_authored": true, diff --git a/tools/cloth_bones.py b/tools/cloth_bones.py new file mode 100644 index 0000000..e306364 --- /dev/null +++ b/tools/cloth_bones.py @@ -0,0 +1,387 @@ +#!/usr/bin/env python3 +""" +Grow skirt and hair BONE CHAINS on a model that shipped without any. + +A character whose source arrived unrigged goes through tools/autorig.py, which +fits a body skeleton and weights everything to it. The body then animates +correctly and the costume does not move at all: hair is welded to the skull and a +skirt is welded to the hips, because there is nothing there to move them. Miku +ships exactly like this — 0 cloth chains against Taila's 35 — so her twin tails +hang off her head like a helmet. + +Nothing downstream can fix that. characters/spring_bones.gd simulates cloth +BONES, and if the garment has none there is nothing to simulate. This builds +them, which is the job a technical artist does by hand on a model like this. + +The chains it grows are the same shape the Hoyoverse-class rigs use, because that +shape is dictated by what the geometry is: + + HAIR one chain per strand, found as connected islands of hair geometry, + each running from the scalp down the strand's own curve. + SKIRT a radial grid — the garment is split into panels around the body's up + axis and each panel gets a chain from the waistband to the hem, which + is what lets a skirt open around a leg instead of swinging as a bell. + +Vertices are then re-weighted onto the new chain with a falloff that keeps the +anchored end (scalp, waistband) on the body, so nothing detaches. + +Usage: + blender --background --python tools/cloth_bones.py -- \ + [--hair-segments 3] [--skirt-segments 4] + [--skirt-panels 12] [--classes hair,skirt] + +Run this BEFORE tools/retarget.py. retarget.py's describe_rig() then finds the +chains by name exactly as it would an artist's, and writes them to the sidecar. +""" +import bpy +import bmesh +import json +import math +import os +import sys +from collections import defaultdict, deque +from mathutils import Matrix, Vector + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import gltf_fix +import rig_map +from rig_map import RigRoles + +argv = sys.argv +argv = argv[argv.index("--") + 1:] if "--" in argv else [] +if len(argv) < 2: + print(__doc__) + sys.exit(1) + +SOURCE, OUTPUT = argv[0], argv[1] + + +def _opt(flag, default): + return type(default)(argv[argv.index(flag) + 1]) if flag in argv else default + + +HAIR_SEGMENTS = _opt("--hair-segments", 3) +SKIRT_SEGMENTS = _opt("--skirt-segments", 4) +SKIRT_PANELS = _opt("--skirt-panels", 12) +CLASSES = _opt("--classes", "hair,skirt").split(",") + +# A strand shorter than this is a fringe or an ornament, not something that +# should swing. Simulating them costs the same as simulating a ponytail and only +# ever produces jitter around the face. +MIN_STRAND_LENGTH = 0.06 +MIN_STRAND_VERTS = 12 +# How much of the anchored end stays welded to the body. A strand's first +# fraction blends from "entirely the body bone" to "entirely the chain", so the +# scalp and the waistband never separate from the character. +ROOT_BLEND = 0.22 + + +def clear_scene(): + bpy.ops.wm.read_factory_settings(use_empty=True) + + +def find_rig(): + arms = [o for o in bpy.data.objects if o.type == "ARMATURE"] + if not arms: + print("ERROR: no armature — run the auto-rig first") + sys.exit(1) + arm = max(arms, key=lambda a: len(a.data.bones)) + meshes = [o for o in bpy.data.objects if o.type == "MESH" + and any(m.type == "ARMATURE" and m.object == arm for m in o.modifiers)] + if not meshes: + meshes = [o for o in bpy.data.objects if o.type == "MESH"] + return arm, meshes + + +def cosmetic_slots(mesh, wanted): + """Material slot indices whose name says what that geometry IS. + + The artist already answered this. A slot called "hair" is hair; guessing from + position or from how far something hangs would be a guess, and on a joined + mesh — which is what the auto-rig leaves behind — the material slot is the + ONLY separation left. + """ + out = {} + for i, slot in enumerate(mesh.material_slots): + name = (slot.name or "").lower() + for cls in wanted: + if cls in name: + out[i] = cls + return out + + +def islands(mesh, vert_ids): + """Connected components of `vert_ids`, over the mesh's own edges. + + A strand of hair is a connected piece of surface. Clustering by position + instead would merge two ponytails that pass near each other and split a + single one that bends. + """ + adj = defaultdict(list) + keep = set(vert_ids) + for e in mesh.data.edges: + a, b = e.vertices + if a in keep and b in keep: + adj[a].append(b) + adj[b].append(a) + seen, out = set(), [] + for v in vert_ids: + if v in seen: + continue + comp, q = [], deque([v]) + seen.add(v) + while q: + n = q.popleft() + comp.append(n) + for m in adj[n]: + if m not in seen: + seen.add(m) + q.append(m) + out.append(comp) + return out + + +def radial_panels(mesh, vert_ids, centre, up, count): + """Split a garment into `count` wedges around the body's up axis. + + This is the skirt grid. A panel is a wedge rather than a connected island + because a skirt IS one connected surface — islands would return the whole + thing as a single piece, which is the bell-shaped failure. + """ + ref = Vector((1.0, 0.0, 0.0)) + ref = (ref - up * ref.dot(up)).normalized() + side = up.cross(ref).normalized() + out = defaultdict(list) + for v in vert_ids: + d = mesh.data.vertices[v].co - centre + d = d - up * d.dot(up) + if d.length < 1e-6: + continue + ang = math.atan2(d.dot(side), d.dot(ref)) + out[int((ang + math.pi) / (2 * math.pi) * count) % count].append(v) + return [v for v in out.values() if len(v) >= 6] + + +def fit_polyline(mesh, vert_ids, root_point, segments): + """A polyline down the middle of a clump of geometry. + + Vertices are binned by distance from the anchored end and each bin's centroid + becomes a joint, so the chain follows the piece's own CURVE. A straight line + from root to tip would cut the corner on a ponytail that bends, and every + vertex on the outside of that bend would then be weighted to a bone travelling + the wrong way. + """ + co = [mesh.data.vertices[v].co for v in vert_ids] + d = [(c - root_point).length for c in co] + lo, hi = min(d), max(d) + if hi - lo < 1e-5: + return [] + pts = [root_point.copy()] + for s in range(1, segments + 1): + a = lo + (hi - lo) * (s - 1) / segments + b = lo + (hi - lo) * s / segments + bucket = [c for c, dist in zip(co, d) if a <= dist <= b + 1e-9] + if not bucket: + # An empty band means the geometry does not reach here; carry the + # direction on rather than collapsing the bone to zero length, which + # would drop it out of the chain at runtime. + if len(pts) >= 2: + pts.append(pts[-1] + (pts[-1] - pts[-2])) + continue + pts.append(sum(bucket, Vector()) / len(bucket)) + return pts if len(pts) >= 2 else [] + + +def nearest_body_group(mesh, vert_ids, arm): + """Which body bone this clump is currently welded to. + + That bone is the right parent for the new chain, and its weight is what the + root blend fades out of — so the transition is to exactly what was holding + this geometry before. + """ + tally = defaultdict(float) + gname = {g.index: g.name for g in mesh.vertex_groups} + bones = set(b.name for b in arm.data.bones) + for v in vert_ids: + for g in mesh.data.vertices[v].groups: + n = gname.get(g.group, "") + if n in bones: + tally[n] += g.weight + return max(tally, key=tally.get) if tally else None + + +def make_chain(arm, name, points, parent_name): + """Create one bone chain along `points`. Returns the bone names.""" + bpy.context.view_layer.objects.active = arm + bpy.ops.object.mode_set(mode="EDIT") + made = [] + prev = arm.data.edit_bones.get(parent_name) + for i in range(len(points) - 1): + bn = name if i == 0 else "%s.seg%d" % (name, i) + eb = arm.data.edit_bones.new(bn) + eb.head = points[i] + eb.tail = points[i + 1] + if eb.length < 1e-5: + arm.data.edit_bones.remove(eb) + continue + eb.parent = prev + eb.use_connect = False + prev = eb + made.append(bn) + bpy.ops.object.mode_set(mode="OBJECT") + return made + + +def weight_chain(mesh, vert_ids, points, bone_names, anchor_bone): + """Move this clump's weights off the body and onto its new chain. + + Each vertex is projected onto the polyline and given the two bones either side + of where it lands, blended by how far between them it is — the same linear + split a hand-painted chain gets. Near the anchored end the ORIGINAL body + weight is kept and faded out over ROOT_BLEND, so the scalp stays on the skull + and the waistband stays on the hips. + """ + groups = [] + for bn in bone_names: + groups.append(mesh.vertex_groups.get(bn) or mesh.vertex_groups.new(name=bn)) + anchor = mesh.vertex_groups.get(anchor_bone) if anchor_bone else None + + # Cumulative length along the polyline, so position is measured in metres + # rather than in segment index — segments are not equal lengths. + seg_len = [(points[i + 1] - points[i]).length for i in range(len(points) - 1)] + total = sum(seg_len) or 1.0 + + for v in vert_ids: + co = mesh.data.vertices[v].co + best, best_d, best_run = 0, 1e18, 0.0 + run = 0.0 + for i in range(len(points) - 1): + a, b = points[i], points[i + 1] + ab = b - a + L2 = ab.length_squared + t = 0.0 if L2 < 1e-12 else max(0.0, min(1.0, (co - a).dot(ab) / L2)) + p = a + ab * t + d = (co - p).length + if d < best_d: + best_d, best, best_run = d, i, run + seg_len[i] * t + run += seg_len[i] + along = best_run / total + + # Clear whatever held this vertex before, then re-add the anchor share. + for g in mesh.data.vertices[v].groups: + grp = mesh.vertex_groups[g.group] + if grp.name not in bone_names: + grp.remove([v]) + hold = 0.0 + if anchor and along < ROOT_BLEND: + hold = 1.0 - along / ROOT_BLEND + anchor.add([v], hold, "REPLACE") + + # Split what is left between the two bones either side of the landing. + f = best_run / total * len(bone_names) + i0 = max(0, min(len(bone_names) - 1, int(f))) + i1 = min(len(bone_names) - 1, i0 + 1) + frac = f - i0 + groups[i0].add([v], (1.0 - hold) * (1.0 - frac), "REPLACE") + if i1 != i0: + groups[i1].add([v], (1.0 - hold) * frac, "REPLACE") + + +def grow(arm, meshes, roles): + head = roles.head + trunk = roles.spine[0] if roles.spine else roles.hips + made_chains = 0 + made_bones = 0 + + for mesh in meshes: + slots = cosmetic_slots(mesh, CLASSES) + if not slots: + continue + # Vertices per class, taken from the polygons that use each slot. + per_class = defaultdict(set) + for poly in mesh.data.polygons: + cls = slots.get(poly.material_index) + if cls: + per_class[cls].update(poly.vertices) + + for cls, verts in per_class.items(): + verts = list(verts) + if len(verts) < MIN_STRAND_VERTS: + continue + world = mesh.matrix_world + if cls == "hair": + anchor_default = head + clumps = islands(mesh, verts) + else: + anchor_default = trunk + centre = sum((mesh.data.vertices[v].co for v in verts), + Vector()) / len(verts) + clumps = radial_panels(mesh, verts, centre, + Vector((0.0, 0.0, 1.0)), SKIRT_PANELS) + + idx = 0 + for clump in clumps: + if len(clump) < MIN_STRAND_VERTS: + continue + anchor = nearest_body_group(mesh, clump, arm) or anchor_default + if anchor is None or anchor not in arm.data.bones: + continue + # The anchored end is the end nearest the bone currently holding + # it — the scalp for hair, the waistband for a skirt. + bone_head = (arm.matrix_world + @ arm.data.bones[anchor].matrix_local).translation + bone_head = world.inverted() @ bone_head + root = min((mesh.data.vertices[v].co for v in clump), + key=lambda c: (c - bone_head).length) + segs = HAIR_SEGMENTS if cls == "hair" else SKIRT_SEGMENTS + pts = fit_polyline(mesh, clump, root, segs) + if not pts: + continue + span = sum((pts[i + 1] - pts[i]).length for i in range(len(pts) - 1)) + if span < MIN_STRAND_LENGTH: + continue + name = "DEF-%s.%03d" % (cls, idx) + idx += 1 + names = make_chain(arm, name, [world @ p for p in pts], anchor) + if not names: + continue + weight_chain(mesh, clump, pts, names, anchor) + made_chains += 1 + made_bones += len(names) + print(" %-6s %-22s %d clumps -> %d chains" + % (cls, mesh.name, len(clumps), idx)) + return made_chains, made_bones + + +def main(): + clear_scene() + bpy.ops.import_scene.gltf(filepath=gltf_fix.prepare(SOURCE, + os.path.dirname(OUTPUT))) + arm, meshes = find_rig() + roles = RigRoles(arm) + missing = roles.missing_core() + if missing: + print("ERROR: could not identify %s on this rig" % missing) + sys.exit(1) + + before = len(arm.data.bones) + chains, bones = grow(arm, meshes, roles) + print("Grew %d cloth chains (%d bones); armature %d -> %d bones" + % (chains, bones, before, len(arm.data.bones))) + if chains == 0: + print("NOTE: no cosmetic material slots matched %s — nothing to grow. " + "Check the model's material names." % CLASSES) + + os.makedirs(os.path.dirname(os.path.abspath(OUTPUT)), exist_ok=True) + bpy.ops.export_scene.gltf( + filepath=OUTPUT, + export_format="GLB", + export_yup=True, + export_apply=False, + export_skins=True, + export_animations=False, + ) + print("Wrote", OUTPUT) + + +main() diff --git a/tools/pipeline.py b/tools/pipeline.py index 57e4ef4..cacabb6 100644 --- a/tools/pipeline.py +++ b/tools/pipeline.py @@ -14,6 +14,9 @@ Examples: # From an ALREADY-RIGGED model (Mixamo/AccuRig/Tripo output) — skips autorig: python tools/pipeline.py --input rigged/knight.fbx --name knight --rigged + # Rigged, but with no skirt/hair bones — grow them so the costume can move: + python tools/pipeline.py --input rigged/knight.fbx --name knight --rigged --grow-cloth + The result is assets/characters/skins/.glb with the full canonical animation set, plus a registry entry in assets/characters/skins/skins.json that SkinManager picks up automatically — no code changes needed. @@ -133,6 +136,10 @@ def main() -> None: p.add_argument("--height", type=float, default=1.75, help="target character height in meters") p.add_argument("--keep-root-motion", action="store_true", help="don't strip hips motion from clips") p.add_argument("--anim-dir", default=ANIM_DIR, help="animation library directory") + p.add_argument("--grow-cloth", action="store_true", + help="grow skirt/hair bone chains for a model that has none " + "(see tools/cloth_bones.py) — needed for anything that " + "went through the auto-rig, whose costume is welded solid") args = p.parse_args() name = args.name @@ -178,6 +185,22 @@ def main() -> None: sys.exit(1) final_path = os.path.join(SKINS_DIR, f"{name}.glb") + + # Grow cloth chains BEFORE the retarget, so describe_rig() finds them by name + # exactly as it would an artist's and writes them to the sidecar. + # + # A model with no cosmetic bones has a costume that cannot move: the spring + # solver simulates cloth BONES, so a skirt with none is welded to the hips + # whatever the runtime does. That is every auto-rigged model, and it is why + # Miku shipped with 0 cloth chains against Taila's 35. + if args.grow_cloth: + grown = os.path.join(STAGING, f"{name}_cloth.glb") + run([blender, "--background", "--python", os.path.join(TOOLS, "cloth_bones.py"), + "--", input_path, grown], + "Grow skirt/hair bone chains (Blender)") + input_path = grown + rigged = True + if rigged: print("Model is rigged — keeping its skeleton, weights and cloth chains") cmd = [blender, "--background", "--python", os.path.join(TOOLS, "retarget.py"),