Files
Nicholas ButzkeandClaude Opus 5 53f175ed6d feat(characters): say what every surface IS, and light it accordingly
A character has arrived as separate body, garment and hair meshes since the
pipeline stopped joining them — but nothing recorded which was which, so every
system downstream re-guessed from the material. That guess ("untextured and
nearly black means ink") had already rendered the mannequin's flat yellow body
as a black silhouette once.

The question is answerable once, at build time, where the mesh, the weights and
the skeleton are all in hand. tools/surface_map.py answers it three ways, in
order of how much it trusts them: the material name, which on VRoid exports is
formal and on hand-authored models is still explicit; the weights, which are
decisive when the name says nothing — a surface pulled by the skirt chain is a
skirt whatever it is called; and the material flags, which catch the model's own
line-work. The answer goes in the rig sidecar next to the roles and the chains,
and SkinSurfaces reads it.

All eighteen of Taila's surfaces, and every surface of the other five skins,
now resolve from the table with nothing falling through to the heuristic
(debug/surface_class_check.gd). The heuristic stays as the fallback, which is
the one job it was ever right for.

What that buys immediately is per-class art direction, which was impossible
while every surface had to take numbers calibrated on skin. Hair takes a much
thinner line — at the body's 5 mm each strand's hull swallows its neighbour and
the head reads as a solid dark cap. Cloth takes a heavier line and a crisper
terminator, because a garment's silhouette is most of what separates a character
from the background at range. Accessories take the heaviest. `body` is unchanged
on purpose, so the look this was all calibrated against does not move.

That required moving the outline from the instance to the surface: Miku's body,
face and hair are three surfaces of ONE mesh, so an instance-wide overlay could
only ever give all three the same weight.

Two things found on the way, fixed here because they are one line each: the
surface classifier skips meshes with no vertex groups, which drops the stray
42-vertex Icosphere that rides inside every shipped skin — two older tools
already skipped it by spelling its name — and load_model now clears _rig_info,
which a model with no skeleton used to inherit from the last character loaded.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-07-27 14:35:06 -04:00

3274 lines
41 KiB
JSON

{
"roles": {
"hips": "J_Bip_C_Hips",
"head": "J_Adj_L_FaceEye",
"neck": "J_Bip_C_Neck",
"spine": [
"J_Bip_C_Spine",
"J_Bip_C_Chest",
"J_Bip_C_UpperChest",
"J_Bip_C_Neck",
"J_Bip_C_Head",
"J_Adj_L_FaceEye"
],
"shin.R": "J_Bip_R_LowerLeg",
"shin.L": "J_Bip_L_LowerLeg",
"thigh.L": "J_Bip_L_UpperLeg",
"thigh.R": "J_Bip_R_UpperLeg",
"shoulder.R": "J_Bip_R_Shoulder",
"shoulder.L": "J_Bip_L_Shoulder",
"forearm.L": "J_Bip_L_LowerArm",
"forearm.R": "J_Bip_R_LowerArm",
"upper_arm.R": "J_Bip_R_UpperArm",
"upper_arm.L": "J_Bip_L_UpperArm",
"toe.R": "J_Bip_R_ToeBase",
"toe.L": "J_Bip_L_ToeBase",
"foot.L": "J_Bip_L_Foot",
"foot.R": "J_Bip_R_Foot",
"hand.R": "J_Bip_R_Hand",
"hand.L": "J_Bip_L_Hand"
},
"fingers": {
"thumb.L": [
"J_Bip_L_Thumb1",
"J_Bip_L_Thumb2",
"J_Bip_L_Thumb3"
],
"index.L": [
"J_Bip_L_Index1",
"J_Bip_L_Index2",
"J_Bip_L_Index3"
],
"middle.L": [
"J_Bip_L_Middle1",
"J_Bip_L_Middle2",
"J_Bip_L_Middle3"
],
"ring.L": [
"J_Bip_L_Ring1",
"J_Bip_L_Ring2",
"J_Bip_L_Ring3"
],
"pinky.L": [
"J_Bip_L_Little1",
"J_Bip_L_Little2",
"J_Bip_L_Little3"
],
"thumb.R": [
"J_Bip_R_Thumb1",
"J_Bip_R_Thumb2",
"J_Bip_R_Thumb3"
],
"index.R": [
"J_Bip_R_Index1",
"J_Bip_R_Index2",
"J_Bip_R_Index3"
],
"middle.R": [
"J_Bip_R_Middle1",
"J_Bip_R_Middle2",
"J_Bip_R_Middle3"
],
"ring.R": [
"J_Bip_R_Ring1",
"J_Bip_R_Ring2",
"J_Bip_R_Ring3"
],
"pinky.R": [
"J_Bip_R_Little1",
"J_Bip_R_Little2",
"J_Bip_R_Little3"
]
},
"chains": [
{
"class": "bust",
"root_parent": "J_Bip_C_UpperChest",
"bones": [
"J_Sec_L_Bust1",
"J_Sec_L_Bust2"
],
"tips": [
[
-0.02822,
0.05487,
0.00675
],
[
-0.02822,
0.05487,
0.00675
]
],
"hulls": [
[
[
-0.06907,
0.01709,
0.03093
],
[
0.01313,
0.06773,
-0.02415
],
[
-0.0464,
0.04364,
-0.02388
],
[
-0.01596,
0.05683,
0.03057
],
[
-0.04145,
0.02998,
0.04945
],
[
-0.05482,
0.0409,
0.01062
],
[
0.01149,
0.06713,
0.01269
],
[
-0.01336,
0.06822,
-0.00635
],
[
-0.00726,
0.05979,
-0.04593
],
[
-0.03102,
0.0483,
-0.04574
]
],
[]
],
"neighbours": [
{
"J_Sec_L_Bust2": 1.1574203600849464,
"J_Sec_R_Bust1": 0.11661945163003545
},
{
"J_Sec_L_Bust1": 1.1574203600849464
}
]
},
{
"class": "bust",
"root_parent": "J_Bip_C_UpperChest",
"bones": [
"J_Sec_R_Bust1",
"J_Sec_R_Bust2"
],
"tips": [
[
0.02822,
0.05487,
0.00675
],
[
0.02822,
0.05487,
0.00675
]
],
"hulls": [
[
[
0.06907,
0.01709,
0.03093
],
[
-0.01313,
0.06773,
-0.02415
],
[
0.0464,
0.04364,
-0.02388
],
[
0.01596,
0.05683,
0.03057
],
[
0.04145,
0.02998,
0.04945
],
[
0.05482,
0.0409,
0.01062
],
[
-0.01149,
0.06713,
0.01269
],
[
0.01336,
0.06822,
-0.00635
],
[
0.00726,
0.05979,
-0.04593
],
[
0.03102,
0.0483,
-0.04574
]
],
[]
],
"neighbours": [
{
"J_Sec_R_Bust2": 1.1574203600849464,
"J_Sec_L_Bust1": 0.11661945163003545
},
{
"J_Sec_R_Bust1": 1.1574203600849464
}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_01",
"J_Sec_Hair2_01",
"J_Sec_Hair3_01"
],
"tips": [
[
-0.00179,
0.03486,
0.00055
],
[
-0.01116,
0.03272,
0.00086
],
[
-0.01116,
0.03272,
0.00086
]
],
"hulls": [
[
[
-0.00846,
0.02453,
0.00427
],
[
-0.00252,
0.00336,
-0.00789
],
[
-0.00858,
0.00443,
0.00697
],
[
-0.00097,
0.01453,
0.00074
],
[
-0.00426,
0.02468,
-0.00724
],
[
-0.0001,
0.00419,
0.00175
],
[
-0.0085,
0.01455,
0.00554
],
[
-0.00327,
0.01394,
-0.00788
],
[
-0.00215,
0.02485,
5e-05
]
],
[
[
-0.01247,
0.03034,
-0.00101
],
[
-0.00214,
0.00042,
-0.00073
],
[
-0.00604,
0.0106,
-0.00492
],
[
-0.00989,
0.02021,
0.00049
],
[
-0.00806,
0.01005,
0.00167
],
[
-0.00397,
0.00036,
-0.00646
],
[
-0.007,
-0.00021,
0.00274
],
[
-0.00467,
0.01074,
-0.00086
],
[
-0.0089,
0.02064,
-0.00308
],
[
-0.00813,
0.02077,
-0.0009
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_01": 1.806053266471615
},
{
"J_Sec_Hair1_01": 1.806053266471615
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_02",
"J_Sec_Hair2_02",
"J_Sec_Hair3_02"
],
"tips": [
[
0.0112,
0.03153,
0.00487
],
[
-0.01067,
0.02305,
-0.02196
],
[
-0.01067,
0.02305,
-0.02196
]
],
"hulls": [
[
[
0.0016,
0.04157,
-0.01528
],
[
0.00699,
0.00051,
0.01678
],
[
-0.01119,
0.0059,
-0.01882
],
[
0.00854,
0.02338,
0.00234
],
[
0.01364,
0.01905,
0.02425
],
[
0.00383,
0.02047,
-0.01766
],
[
-0.01111,
0.0194,
-0.00462
],
[
-8e-05,
0.00405,
-0.0011
],
[
-0.00373,
0.03054,
-0.01763
],
[
0.00353,
0.0308,
-0.00627
]
],
[
[
-0.00745,
0.02625,
-0.04543
],
[
-0.02883,
0.00742,
0.0102
],
[
0.02313,
-0.00623,
-0.01403
],
[
-0.00785,
0.01457,
-0.01602
],
[
0.00493,
0.00057,
-0.02812
],
[
0.00058,
0.00063,
-0.00206
],
[
0.01191,
0.00336,
-0.0137
],
[
0.0002,
0.01312,
-0.03115
],
[
0.00719,
-0.00665,
-0.01942
],
[
0.01758,
0.00074,
-0.02281
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_02": 9.416776602017269
},
{
"J_Sec_Hair1_02": 9.416776602017269
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_03",
"J_Sec_Hair2_03",
"J_Sec_Hair3_03"
],
"tips": [
[
0.01112,
0.04107,
0.00338
],
[
0.00799,
0.02983,
-0.02835
],
[
0.00799,
0.02983,
-0.02835
]
],
"hulls": [
[
[
-0.0201,
0.0489,
0.00678
],
[
0.03387,
0.00448,
-0.00477
],
[
-0.02309,
0.00126,
0.00401
],
[
0.01553,
0.03579,
0.00278
],
[
-0.0101,
0.02591,
-0.00442
],
[
0.01098,
0.00463,
0.00707
],
[
0.02709,
0.01896,
0.00995
],
[
-0.00051,
0.04773,
0.00211
],
[
-0.00605,
0.00842,
-0.00208
],
[
-0.02312,
0.02504,
0.00687
]
],
[
[
0.01449,
0.05794,
-0.02204
],
[
-0.00187,
-0.02794,
-0.0191
],
[
-0.00591,
0.02187,
0.00675
],
[
0.00484,
0.01429,
-0.02831
],
[
0.00503,
-0.00808,
-0.00465
],
[
0.00022,
0.03427,
-0.01267
],
[
0.0103,
0.03444,
-0.03176
],
[
0.0049,
0.01219,
-0.00826
],
[
-0.00244,
-0.01093,
-0.02778
],
[
0.00672,
0.04546,
-0.02065
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_03": 28.652466934563993
},
{
"J_Sec_Hair1_03": 28.652466934563993
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_04",
"J_Sec_Hair2_04",
"J_Sec_Hair3_04"
],
"tips": [
[
0.01086,
0.03113,
-0.00479
],
[
0.01071,
0.02966,
-0.01083
],
[
0.01071,
0.02966,
-0.01083
]
],
"hulls": [
[
[
-0.00945,
0.03644,
0.00941
],
[
0.02187,
-0.0017,
-0.01224
],
[
0.01478,
0.02758,
-0.00153
],
[
-0.00945,
0.00935,
0.00976
],
[
0.01038,
0.00411,
0.0024
],
[
0.02431,
0.02073,
-0.01319
],
[
-0.01538,
0.02371,
0.00337
],
[
-0.0216,
0.01668,
0.01518
],
[
0.02096,
0.01062,
-0.00436
],
[
-0.00229,
0.02614,
0.00381
]
],
[
[
0.01085,
0.03503,
-0.01287
],
[
-0.00752,
0.00495,
0.0055
],
[
0.0142,
0.00072,
-0.00944
],
[
-0.00839,
0.02898,
0.00731
],
[
0.01006,
0.01734,
-0.00898
],
[
0.00142,
0.02481,
-0.0021
],
[
0.00507,
0.00977,
-0.00136
],
[
-0.00395,
0.01829,
0.00677
],
[
-0.01318,
0.01289,
0.00909
],
[
0.00095,
0.00791,
0.00626
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_04": 9.739047031025505
},
{
"J_Sec_Hair1_04": 9.739047031025505
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_05",
"J_Sec_Hair2_05",
"J_Sec_Hair3_05"
],
"tips": [
[
-0.00267,
0.03995,
2e-05
],
[
0.01236,
0.03728,
0.00232
],
[
0.01236,
0.03728,
0.00232
]
],
"hulls": [
[
[
0.01342,
0.03693,
0.01143
],
[
-0.01062,
-0.00285,
-0.00904
],
[
-0.01069,
0.03266,
-0.01642
],
[
0.02722,
0.00967,
0.02045
],
[
0.01016,
0.00729,
0.00108
],
[
-0.00572,
0.02245,
0.00357
],
[
0.01374,
0.01868,
0.01467
],
[
-0.00023,
0.01371,
-0.00985
],
[
-0.00337,
-0.00126,
0.00426
],
[
0.00218,
0.0344,
0.00068
]
],
[
[
0.01231,
0.03734,
0.00225
],
[
-0.0092,
0.00498,
-0.0157
],
[
0.02241,
0.00086,
0.0176
],
[
0.00663,
0.01264,
0.00269
],
[
-0.00152,
0.01836,
-0.00391
],
[
0.00801,
0.0264,
0.00212
],
[
0.00515,
0.00107,
0.00152
],
[
0.02508,
0.01179,
0.01744
],
[
-0.00541,
0.00665,
-0.00533
],
[
0.0129,
0.00733,
0.00845
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_05": 12.136693552290065
},
{
"J_Sec_Hair1_05": 12.136693552290065
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_06",
"J_Sec_Hair2_06",
"J_Sec_Hair3_06"
],
"tips": [
[
0.00979,
0.06992,
-0.00277
],
[
0.03558,
0.05906,
0.00267
],
[
0.03558,
0.05906,
0.00267
]
],
"hulls": [
[
[
-0.00796,
0.07334,
-0.01193
],
[
0.00803,
0.00715,
0.03115
],
[
-0.01274,
0.01999,
-0.01263
],
[
0.02153,
0.05703,
0.02492
],
[
0.00966,
0.04728,
-0.00447
],
[
0.00102,
0.00127,
0.00487
],
[
0.01548,
0.02331,
0.01261
],
[
0.00672,
0.03904,
0.02892
],
[
-0.01272,
0.04146,
-0.0089
],
[
-0.01088,
-0.00143,
-0.01251
]
],
[
[
0.05446,
0.06037,
0.01606
],
[
-0.01448,
0.01371,
-0.00892
],
[
0.01615,
0.01833,
0.03113
],
[
0.01785,
0.04612,
-0.00383
],
[
0.03933,
0.03937,
0.03083
],
[
0.00474,
0.00067,
0.01014
],
[
0.01234,
0.02208,
-0.00204
],
[
0.03558,
0.05902,
0.00277
],
[
0.02745,
0.02677,
0.01376
],
[
0.00781,
-0.00083,
0.03146
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_06": 17.151499337137746
},
{
"J_Sec_Hair1_06": 17.151499337137746
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_07",
"J_Sec_Hair2_07",
"J_Sec_Hair3_07"
],
"tips": [
[
-0.01413,
0.04253,
0.0056
],
[
0.01383,
0.03096,
-0.02833
],
[
0.01383,
0.03096,
-0.02833
]
],
"hulls": [
[
[
-0.00417,
0.04397,
-0.00148
],
[
-0.0007,
6e-05,
0.00679
],
[
-0.0121,
0.0206,
0.00982
],
[
0.00261,
0.0234,
-0.00292
],
[
-0.01812,
0.03812,
0.01188
],
[
0.0051,
0.00909,
-0.00314
],
[
-0.0076,
0.01139,
0.00272
],
[
-0.00912,
0.03704,
0.00536
],
[
-0.00468,
0.02742,
0.00401
],
[
-0.00924,
0.00382,
0.00885
]
],
[
[
0.00322,
0.03511,
-0.0422
],
[
-0.00339,
-0.00787,
-0.00791
],
[
0.00161,
0.00906,
-0.03076
],
[
0.00874,
0.00816,
0.00108
],
[
0.01385,
0.03095,
-0.02832
],
[
0.00455,
0.01593,
-0.01755
],
[
-0.00295,
-7e-05,
-0.02029
],
[
0.00259,
0.02129,
-0.03849
],
[
0.00314,
0.00665,
-0.01192
],
[
-0.00018,
0.00311,
-0.00208
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_07": 12.95251969089636
},
{
"J_Sec_Hair1_07": 12.95251969089636
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_08",
"J_Sec_Hair2_08",
"J_Sec_Hair3_08"
],
"tips": [
[
-0.01414,
0.06968,
-0.00406
],
[
-0.04212,
0.05622,
0.0006
],
[
-0.04212,
0.05622,
0.0006
]
],
"hulls": [
[
[
0.01293,
0.07861,
-0.02833
],
[
-0.01331,
0.00442,
0.01001
],
[
0.02195,
0.02537,
-0.02522
],
[
-0.02324,
0.05659,
0.00872
],
[
0.00267,
0.03296,
0.00146
],
[
0.01345,
-0.00146,
-0.01281
],
[
-0.00786,
0.06491,
-0.01448
],
[
0.01031,
0.04654,
-0.02964
],
[
-0.02007,
0.03646,
-0.0058
],
[
-0.00207,
0.01709,
-0.01415
]
],
[
[
-0.04208,
0.05627,
0.00061
],
[
0.0224,
0.01875,
-0.02406
],
[
-0.01816,
0.00616,
0.014
],
[
-0.00929,
0.04589,
-0.02215
],
[
-0.03867,
0.03033,
0.02021
],
[
-0.00358,
0.01706,
-0.00987
],
[
-0.0157,
0.03652,
0.00136
],
[
-0.01592,
0.02578,
0.02254
],
[
0.00962,
0.03631,
-0.02138
],
[
-0.0233,
0.05486,
-0.01258
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_08": 22.67897996497351
},
{
"J_Sec_Hair1_08": 22.67897996497351
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_09",
"J_Sec_Hair2_09",
"J_Sec_Hair3_09",
"J_Sec_Hair4_09"
],
"tips": [
[
0.00656,
0.0474,
0.00209
],
[
0.01706,
0.0446,
0.00299
],
[
0.02854,
0.03812,
0.00482
],
[
0.02854,
0.03812,
0.00482
]
],
"hulls": [
[
[
0.0041,
0.04654,
-0.04275
],
[
-0.00212,
0.00195,
0.02043
],
[
-0.01037,
0.00453,
-0.03435
],
[
0.01098,
0.04256,
0.01272
],
[
0.00989,
0.01657,
-0.00669
],
[
0.00547,
0.02398,
-0.03392
],
[
0.01109,
0.02125,
0.02163
],
[
-7e-05,
0.04024,
-0.02371
],
[
-0.00138,
0.03938,
-0.00175
],
[
-0.0025,
0.01464,
-0.04513
]
],
[
[
0.01155,
0.04899,
-0.02492
],
[
0.01373,
0.01337,
0.01953
],
[
0.00042,
0.00972,
-0.04317
],
[
0.00737,
0.03226,
-0.00042
],
[
0.00988,
0.00928,
-0.00588
],
[
0.01089,
0.02663,
-0.03046
],
[
0.01694,
0.03448,
0.01905
],
[
-0.00177,
0.00778,
-0.02453
],
[
0.00883,
0.03371,
-0.01582
],
[
-0.00258,
0.0207,
-0.0326
]
],
[
[
0.02849,
0.0382,
0.00456
],
[
-0.00149,
0.00458,
-0.03428
],
[
0.00607,
0.00195,
0.00791
],
[
0.01332,
0.02759,
-0.01492
],
[
0.017,
0.0198,
0.00588
],
[
0.0021,
0.00722,
-0.01197
],
[
-0.00011,
0.01283,
-0.02387
],
[
0.02521,
0.02306,
0.0148
],
[
0.00731,
0.01733,
-0.01594
],
[
0.01358,
0.00607,
0.01594
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_09": 6.085030456593955
},
{
"J_Sec_Hair1_09": 6.085030456593955,
"J_Sec_Hair3_09": 6.217334650162728
},
{
"J_Sec_Hair2_09": 6.217334650162728
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_10",
"J_Sec_Hair2_10",
"J_Sec_Hair3_10",
"J_Sec_Hair4_10"
],
"tips": [
[
-0.00523,
0.04681,
0.00168
],
[
-0.01541,
0.04425,
0.00372
],
[
-0.02703,
0.03779,
0.00697
],
[
-0.02703,
0.03779,
0.00697
]
],
"hulls": [
[
[
0.00254,
0.03996,
-0.03885
],
[
-0.0085,
0.00607,
0.02523
],
[
0.01355,
-0.00332,
-0.03069
],
[
0.00262,
0.04386,
0.00354
],
[
0.00857,
0.00125,
0.00306
],
[
-0.00882,
0.02119,
-0.00174
],
[
-0.00108,
0.01702,
-0.03077
],
[
-0.00035,
0.02781,
0.02349
],
[
0.00106,
0.03774,
-0.01836
],
[
-0.00997,
0.04078,
0.02213
]
],
[
[
-0.02137,
0.03805,
0.02335
],
[
0.00232,
0.01406,
-0.03706
],
[
-0.00047,
0.00152,
0.02164
],
[
-0.00768,
0.03901,
-0.01181
],
[
-0.00924,
0.01479,
-0.00068
],
[
-0.00484,
0.03418,
-0.03234
],
[
-0.00787,
0.02115,
0.02217
],
[
0.00087,
0.01924,
-0.01671
],
[
-0.00652,
0.03796,
0.0041
],
[
0.00204,
0.01813,
0.00269
]
],
[
[
-0.03056,
0.04392,
0.00527
],
[
0.0016,
0.0091,
-0.02955
],
[
-0.00748,
0.00801,
0.01125
],
[
-0.00885,
0.02284,
-0.01325
],
[
-0.01882,
0.02575,
0.00806
],
[
-0.02055,
0.04066,
-0.00934
],
[
-0.02723,
0.02881,
0.0177
],
[
0.00206,
0.00531,
-0.01729
],
[
-0.00303,
0.01298,
-0.00933
],
[
-0.01558,
0.01188,
0.01886
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_10": 4.348037023628208
},
{
"J_Sec_Hair1_10": 4.348037023628208,
"J_Sec_Hair3_10": 4.307469985860632
},
{
"J_Sec_Hair2_10": 4.307469985860632
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_11",
"J_Sec_Hair2_11",
"J_Sec_Hair3_11",
"J_Sec_Hair4_11"
],
"tips": [
[
0.01001,
0.05484,
-0.0104
],
[
0.00594,
0.05596,
-0.00663
],
[
0.00284,
0.05652,
-0.00375
],
[
0.00284,
0.05652,
-0.00375
]
],
"hulls": [
[
[
-0.0336,
0.05073,
-0.02585
],
[
0.03431,
0.00309,
0.02653
],
[
0.03101,
0.04289,
-0.01762
],
[
-0.00462,
-0.0013,
-0.01728
],
[
-0.05014,
0.00712,
-0.03009
],
[
0.00588,
0.02005,
0.0094
],
[
-0.00129,
0.04205,
-0.0166
],
[
0.03881,
0.03532,
0.01253
],
[
0.02742,
0.00285,
-0.00672
],
[
-0.02026,
0.01388,
-0.03785
]
],
[
[
0.01152,
0.05436,
-0.0143
],
[
-0.03654,
0.00851,
-0.01442
],
[
0.02489,
0.00155,
0.01241
],
[
-0.00134,
0.01164,
-0.01049
],
[
-0.01899,
0.03823,
-0.01455
],
[
0.02563,
0.03094,
0.0062
],
[
-0.00124,
0.04081,
0.0012
],
[
0.02009,
0.02067,
-0.0136
],
[
-0.01384,
-0.00132,
-0.02476
],
[
0.0111,
0.01937,
0.01747
]
],
[
[
0.01809,
0.06474,
0.00451
],
[
-0.00252,
-0.00034,
-0.00919
],
[
-0.01443,
0.04127,
-0.00749
],
[
0.02423,
0.02907,
0.00268
],
[
0.01752,
0.00581,
0.0013
],
[
-0.01333,
0.01982,
-0.00015
],
[
0.01209,
0.04863,
-0.00886
],
[
0.00612,
0.03733,
0.00917
],
[
-1e-05,
0.02768,
-0.01425
],
[
-0.01285,
0.06118,
-0.00357
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_11": 20.1695800288937
},
{
"J_Sec_Hair1_11": 20.1695800288937,
"J_Sec_Hair3_11": 18.79479094472742
},
{
"J_Sec_Hair2_11": 18.79479094472742
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_12",
"J_Sec_Hair2_12",
"J_Sec_Hair3_12",
"J_Sec_Hair4_12"
],
"tips": [
[
-0.0098,
0.05611,
-0.01118
],
[
-0.00567,
0.05729,
-0.00697
],
[
-0.0024,
0.05789,
-0.00363
],
[
-0.0024,
0.05789,
-0.00363
]
],
"hulls": [
[
[
0.035,
0.05517,
-0.02733
],
[
-0.03495,
0.00451,
0.02597
],
[
0.00651,
0.00181,
-0.01847
],
[
-0.03053,
0.04456,
-0.01868
],
[
0.05194,
0.01062,
-0.031
],
[
-0.00549,
0.02112,
0.00883
],
[
-0.02727,
0.00374,
-0.00708
],
[
-0.03845,
0.03769,
0.01136
],
[
0.00835,
0.03947,
-0.0201
],
[
-0.01009,
0.05696,
0.00016
]
],
[
[
-0.01724,
0.05565,
-0.0071
],
[
0.03655,
0.01314,
-0.01521
],
[
-0.02476,
0.00201,
0.01213
],
[
0.00092,
0.01441,
-0.01105
],
[
0.01819,
0.04209,
-0.01466
],
[
-0.00506,
0.0267,
0.01481
],
[
0.0236,
0.00453,
0.00578
],
[
-0.02433,
0.01446,
-0.00795
],
[
0.01407,
0.00225,
-0.02557
],
[
0.00066,
0.04337,
0.00041
]
],
[
[
-0.00061,
0.06864,
-0.00452
],
[
-0.00632,
-0.00079,
-0.00813
],
[
0.00826,
0.03388,
-0.01943
],
[
-0.02358,
0.03881,
0.00234
],
[
0.0134,
0.01709,
-0.00064
],
[
0.0104,
0.04449,
0.00057
],
[
-0.00671,
0.01917,
0.00805
],
[
-0.01297,
0.01892,
-0.01268
],
[
-0.01932,
0.06422,
0.00449
],
[
-0.01306,
0.04876,
-0.00903
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_12": 20.797115504793354
},
{
"J_Sec_Hair1_12": 20.797115504793354,
"J_Sec_Hair3_12": 20.753898724733332
},
{
"J_Sec_Hair2_12": 20.753898724733332
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_13",
"J_Sec_Hair2_13",
"J_Sec_Hair3_13"
],
"tips": [
[
0.02011,
0.09181,
-0.00286
],
[
0.03975,
0.05486,
-0.00267
],
[
0.03975,
0.05486,
-0.00267
]
],
"hulls": [
[
[
0.01278,
0.09433,
0.00743
],
[
0.00503,
-0.00394,
-0.02307
],
[
0.03257,
0.04406,
-0.00514
],
[
0.01058,
0.01845,
0.00721
],
[
0.01238,
0.07186,
-0.0156
],
[
0.01675,
0.02279,
-0.02178
],
[
0.02799,
0.0669,
0.0055
],
[
0.0045,
-0.00404,
0.00515
],
[
0.0101,
0.04025,
-0.00087
],
[
0.03093,
0.08206,
-0.01168
]
],
[
[
0.03347,
0.06049,
-0.00477
],
[
-0.01279,
0.00778,
-0.00465
],
[
-0.00957,
0.05038,
0.01515
],
[
0.02852,
0.02198,
-0.0276
],
[
-0.00084,
0.03441,
-0.00966
],
[
-0.00561,
0.02163,
0.01707
],
[
0.00605,
0.05881,
-0.00897
],
[
0.00839,
-0.00286,
-0.00961
],
[
0.00835,
0.06527,
0.00993
],
[
0.01485,
0.03519,
-0.02093
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_13": 28.349896885998273
},
{
"J_Sec_Hair1_13": 28.349896885998273
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_14",
"J_Sec_Hair2_14",
"J_Sec_Hair3_14"
],
"tips": [
[
-0.02011,
0.09181,
-0.00286
],
[
-0.03975,
0.05486,
-0.00267
],
[
-0.03975,
0.05486,
-0.00267
]
],
"hulls": [
[
[
-0.01256,
0.0943,
0.00048
],
[
-0.00487,
-0.00404,
-0.02413
],
[
-0.02955,
0.03699,
0.00229
],
[
-0.01589,
0.06506,
-0.01716
],
[
-0.00892,
0.0113,
0.00738
],
[
-0.01583,
0.02999,
-0.0233
],
[
-0.03173,
0.067,
0.00648
],
[
-0.01225,
0.0508,
0.00085
],
[
-0.02915,
0.08183,
-0.00816
],
[
-0.00797,
0.03032,
0.00049
]
],
[
[
-0.02436,
0.06451,
-0.00364
],
[
-0.00762,
-0.00295,
-0.00432
],
[
0.01095,
0.03578,
0.01561
],
[
-0.02764,
0.02899,
-0.02757
],
[
0.00397,
0.0245,
-0.01162
],
[
0.00189,
0.06375,
0.01059
],
[
-0.004,
0.05114,
-0.00914
],
[
0.0006,
0.01537,
0.0133
],
[
0.0135,
0.00781,
-0.00586
],
[
-0.03979,
0.05491,
-0.00254
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_14": 28.360807644433685
},
{
"J_Sec_Hair1_14": 28.360807644433685
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_15",
"J_Sec_Hair2_15",
"J_Sec_Hair3_15"
],
"tips": [
[
-0.01211,
0.05321,
0.01422
],
[
-0.01309,
0.05293,
0.01456
],
[
-0.01309,
0.05293,
0.01456
]
],
"hulls": [
[
[
-0.0267,
0.05046,
-0.00606
],
[
-0.00062,
0.00414,
-0.00789
],
[
-0.00667,
0.03155,
0.00125
],
[
-0.01534,
0.01553,
-0.00251
],
[
-0.013,
0.04884,
0.00424
],
[
-0.02028,
0.03313,
-0.00813
],
[
-0.01922,
0.03774,
0.00385
],
[
-0.00317,
0.01852,
-0.00357
],
[
-0.02513,
0.0499,
0.0063
],
[
-0.01121,
0.02662,
-0.00923
]
],
[
[
-0.03068,
0.05762,
0.02615
],
[
-0.0165,
0.0015,
-0.01958
],
[
0.00662,
0.03993,
-0.00269
],
[
-0.03151,
0.03456,
-0.00473
],
[
-0.00954,
0.05841,
0.00746
],
[
-0.02504,
0.01517,
-0.00152
],
[
-0.02627,
0.04302,
0.01308
],
[
-0.02356,
0.04756,
-0.00138
],
[
-0.01502,
0.05269,
0.02041
],
[
-0.02537,
0.02337,
-0.01417
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_15": 26.225395679503343
},
{
"J_Sec_Hair1_15": 26.225395679503343
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_16",
"J_Sec_Hair2_16",
"J_Sec_Hair3_16"
],
"tips": [
[
0.01211,
0.05321,
0.01422
],
[
0.01309,
0.05293,
0.01456
],
[
0.01309,
0.05293,
0.01456
]
],
"hulls": [
[
[
0.02113,
0.05354,
-0.00554
],
[
0.00076,
0.00423,
-0.00969
],
[
0.01547,
0.02449,
0.00187
],
[
0.00814,
0.04121,
0.00081
],
[
0.01089,
0.01686,
-0.0105
],
[
0.01191,
0.00639,
-0.0002
],
[
0.02305,
0.04065,
0.00039
],
[
0.00967,
0.0323,
-0.00837
],
[
0.00387,
0.02312,
-0.00284
],
[
0.01576,
0.0526,
0.00473
]
],
[
[
0.03068,
0.05762,
0.02615
],
[
0.01647,
0.0008,
-0.01661
],
[
-0.00663,
0.03986,
-0.00258
],
[
0.03067,
0.03647,
-0.00831
],
[
0.00894,
0.0606,
0.01156
],
[
0.02504,
0.01517,
-0.00152
],
[
0.03677,
0.04015,
0.01336
],
[
0.02325,
0.05038,
0.00229
],
[
0.00499,
0.04553,
0.01218
],
[
0.02024,
0.01552,
-0.01657
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_16": 26.322509970647936
},
{
"J_Sec_Hair1_16": 26.322509970647936
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_17",
"J_Sec_Hair2_17",
"J_Sec_Hair3_17"
],
"tips": [
[
0.02348,
0.0957,
-0.02381
],
[
-0.00217,
0.10077,
-0.01388
],
[
-0.00217,
0.10077,
-0.01388
]
],
"hulls": [
[
[
0.05658,
0.08838,
-0.03346
],
[
0.00273,
-0.00065,
-5e-05
],
[
0.00587,
0.05197,
-0.03052
],
[
0.02929,
0.03537,
0.00239
],
[
0.01178,
0.09133,
-0.04513
],
[
0.02602,
0.08072,
-0.00753
],
[
0.04559,
0.05799,
-0.02396
],
[
0.01376,
0.02351,
-0.02037
],
[
0.02303,
0.07156,
-0.03101
],
[
0.03541,
0.0901,
-0.04576
]
],
[
[
-0.00135,
0.11116,
-0.01126
],
[
0.02807,
0.00059,
0.01304
],
[
-0.00773,
0.04692,
-0.03614
],
[
0.03907,
0.07185,
-0.02125
],
[
0.01188,
0.04645,
0.01195
],
[
-0.01439,
0.00065,
-0.00596
],
[
0.01794,
0.01334,
-0.02856
],
[
-0.02031,
0.08883,
-0.02963
],
[
0.04174,
0.03605,
-0.01935
],
[
0.00605,
0.07751,
0.00105
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_17": 20.076729074867217
},
{
"J_Sec_Hair1_17": 20.076729074867217
},
{}
]
},
{
"class": "hair",
"root_parent": "J_Bip_C_Head",
"bones": [
"J_Sec_Hair1_18",
"J_Sec_Hair2_18",
"J_Sec_Hair3_18"
],
"tips": [
[
-0.02373,
0.0961,
-0.02398
],
[
0.00214,
0.10123,
-0.01396
],
[
0.00214,
0.10123,
-0.01396
]
],
"hulls": [
[
[
-0.05372,
0.0887,
-0.03821
],
[
-0.00155,
0.0015,
0.0044
],
[
-0.0045,
0.05349,
-0.02979
],
[
-0.04112,
0.0547,
-0.00352
],
[
-0.00889,
0.09313,
-0.04332
],
[
-0.02936,
0.09161,
-0.00708
],
[
-0.02751,
0.02093,
-0.01345
],
[
0.00019,
0.02767,
-0.00731
],
[
-0.02593,
0.07379,
-0.03643
],
[
-0.05391,
0.08442,
-0.01154
]
],
[
[
0.00123,
0.11161,
-0.01115
],
[
-0.03379,
-0.00147,
0.00928
],
[
0.01417,
0.03707,
-0.03033
],
[
-0.04251,
0.06227,
-0.012
],
[
-0.00944,
0.03602,
0.01124
],
[
0.01272,
0.00165,
-0.00377
],
[
0.01934,
0.07901,
-0.0333
],
[
-0.03593,
0.02393,
-0.02433
],
[
-0.00213,
0.07633,
0.00866
],
[
-0.03081,
0.09597,
-0.01973
]
],
[]
],
"neighbours": [
{
"J_Sec_Hair2_18": 20.05058973935537
},
{
"J_Sec_Hair1_18": 20.05058973935537
},
{}
]
}
],
"twist": [],
"colliders": [
{
"bone": "J_Bip_C_Hips",
"child": "J_Bip_C_Spine",
"from": 0.0,
"radius_head": 0.1447,
"radius_tail": 0.1447,
"radius": 0.1447,
"lid": true
},
{
"bone": "J_Bip_L_UpperLeg",
"child": "J_Bip_L_LowerLeg",
"from": 0.1,
"radius_head": 0.0974,
"radius_tail": 0.0554,
"radius": 0.0554
},
{
"bone": "J_Bip_R_UpperLeg",
"child": "J_Bip_R_LowerLeg",
"from": 0.1,
"radius_head": 0.0974,
"radius_tail": 0.0554,
"radius": 0.0554
},
{
"bone": "J_Bip_L_LowerLeg",
"child": "J_Bip_L_Foot",
"from": 0.1,
"radius_head": 0.0922,
"radius_tail": 0.0493,
"radius": 0.0493
},
{
"bone": "J_Bip_R_LowerLeg",
"child": "J_Bip_R_Foot",
"from": 0.1,
"radius_head": 0.0922,
"radius_tail": 0.0493,
"radius": 0.0493
}
],
"weights_authored": true,
"driven_bones": [
"J_Adj_L_FaceEye",
"J_Bip_C_Chest",
"J_Bip_C_Head",
"J_Bip_C_Hips",
"J_Bip_C_Neck",
"J_Bip_C_Spine",
"J_Bip_C_UpperChest",
"J_Bip_L_Foot",
"J_Bip_L_Hand",
"J_Bip_L_LowerArm",
"J_Bip_L_LowerLeg",
"J_Bip_L_Shoulder",
"J_Bip_L_ToeBase",
"J_Bip_L_UpperArm",
"J_Bip_L_UpperLeg",
"J_Bip_R_Foot",
"J_Bip_R_Hand",
"J_Bip_R_LowerArm",
"J_Bip_R_LowerLeg",
"J_Bip_R_Shoulder",
"J_Bip_R_ToeBase",
"J_Bip_R_UpperArm",
"J_Bip_R_UpperLeg",
"Root"
],
"surfaces": [
{
"mesh": "Object_10",
"surface": 0,
"material": "N00_001_03_Bottoms_01_CLOTH_Instance",
"class": "cloth",
"detail": "garment",
"why": "material name says 'garment'",
"verts": 742,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_11",
"surface": 0,
"material": "N00_001_01_Shoes_01_CLOTH_Instance",
"class": "cloth",
"detail": "garment",
"why": "material name says 'garment'",
"verts": 410,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_13",
"surface": 0,
"material": "N00_000_00_FaceMouth_00_FACE_Instance",
"class": "body",
"detail": "face",
"why": "material name says 'face'",
"verts": 1073,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_14",
"surface": 0,
"material": "N00_000_00_EyeIris_00_EYE_Instance",
"class": "body",
"detail": "eyes",
"why": "material name says 'eyes'",
"verts": 268,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_15",
"surface": 0,
"material": "N00_000_00_EyeHighlight_00_EYE_Instance",
"class": "body",
"detail": "eyes",
"why": "material name says 'eyes'",
"verts": 200,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_16",
"surface": 0,
"material": "N00_000_00_Face_00_SKIN_Instance",
"class": "body",
"detail": "face",
"why": "material name says 'face'",
"verts": 2266,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_17",
"surface": 0,
"material": "N00_000_00_EyeWhite_00_EYE_Instance",
"class": "body",
"detail": "eyes",
"why": "material name says 'eyes'",
"verts": 290,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_18",
"surface": 0,
"material": "N00_000_00_FaceBrow_00_FACE_Instance",
"class": "body",
"detail": "face",
"why": "material name says 'face'",
"verts": 52,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_19",
"surface": 0,
"material": "N00_000_00_FaceEyeline_00_FACE_Instance",
"class": "body",
"detail": "face",
"why": "material name says 'face'",
"verts": 168,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_21",
"surface": 0,
"material": "N00_000_Hair_00_HAIR_Instance",
"class": "hair",
"detail": "hair",
"why": "material name says 'hair'",
"verts": 22432,
"textured": true,
"chain_share": {
"hair": 0.281
}
},
{
"mesh": "Object_7",
"surface": 0,
"material": "N00_000_00_Body_00_SKIN_Instance",
"class": "body",
"detail": "skin",
"why": "material name says 'skin'",
"verts": 5103,
"textured": true,
"chain_share": {
"bust": 0.001
}
},
{
"mesh": "Object_8",
"surface": 0,
"material": "N00_000_00_HairBack_00_HAIR_Instance",
"class": "hair",
"detail": "hair",
"why": "material name says 'hair'",
"verts": 700,
"textured": true,
"chain_share": {}
},
{
"mesh": "Object_9",
"surface": 0,
"material": "N00_007_01_Tops_01_CLOTH_Instance",
"class": "cloth",
"detail": "garment",
"why": "material name says 'garment'",
"verts": 814,
"textured": true,
"chain_share": {
"bust": 0.061
}
}
]
}