diff --git a/index.html b/index.html index 9317eeb..05d6c32 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,21 @@ diff --git a/public/models/characters/Eyebrows_Female.bin b/public/models/characters/Eyebrows_Female.bin new file mode 100644 index 0000000..5d8f9e3 Binary files /dev/null and b/public/models/characters/Eyebrows_Female.bin differ diff --git a/public/models/characters/Eyebrows_Female.gltf b/public/models/characters/Eyebrows_Female.gltf new file mode 100644 index 0000000..8766ced --- /dev/null +++ b/public/models/characters/Eyebrows_Female.gltf @@ -0,0 +1,1626 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.20467473566532135, + -4.759437705400649e-21, + 1.2439442348830942e-21, + 0.9788300395011902 + ], + "translation":[ + -1.5903435849255598e-27, + 0.0711912140250206, + 2.0489096641540527e-08 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.3088374435901642, + 8.337463586651673e-21, + -5.849849968646638e-21, + 0.95111483335495 + ], + "translation":[ + -1.0141478263557337e-20, + 0.19815585017204285, + 2.60770320892334e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -8.381903171539307e-09, + 1, + -1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + 1.0023382124302316e-09, + 7.603918037758783e-13, + -0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + 1.8987577732332284e-08, + 1.4024364247688936e-07, + -0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.0033091865479946136, + 0.7071018815040588, + -0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + 0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.0489096641540527e-08, + 1, + 6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + 2.420814304571195e-08, + 1.4173854798182894e-11, + -0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + -4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + -2.949975197452659e-08, + 1.402399334438087e-07, + 0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + 1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.007979890331625938, + 0.7070646286010742, + -0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + 0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + 8.381903171539307e-09, + 1, + 5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + -1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + -2.1800540039862426e-08, + 5.25581791629981e-12, + 0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + 1.03155857189563e-08, + 1.4017835781032773e-07, + -0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.01044775452464819, + 0.7070325016975403, + -0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 2.7474015951156616e-08, + 1, + 1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + 9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + 2.6234243222234e-08, + 4.3393351412124304e-11, + -0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + 7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + -1.8197205520209536e-08, + 1.4009778226409253e-07, + 0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + -9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + 0.0025809321086853743, + 0.7071049213409424, + 0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + -1.2782692238033633e-08, + 0.48539119958877563, + 2.0375746601075662e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -1.2670352589339018e-07, + 0.03127264976501465, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0012816648231819272, + 5.811178561998531e-05, + 0.0002541383437346667, + 0.9999991655349731 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 2.2436142899096012e-07, + 0.035620346665382385, + 5.122274160385132e-09 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0019128327257931232, + 0.00019216042710468173, + -0.0004484721284825355, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + 1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.263997346162796, + 0.9450139999389648, + 0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + 0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.02237604185938835, + -2.264418526465306e-06, + -3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + 1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.023802155628800392, + 8.208974031731486e-05, + -1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + -4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.17232586443424225, + 0.6858593225479126, + -0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + -0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5471324324607849, + -0.3204275965690613, + -0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -8.381903171539307e-09, + -1, + 1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + 1.0023382124302316e-09, + -7.603918037758783e-13, + 0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + 1.8987577732332284e-08, + -1.4024364247688936e-07, + 0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.0033091865479946136, + -0.7071018815040588, + 0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + -0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.0489096641540527e-08, + -1, + -6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + 2.420814304571195e-08, + -1.4173854798182894e-11, + 0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + 4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + -2.949975197452659e-08, + -1.402399334438087e-07, + -0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + -1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.007979890331625938, + -0.7070646286010742, + 0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + -0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + 8.381903171539307e-09, + -1, + -5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + 1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + -2.1800540039862426e-08, + -5.25581791629981e-12, + -0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.03155857189563e-08, + -1.4017835781032773e-07, + 0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.01044775452464819, + -0.7070325016975403, + 0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 2.7474015951156616e-08, + -1, + -1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + -9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + 2.6234243222234e-08, + -4.3393351412124304e-11, + 0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + -7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + -1.8197205520209536e-08, + -1.4009778226409253e-07, + -0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + 9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + 0.0025809321086853743, + -0.7071049213409424, + -0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + -2.5565388028780944e-08, + -0.48539119958877563, + -1.9393742434203887e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.2622331269085407e-07, + 0.031272709369659424, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0012816853122785687, + -5.809385038446635e-05, + -0.00025414914125576615, + 0.9999991655349731 + ], + "scale":[ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.0542134987190366e-07, + 0.03562036156654358, + -8.847564458847046e-09 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.001912830863147974, + -0.00019218510715290904, + 0.0004484682867769152, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + -1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.263997346162796, + -0.9450139999389648, + -0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + -0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.02237604185938835, + 2.264418526465306e-06, + 3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + -1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.023802155628800392, + -8.208974031731486e-05, + 1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + 4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.17232586443424225, + -0.6858593225479126, + 0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + 0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5471324324607849, + 0.3204275965690613, + 0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.10099761933088303, + 4.5928396448426806e-14, + -4.5242200827702583e-13, + 0.9948866963386536 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 4.6735704609246064e-20, + 0.12640145421028137, + 3.4924596548080444e-10 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.055728573352098465, + -4.992229150957428e-05, + -2.7864282401424134e-06, + 0.998445987701416 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999998807907104 + ], + "translation":[ + -4.263256414560601e-13, + 0.11034487932920456, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.06393160670995712, + 4.989771332475357e-05, + -3.19658010994317e-06, + 0.9979543089866638 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 0, + 0.12655510008335114, + -9.313225746154785e-10 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.204170985147357e-09 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + 1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + 0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.5897967386990786e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + -1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + -0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.7879695892333984, + 0, + 0, + 0.6157141923904419 + ], + "translation":[ + 0, + 0.045700013637542725, + 0.9318000078201294 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Eyebrows_Female", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_2", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.7121212482452393 + } + } + ], + "meshes":[ + { + "name":"Eyebrows_Female", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "TEXCOORD_1":3, + "TEXCOORD_2":4, + "TEXCOORD_3":5, + "COLOR_0":6, + "COLOR_1":7, + "COLOR_2":8, + "JOINTS_0":9, + "WEIGHTS_0":10 + }, + "indices":11, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_2_Normal", + "uri":"T_Hair_2_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_2_BaseColor", + "uri":"T_Hair_2_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":12, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":912, + "max":[ + 0.06299881637096405, + 1.6869006156921387, + 0.0915706604719162 + ], + "min":[ + -0.06299881637096405, + 1.6492890119552612, + 0.051284290850162506 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":912, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":912, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5126, + "count":912, + "type":"VEC2" + }, + { + "bufferView":4, + "componentType":5126, + "count":912, + "type":"VEC2" + }, + { + "bufferView":5, + "componentType":5126, + "count":912, + "type":"VEC2" + }, + { + "bufferView":6, + "componentType":5121, + "count":912, + "normalized":true, + "type":"VEC4" + }, + { + "bufferView":7, + "componentType":5123, + "count":912, + "normalized":true, + "type":"VEC4" + }, + { + "bufferView":8, + "componentType":5123, + "count":912, + "normalized":true, + "type":"VEC4" + }, + { + "bufferView":9, + "componentType":5121, + "count":912, + "type":"VEC4" + }, + { + "bufferView":10, + "componentType":5126, + "count":912, + "type":"VEC4" + }, + { + "bufferView":11, + "componentType":5123, + "count":4440, + "type":"SCALAR" + }, + { + "bufferView":12, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":10944, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":10944, + "byteOffset":10944, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":21888, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":29184, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":36480, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":43776, + "target":34962 + }, + { + "buffer":0, + "byteLength":3648, + "byteOffset":51072, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":54720, + "target":34962 + }, + { + "buffer":0, + "byteLength":7296, + "byteOffset":62016, + "target":34962 + }, + { + "buffer":0, + "byteLength":3648, + "byteOffset":69312, + "target":34962 + }, + { + "buffer":0, + "byteLength":14592, + "byteOffset":72960, + "target":34962 + }, + { + "buffer":0, + "byteLength":8880, + "byteOffset":87552, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":96432 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":100592, + "uri":"Eyebrows_Female.bin" + } + ] +} diff --git a/public/models/characters/Eyebrows_Regular.bin b/public/models/characters/Eyebrows_Regular.bin new file mode 100644 index 0000000..93c9302 Binary files /dev/null and b/public/models/characters/Eyebrows_Regular.bin differ diff --git a/public/models/characters/Eyebrows_Regular.gltf b/public/models/characters/Eyebrows_Regular.gltf new file mode 100644 index 0000000..35a9469 --- /dev/null +++ b/public/models/characters/Eyebrows_Regular.gltf @@ -0,0 +1,1519 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.13207007944583893, + 0, + 0, + 0.991240382194519 + ], + "translation":[ + 0, + 0.08285234868526459, + 9.313225746154785e-09 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.25725916028022766, + 0, + 0, + 0.9663424491882324 + ], + "translation":[ + 0, + 0.21509313583374023, + 1.862645149230957e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -4.656613761255812e-09, + -1, + -1.8664633572962157e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 1.9281287677586079e-10, + 0.02411014772951603, + 1.6830044557991641e-07 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + -1.348770428677426e-09, + 3.689715200039245e-12, + -0.00018570991232991219, + 1 + ], + "translation":[ + -1.6689227777533233e-09, + 0.027911463752388954, + 1.6598225727193494e-07 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + -1.721623910100334e-08, + -3.9419649766614384e-08, + -0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -3.374225343577564e-10, + 0.0326123908162117, + 1.3817563626616902e-07 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.009757923893630505, + 0.7070369124412537, + -0.0097578726708889, + 0.7070420384407043 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.009400011971592903, + 0.11500009149312973, + 0.03249999135732651 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.421438694000244e-08, + -1, + -9.97962698806934e-14, + 3.65177675121231e-06 + ], + "translation":[ + 5.168658390175551e-09, + 0.030519818887114525, + 2.3142732175074343e-08 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + -1.0311108411542591e-08, + 2.617175920427428e-11, + -0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 3.3051037462428212e-09, + 0.03011666052043438, + 1.2451241104827204e-07 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + 1.5643285777855453e-08, + -3.913748614081669e-08, + 0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.090484147425741e-09, + 0.03752619028091431, + 1.5301162648029276e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.013192507438361645, + 0.7069811820983887, + -0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + 0.0069999718107283115, + 0.11260004341602325, + 0.0069999960251152515 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + -2.2351745343485163e-08, + -1, + 1.2562023090582214e-13, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.033640728564933e-08, + 0.021523205563426018, + -2.814113031490706e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + 3.383408886392658e-09, + -9.627411715062983e-12, + 0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.8849171940237284e-09, + 0.02743077464401722, + -3.729670083885139e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + -1.035459185061427e-08, + -3.897551081877282e-08, + -0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + -1.0922121873591095e-08, + 0.031630996614694595, + 7.067205842758995e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.015652360394597054, + 0.706930935382843, + -0.01565224677324295, + 0.7069361209869385 + ], + "translation":[ + 0.009000067599117756, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 1.1641533959050321e-08, + -1, + -4.1919619902033856e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -3.835339157376438e-09, + 0.029101530089974403, + 3.391749459069615e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + -2.4604773329883756e-08, + 6.235185284753086e-11, + -0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -8.026290743146092e-09, + 0.028300149366259575, + 1.1107826480838412e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + 1.7517091777108362e-08, + -3.9449915334444086e-08, + 0.0023997032549232244, + 0.9999971389770508 + ], + "translation":[ + -5.185938789509237e-09, + 0.0360012948513031, + 1.464196230926973e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + -0.0029462252277880907, + 0.7070980072021484, + -0.0029462038073688745, + 0.7071032524108887 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + 0.00730002298951149, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + 2.2672955068969713e-08, + 0.4282083213329315, + -1.3036950008427084e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999998807907104, + 1, + 1 + ], + "translation":[ + -1.0710209608078003e-07, + 0.03459959849715233, + 6.51925802230835e-09 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0003726967261172831, + 2.6525931389187463e-05, + 0.00011462579277576879, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 1, + 1 + ], + "translation":[ + 3.5608536563813686e-08, + 0.03922773152589798, + -5.168840289115906e-08 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0008555729873478413, + 3.4565124224172905e-05, + -0.0004891895223408937, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.83063093572855e-07, + 0.039565373212099075, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.30099350214004517, + 0.9291350841522217, + 0.21020177006721497, + 0.04388770833611488 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.021399976685643196, + 0.027700087055563927, + 0.02740001305937767 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.015807554125785828, + -1.1323515991534805e-06, + -1.859292275696589e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 8.156474962106586e-08, + 0.24042010307312012, + -3.2514435588382185e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.03093818761408329, + 4.2500738345552236e-05, + -1.2440405043889768e-06, + 0.9995213150978088 + ], + "translation":[ + -4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.16515187919139862, + 0.6876330971717834, + -0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5359424352645874, + -0.3172530233860016, + -0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + 0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -4.656613761255812e-09, + 1, + -9.069184307350635e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -1.9281287677586079e-10, + 0.02411014772951603, + 1.6830023241709569e-07 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + -1.3487808647738575e-09, + -3.968936290732472e-12, + 0.00018570991232991219, + 1 + ], + "translation":[ + 1.6707417671568692e-09, + 0.027911463752388954, + 1.659820298982595e-07 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + -4.891389959738035e-09, + 3.925104508084587e-08, + 0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -1.2369127944111824e-10, + 0.032612428069114685, + 1.5866616820403578e-07 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.00975793320685625, + -0.7070369720458984, + 0.009757863357663155, + 0.7070419788360596 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.00940000731498003, + 0.11500009149312973, + 0.032499995082616806 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.421438694000244e-08, + 1, + 8.419702652098793e-14, + 3.65177675121231e-06 + ], + "translation":[ + -5.168658390175551e-09, + 0.030519818887114525, + 2.3141225824474532e-08 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + -1.0311155484998835e-08, + -2.69988770923435e-11, + 0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -3.306013240944594e-09, + 0.03011666052043438, + 1.2451081943254394e-07 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + 1.3419549915738571e-08, + 3.920036917293146e-08, + -0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -1.2823875294998288e-09, + 0.03752618655562401, + 1.4930063230167434e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.013192505575716496, + -0.7069811820983887, + 0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + -0.006999965291470289, + 0.11260004341602325, + 0.0069999974220991135 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + -2.2351745343485163e-08, + 1, + -9.381222605383058e-14, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.0335497790947556e-08, + 0.02152320370078087, + -2.814119568483875e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + 3.383400670742276e-09, + 9.110491007435773e-12, + -0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.8858266887255013e-09, + 0.02743077091872692, + -3.729741138158715e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.908002644768203e-09, + 3.8693851678317515e-08, + 0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + 4.2391548049636185e-09, + 0.03163096681237221, + 9.059564831659372e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.0156523697078228, + -0.7069309949874878, + 0.015652237460017204, + 0.7069360613822937 + ], + "translation":[ + -0.009000054560601711, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 1.1641533959050321e-08, + 1, + 3.932434822109636e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 3.835339157376438e-09, + 0.029101528227329254, + 3.391586744783126e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + -2.4604839055086813e-08, + -5.959530785526468e-11, + 0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 8.026290743146092e-09, + 0.028300149366259575, + 1.1107695030432296e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + 1.7020420628455213e-08, + 3.94586443519529e-08, + -0.0023997037205845118, + 0.9999971389770508 + ], + "translation":[ + 6.081791070755571e-09, + 0.0360012948513031, + 1.4559928729340754e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + -0.002946224994957447, + -0.7070980668067932, + 0.002946204040199518, + 0.7071031928062439 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + -0.007300012744963169, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + 2.2672949739899195e-08, + -0.4282083213329315, + 1.8189894035458565e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.671724021434784e-07, + 0.03459971770644188, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0003726781578734517, + -2.651103204698302e-05, + -0.00011462859401945025, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 0.9999999403953552, + 0.9999998807907104 + ], + "translation":[ + -1.8476566765457392e-07, + 0.03922785073518753, + -2.2351741790771484e-08 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.000855587946716696, + -3.4503656934248284e-05, + 0.0004891885910183191, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999998807907104, + 0.9999998807907104 + ], + "translation":[ + -5.372567102313042e-08, + 0.03956543654203415, + -2.60770320892334e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.30099350214004517, + -0.9291350841522217, + -0.21020175516605377, + 0.04388761147856712 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.02139997109770775, + 0.027700087055563927, + 0.02740001119673252 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.015807554125785828, + 1.2515496337073273e-06, + 1.8592521300320186e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + -9.193168182264344e-08, + 0.24042010307312012, + -5.398987923399545e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.03093818761408329, + -4.256031024851836e-05, + 1.2421967312548077e-06, + 0.9995213150978088 + ], + "translation":[ + 4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.16515187919139862, + -0.6876330971717834, + 0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5359424352645874, + 0.3172530233860016, + 0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + -0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.12418898940086365, + 0, + 0, + 0.9922585487365723 + ], + "translation":[ + 0, + 0.1331336796283722, + 0 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.03958535194396973, + 0, + 0, + 0.9992161989212036 + ], + "translation":[ + 0, + 0.10634974390268326, + -1.3969838619232178e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.09185619652271271, + 0, + 0, + 0.9957723021507263 + ], + "translation":[ + 0, + 0.1280922144651413, + -3.259629011154175e-08 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -2.1363266711205142e-10 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + -7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + 0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -1.1364305052552481e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + 7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + -0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.8005710244178772, + 0, + 0, + 0.5992379188537598 + ], + "translation":[ + 0, + 0.042999982833862305, + 0.9491000175476074 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Eyebrows_Regular", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_1", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0 + } + } + ], + "meshes":[ + { + "name":"Cube.001", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_1_Normal", + "uri":"T_Hair_1_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_1_BaseColor", + "uri":"T_Hair_1_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":646, + "max":[ + 0.062340568751096725, + 1.7254674434661865, + 0.09447739273309708 + ], + "min":[ + -0.062340568751096725, + 1.6948596239089966, + 0.0569210946559906 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":646, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":646, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":646, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":646, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":2952, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":7752, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":7752, + "byteOffset":7752, + "target":34962 + }, + { + "buffer":0, + "byteLength":5168, + "byteOffset":15504, + "target":34962 + }, + { + "buffer":0, + "byteLength":2584, + "byteOffset":20672, + "target":34962 + }, + { + "buffer":0, + "byteLength":10336, + "byteOffset":23256, + "target":34962 + }, + { + "buffer":0, + "byteLength":5904, + "byteOffset":33592, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":39496 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":43656, + "uri":"Eyebrows_Regular.bin" + } + ] +} diff --git a/public/models/characters/Hair_Beard.bin b/public/models/characters/Hair_Beard.bin new file mode 100644 index 0000000..dd57092 Binary files /dev/null and b/public/models/characters/Hair_Beard.bin differ diff --git a/public/models/characters/Hair_Beard.gltf b/public/models/characters/Hair_Beard.gltf new file mode 100644 index 0000000..ca79e6c --- /dev/null +++ b/public/models/characters/Hair_Beard.gltf @@ -0,0 +1,1519 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.13207007944583893, + 0, + 0, + 0.991240382194519 + ], + "translation":[ + 0, + 0.08285234868526459, + 9.313225746154785e-09 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.25725916028022766, + 0, + 0, + 0.9663424491882324 + ], + "translation":[ + 0, + 0.21509313583374023, + 1.862645149230957e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -4.656613761255812e-09, + -1, + -1.8664633572962157e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 1.9281287677586079e-10, + 0.02411014772951603, + 1.6830044557991641e-07 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + -1.348770428677426e-09, + 3.689715200039245e-12, + -0.00018570991232991219, + 1 + ], + "translation":[ + -1.6689227777533233e-09, + 0.027911463752388954, + 1.6598225727193494e-07 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + -1.721623910100334e-08, + -3.9419649766614384e-08, + -0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -3.374225343577564e-10, + 0.0326123908162117, + 1.3817563626616902e-07 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.009757923893630505, + 0.7070369124412537, + -0.0097578726708889, + 0.7070420384407043 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.009400011971592903, + 0.11500009149312973, + 0.03249999135732651 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.421438694000244e-08, + -1, + -9.97962698806934e-14, + 3.65177675121231e-06 + ], + "translation":[ + 5.168658390175551e-09, + 0.030519818887114525, + 2.3142732175074343e-08 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + -1.0311108411542591e-08, + 2.617175920427428e-11, + -0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 3.3051037462428212e-09, + 0.03011666052043438, + 1.2451241104827204e-07 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + 1.5643285777855453e-08, + -3.913748614081669e-08, + 0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.090484147425741e-09, + 0.03752619028091431, + 1.5301162648029276e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.013192507438361645, + 0.7069811820983887, + -0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + 0.0069999718107283115, + 0.11260004341602325, + 0.0069999960251152515 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + -2.2351745343485163e-08, + -1, + 1.2562023090582214e-13, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.033640728564933e-08, + 0.021523205563426018, + -2.814113031490706e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + 3.383408886392658e-09, + -9.627411715062983e-12, + 0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.8849171940237284e-09, + 0.02743077464401722, + -3.729670083885139e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + -1.035459185061427e-08, + -3.897551081877282e-08, + -0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + -1.0922121873591095e-08, + 0.031630996614694595, + 7.067205842758995e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.015652360394597054, + 0.706930935382843, + -0.01565224677324295, + 0.7069361209869385 + ], + "translation":[ + 0.009000067599117756, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 1.1641533959050321e-08, + -1, + -4.1919619902033856e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -3.835339157376438e-09, + 0.029101530089974403, + 3.391749459069615e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + -2.4604773329883756e-08, + 6.235185284753086e-11, + -0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -8.026290743146092e-09, + 0.028300149366259575, + 1.1107826480838412e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + 1.7517091777108362e-08, + -3.9449915334444086e-08, + 0.0023997032549232244, + 0.9999971389770508 + ], + "translation":[ + -5.185938789509237e-09, + 0.0360012948513031, + 1.464196230926973e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + -0.0029462252277880907, + 0.7070980072021484, + -0.0029462038073688745, + 0.7071032524108887 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + 0.00730002298951149, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + 2.2672955068969713e-08, + 0.4282083213329315, + -1.3036950008427084e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999998807907104, + 1, + 1 + ], + "translation":[ + -1.0710209608078003e-07, + 0.03459959849715233, + 6.51925802230835e-09 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0003726967261172831, + 2.6525931389187463e-05, + 0.00011462579277576879, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 1, + 1 + ], + "translation":[ + 3.5608536563813686e-08, + 0.03922773152589798, + -5.168840289115906e-08 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0008555729873478413, + 3.4565124224172905e-05, + -0.0004891895223408937, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.83063093572855e-07, + 0.039565373212099075, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.30099350214004517, + 0.9291350841522217, + 0.21020177006721497, + 0.04388770833611488 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.021399976685643196, + 0.027700087055563927, + 0.02740001305937767 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.015807554125785828, + -1.1323515991534805e-06, + -1.859292275696589e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 8.156474962106586e-08, + 0.24042010307312012, + -3.2514435588382185e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.03093818761408329, + 4.2500738345552236e-05, + -1.2440405043889768e-06, + 0.9995213150978088 + ], + "translation":[ + -4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.16515187919139862, + 0.6876330971717834, + -0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5359424352645874, + -0.3172530233860016, + -0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + 0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -4.656613761255812e-09, + 1, + -9.069184307350635e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -1.9281287677586079e-10, + 0.02411014772951603, + 1.6830023241709569e-07 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + -1.3487808647738575e-09, + -3.968936290732472e-12, + 0.00018570991232991219, + 1 + ], + "translation":[ + 1.6707417671568692e-09, + 0.027911463752388954, + 1.659820298982595e-07 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + -4.891389959738035e-09, + 3.925104508084587e-08, + 0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -1.2369127944111824e-10, + 0.032612428069114685, + 1.5866616820403578e-07 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.00975793320685625, + -0.7070369720458984, + 0.009757863357663155, + 0.7070419788360596 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.00940000731498003, + 0.11500009149312973, + 0.032499995082616806 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.421438694000244e-08, + 1, + 8.419702652098793e-14, + 3.65177675121231e-06 + ], + "translation":[ + -5.168658390175551e-09, + 0.030519818887114525, + 2.3141225824474532e-08 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + -1.0311155484998835e-08, + -2.69988770923435e-11, + 0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -3.306013240944594e-09, + 0.03011666052043438, + 1.2451081943254394e-07 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + 1.3419549915738571e-08, + 3.920036917293146e-08, + -0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -1.2823875294998288e-09, + 0.03752618655562401, + 1.4930063230167434e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.013192505575716496, + -0.7069811820983887, + 0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + -0.006999965291470289, + 0.11260004341602325, + 0.0069999974220991135 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + -2.2351745343485163e-08, + 1, + -9.381222605383058e-14, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.0335497790947556e-08, + 0.02152320370078087, + -2.814119568483875e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + 3.383400670742276e-09, + 9.110491007435773e-12, + -0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.8858266887255013e-09, + 0.02743077091872692, + -3.729741138158715e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.908002644768203e-09, + 3.8693851678317515e-08, + 0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + 4.2391548049636185e-09, + 0.03163096681237221, + 9.059564831659372e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.0156523697078228, + -0.7069309949874878, + 0.015652237460017204, + 0.7069360613822937 + ], + "translation":[ + -0.009000054560601711, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 1.1641533959050321e-08, + 1, + 3.932434822109636e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 3.835339157376438e-09, + 0.029101528227329254, + 3.391586744783126e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + -2.4604839055086813e-08, + -5.959530785526468e-11, + 0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 8.026290743146092e-09, + 0.028300149366259575, + 1.1107695030432296e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + 1.7020420628455213e-08, + 3.94586443519529e-08, + -0.0023997037205845118, + 0.9999971389770508 + ], + "translation":[ + 6.081791070755571e-09, + 0.0360012948513031, + 1.4559928729340754e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + -0.002946224994957447, + -0.7070980668067932, + 0.002946204040199518, + 0.7071031928062439 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + -0.007300012744963169, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + 2.2672949739899195e-08, + -0.4282083213329315, + 1.8189894035458565e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.671724021434784e-07, + 0.03459971770644188, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0003726781578734517, + -2.651103204698302e-05, + -0.00011462859401945025, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 0.9999999403953552, + 0.9999998807907104 + ], + "translation":[ + -1.8476566765457392e-07, + 0.03922785073518753, + -2.2351741790771484e-08 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.000855587946716696, + -3.4503656934248284e-05, + 0.0004891885910183191, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999998807907104, + 0.9999998807907104 + ], + "translation":[ + -5.372567102313042e-08, + 0.03956543654203415, + -2.60770320892334e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.30099350214004517, + -0.9291350841522217, + -0.21020175516605377, + 0.04388761147856712 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.02139997109770775, + 0.027700087055563927, + 0.02740001119673252 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.015807554125785828, + 1.2515496337073273e-06, + 1.8592521300320186e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + -9.193168182264344e-08, + 0.24042010307312012, + -5.398987923399545e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.03093818761408329, + -4.256031024851836e-05, + 1.2421967312548077e-06, + 0.9995213150978088 + ], + "translation":[ + 4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.16515187919139862, + -0.6876330971717834, + 0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5359424352645874, + 0.3172530233860016, + 0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + -0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.12418898940086365, + 0, + 0, + 0.9922585487365723 + ], + "translation":[ + 0, + 0.1331336796283722, + 0 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.03958535194396973, + 0, + 0, + 0.9992161989212036 + ], + "translation":[ + 0, + 0.10634974390268326, + -1.3969838619232178e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.09185619652271271, + 0, + 0, + 0.9957723021507263 + ], + "translation":[ + 0, + 0.1280922144651413, + -3.259629011154175e-08 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -2.1363266711205142e-10 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + -7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + 0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -1.1364305052552481e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + 7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + -0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.8005710244178772, + 0, + 0, + 0.5992379188537598 + ], + "translation":[ + 0, + 0.042999982833862305, + 0.9491000175476074 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_Beard", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_1", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0 + } + } + ], + "meshes":[ + { + "name":"Plane.006", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_1_Normal", + "uri":"T_Hair_1_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_1_BaseColor", + "uri":"T_Hair_1_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":596, + "max":[ + 0.08075305074453354, + 1.6893515586853027, + 0.0968303382396698 + ], + "min":[ + -0.08075305074453354, + 1.549536108970642, + -0.008104397915303707 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":596, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":596, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":596, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":596, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":3102, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":7152, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":7152, + "byteOffset":7152, + "target":34962 + }, + { + "buffer":0, + "byteLength":4768, + "byteOffset":14304, + "target":34962 + }, + { + "buffer":0, + "byteLength":2384, + "byteOffset":19072, + "target":34962 + }, + { + "buffer":0, + "byteLength":9536, + "byteOffset":21456, + "target":34962 + }, + { + "buffer":0, + "byteLength":6204, + "byteOffset":30992, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":37196 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":41356, + "uri":"Hair_Beard.bin" + } + ] +} diff --git a/public/models/characters/Hair_Buns.bin b/public/models/characters/Hair_Buns.bin new file mode 100644 index 0000000..edf82d5 Binary files /dev/null and b/public/models/characters/Hair_Buns.bin differ diff --git a/public/models/characters/Hair_Buns.gltf b/public/models/characters/Hair_Buns.gltf new file mode 100644 index 0000000..eb63768 --- /dev/null +++ b/public/models/characters/Hair_Buns.gltf @@ -0,0 +1,1545 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.20467473566532135, + -4.759437705400649e-21, + 1.2439442348830942e-21, + 0.9788300395011902 + ], + "translation":[ + -1.5903435849255598e-27, + 0.0711912140250206, + 2.0489096641540527e-08 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.3088374435901642, + 8.337463586651673e-21, + -5.849849968646638e-21, + 0.95111483335495 + ], + "translation":[ + -1.0141478263557337e-20, + 0.19815585017204285, + 2.60770320892334e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -8.381903171539307e-09, + 1, + -1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + 1.0023382124302316e-09, + 7.603918037758783e-13, + -0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + 1.8987577732332284e-08, + 1.4024364247688936e-07, + -0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.0033091865479946136, + 0.7071018815040588, + -0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + 0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.0489096641540527e-08, + 1, + 6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + 2.420814304571195e-08, + 1.4173854798182894e-11, + -0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + -4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + -2.949975197452659e-08, + 1.402399334438087e-07, + 0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + 1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.007979890331625938, + 0.7070646286010742, + -0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + 0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + 8.381903171539307e-09, + 1, + 5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + -1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + -2.1800540039862426e-08, + 5.25581791629981e-12, + 0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + 1.03155857189563e-08, + 1.4017835781032773e-07, + -0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.01044775452464819, + 0.7070325016975403, + -0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 2.7474015951156616e-08, + 1, + 1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + 9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + 2.6234243222234e-08, + 4.3393351412124304e-11, + -0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + 7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + -1.8197205520209536e-08, + 1.4009778226409253e-07, + 0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + -9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + 0.0025809321086853743, + 0.7071049213409424, + 0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + -1.2782692238033633e-08, + 0.48539119958877563, + 2.0375746601075662e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -1.2670352589339018e-07, + 0.03127264976501465, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0012816648231819272, + 5.811178561998531e-05, + 0.0002541383437346667, + 0.9999991655349731 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 2.2436142899096012e-07, + 0.035620346665382385, + 5.122274160385132e-09 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0019128327257931232, + 0.00019216042710468173, + -0.0004484721284825355, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + 1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.263997346162796, + 0.9450139999389648, + 0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + 0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.02237604185938835, + -2.264418526465306e-06, + -3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + 1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.023802155628800392, + 8.208974031731486e-05, + -1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + -4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.17232586443424225, + 0.6858593225479126, + -0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + -0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5471324324607849, + -0.3204275965690613, + -0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -8.381903171539307e-09, + -1, + 1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + 1.0023382124302316e-09, + -7.603918037758783e-13, + 0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + 1.8987577732332284e-08, + -1.4024364247688936e-07, + 0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.0033091865479946136, + -0.7071018815040588, + 0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + -0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.0489096641540527e-08, + -1, + -6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + 2.420814304571195e-08, + -1.4173854798182894e-11, + 0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + 4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + -2.949975197452659e-08, + -1.402399334438087e-07, + -0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + -1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.007979890331625938, + -0.7070646286010742, + 0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + -0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + 8.381903171539307e-09, + -1, + -5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + 1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + -2.1800540039862426e-08, + -5.25581791629981e-12, + -0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.03155857189563e-08, + -1.4017835781032773e-07, + 0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.01044775452464819, + -0.7070325016975403, + 0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 2.7474015951156616e-08, + -1, + -1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + -9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + 2.6234243222234e-08, + -4.3393351412124304e-11, + 0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + -7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + -1.8197205520209536e-08, + -1.4009778226409253e-07, + -0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + 9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + 0.0025809321086853743, + -0.7071049213409424, + -0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + -2.5565388028780944e-08, + -0.48539119958877563, + -1.9393742434203887e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.2622331269085407e-07, + 0.031272709369659424, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0012816853122785687, + -5.809385038446635e-05, + -0.00025414914125576615, + 0.9999991655349731 + ], + "scale":[ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.0542134987190366e-07, + 0.03562036156654358, + -8.847564458847046e-09 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.001912830863147974, + -0.00019218510715290904, + 0.0004484682867769152, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + -1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.263997346162796, + -0.9450139999389648, + -0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + -0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.02237604185938835, + 2.264418526465306e-06, + 3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + -1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.023802155628800392, + -8.208974031731486e-05, + 1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + 4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.17232586443424225, + -0.6858593225479126, + 0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + 0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5471324324607849, + 0.3204275965690613, + 0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.10099761933088303, + 4.5928396448426806e-14, + -4.5242200827702583e-13, + 0.9948866963386536 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 4.6735704609246064e-20, + 0.12640145421028137, + 3.4924596548080444e-10 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.055728573352098465, + -4.992229150957428e-05, + -2.7864282401424134e-06, + 0.998445987701416 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999998807907104 + ], + "translation":[ + -4.263256414560601e-13, + 0.11034487932920456, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.06393160670995712, + 4.989771332475357e-05, + -3.19658010994317e-06, + 0.9979543089866638 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 0, + 0.12655510008335114, + -9.313225746154785e-10 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.204170985147357e-09 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + 1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + 0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.5897967386990786e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + -1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + -0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.7879695892333984, + 0, + 0, + 0.6157141923904419 + ], + "translation":[ + 0, + 0.045700013637542725, + 0.9318000078201294 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_Buns", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_2", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.7121212482452393 + } + } + ], + "meshes":[ + { + "name":"Hair_Buns", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_2_Normal", + "uri":"T_Hair_2_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_2_BaseColor", + "uri":"T_Hair_2_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":3501, + "max":[ + 0.1507568359375, + 1.7791515588760376, + 0.10265952348709106 + ], + "min":[ + -0.1507568359375, + 1.5300521850585938, + -0.13409538567066193 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":3501, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":3501, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":3501, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":3501, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":9852, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":42012, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":42012, + "byteOffset":42012, + "target":34962 + }, + { + "buffer":0, + "byteLength":28008, + "byteOffset":84024, + "target":34962 + }, + { + "buffer":0, + "byteLength":14004, + "byteOffset":112032, + "target":34962 + }, + { + "buffer":0, + "byteLength":56016, + "byteOffset":126036, + "target":34962 + }, + { + "buffer":0, + "byteLength":19704, + "byteOffset":182052, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":201756 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":205916, + "uri":"Hair_Buns.bin" + } + ] +} diff --git a/public/models/characters/Hair_Buzzed.bin b/public/models/characters/Hair_Buzzed.bin new file mode 100644 index 0000000..9d617b8 Binary files /dev/null and b/public/models/characters/Hair_Buzzed.bin differ diff --git a/public/models/characters/Hair_Buzzed.gltf b/public/models/characters/Hair_Buzzed.gltf new file mode 100644 index 0000000..41b3436 --- /dev/null +++ b/public/models/characters/Hair_Buzzed.gltf @@ -0,0 +1,1519 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.13207007944583893, + 0, + 0, + 0.991240382194519 + ], + "translation":[ + 0, + 0.08285234868526459, + 9.313225746154785e-09 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.25725916028022766, + 0, + 0, + 0.9663424491882324 + ], + "translation":[ + 0, + 0.21509313583374023, + 1.862645149230957e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -4.656613761255812e-09, + -1, + -1.8664633572962157e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 1.9281287677586079e-10, + 0.02411014772951603, + 1.6830044557991641e-07 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + -1.348770428677426e-09, + 3.689715200039245e-12, + -0.00018570991232991219, + 1 + ], + "translation":[ + -1.6689227777533233e-09, + 0.027911463752388954, + 1.6598225727193494e-07 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + -1.721623910100334e-08, + -3.9419649766614384e-08, + -0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -3.374225343577564e-10, + 0.0326123908162117, + 1.3817563626616902e-07 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.009757923893630505, + 0.7070369124412537, + -0.0097578726708889, + 0.7070420384407043 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.009400011971592903, + 0.11500009149312973, + 0.03249999135732651 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.421438694000244e-08, + -1, + -9.97962698806934e-14, + 3.65177675121231e-06 + ], + "translation":[ + 5.168658390175551e-09, + 0.030519818887114525, + 2.3142732175074343e-08 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + -1.0311108411542591e-08, + 2.617175920427428e-11, + -0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 3.3051037462428212e-09, + 0.03011666052043438, + 1.2451241104827204e-07 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + 1.5643285777855453e-08, + -3.913748614081669e-08, + 0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.090484147425741e-09, + 0.03752619028091431, + 1.5301162648029276e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.013192507438361645, + 0.7069811820983887, + -0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + 0.0069999718107283115, + 0.11260004341602325, + 0.0069999960251152515 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + -2.2351745343485163e-08, + -1, + 1.2562023090582214e-13, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.033640728564933e-08, + 0.021523205563426018, + -2.814113031490706e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + 3.383408886392658e-09, + -9.627411715062983e-12, + 0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.8849171940237284e-09, + 0.02743077464401722, + -3.729670083885139e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + -1.035459185061427e-08, + -3.897551081877282e-08, + -0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + -1.0922121873591095e-08, + 0.031630996614694595, + 7.067205842758995e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.015652360394597054, + 0.706930935382843, + -0.01565224677324295, + 0.7069361209869385 + ], + "translation":[ + 0.009000067599117756, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 1.1641533959050321e-08, + -1, + -4.1919619902033856e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -3.835339157376438e-09, + 0.029101530089974403, + 3.391749459069615e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + -2.4604773329883756e-08, + 6.235185284753086e-11, + -0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -8.026290743146092e-09, + 0.028300149366259575, + 1.1107826480838412e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + 1.7517091777108362e-08, + -3.9449915334444086e-08, + 0.0023997032549232244, + 0.9999971389770508 + ], + "translation":[ + -5.185938789509237e-09, + 0.0360012948513031, + 1.464196230926973e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + -0.0029462252277880907, + 0.7070980072021484, + -0.0029462038073688745, + 0.7071032524108887 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + 0.00730002298951149, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + 2.2672955068969713e-08, + 0.4282083213329315, + -1.3036950008427084e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999998807907104, + 1, + 1 + ], + "translation":[ + -1.0710209608078003e-07, + 0.03459959849715233, + 6.51925802230835e-09 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0003726967261172831, + 2.6525931389187463e-05, + 0.00011462579277576879, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 1, + 1 + ], + "translation":[ + 3.5608536563813686e-08, + 0.03922773152589798, + -5.168840289115906e-08 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0008555729873478413, + 3.4565124224172905e-05, + -0.0004891895223408937, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.83063093572855e-07, + 0.039565373212099075, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.30099350214004517, + 0.9291350841522217, + 0.21020177006721497, + 0.04388770833611488 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.021399976685643196, + 0.027700087055563927, + 0.02740001305937767 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.015807554125785828, + -1.1323515991534805e-06, + -1.859292275696589e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 8.156474962106586e-08, + 0.24042010307312012, + -3.2514435588382185e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.03093818761408329, + 4.2500738345552236e-05, + -1.2440405043889768e-06, + 0.9995213150978088 + ], + "translation":[ + -4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.16515187919139862, + 0.6876330971717834, + -0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5359424352645874, + -0.3172530233860016, + -0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + 0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -4.656613761255812e-09, + 1, + -9.069184307350635e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -1.9281287677586079e-10, + 0.02411014772951603, + 1.6830023241709569e-07 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + -1.3487808647738575e-09, + -3.968936290732472e-12, + 0.00018570991232991219, + 1 + ], + "translation":[ + 1.6707417671568692e-09, + 0.027911463752388954, + 1.659820298982595e-07 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + -4.891389959738035e-09, + 3.925104508084587e-08, + 0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -1.2369127944111824e-10, + 0.032612428069114685, + 1.5866616820403578e-07 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.00975793320685625, + -0.7070369720458984, + 0.009757863357663155, + 0.7070419788360596 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.00940000731498003, + 0.11500009149312973, + 0.032499995082616806 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.421438694000244e-08, + 1, + 8.419702652098793e-14, + 3.65177675121231e-06 + ], + "translation":[ + -5.168658390175551e-09, + 0.030519818887114525, + 2.3141225824474532e-08 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + -1.0311155484998835e-08, + -2.69988770923435e-11, + 0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -3.306013240944594e-09, + 0.03011666052043438, + 1.2451081943254394e-07 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + 1.3419549915738571e-08, + 3.920036917293146e-08, + -0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -1.2823875294998288e-09, + 0.03752618655562401, + 1.4930063230167434e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.013192505575716496, + -0.7069811820983887, + 0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + -0.006999965291470289, + 0.11260004341602325, + 0.0069999974220991135 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + -2.2351745343485163e-08, + 1, + -9.381222605383058e-14, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.0335497790947556e-08, + 0.02152320370078087, + -2.814119568483875e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + 3.383400670742276e-09, + 9.110491007435773e-12, + -0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.8858266887255013e-09, + 0.02743077091872692, + -3.729741138158715e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.908002644768203e-09, + 3.8693851678317515e-08, + 0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + 4.2391548049636185e-09, + 0.03163096681237221, + 9.059564831659372e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.0156523697078228, + -0.7069309949874878, + 0.015652237460017204, + 0.7069360613822937 + ], + "translation":[ + -0.009000054560601711, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 1.1641533959050321e-08, + 1, + 3.932434822109636e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 3.835339157376438e-09, + 0.029101528227329254, + 3.391586744783126e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + -2.4604839055086813e-08, + -5.959530785526468e-11, + 0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 8.026290743146092e-09, + 0.028300149366259575, + 1.1107695030432296e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + 1.7020420628455213e-08, + 3.94586443519529e-08, + -0.0023997037205845118, + 0.9999971389770508 + ], + "translation":[ + 6.081791070755571e-09, + 0.0360012948513031, + 1.4559928729340754e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + -0.002946224994957447, + -0.7070980668067932, + 0.002946204040199518, + 0.7071031928062439 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + -0.007300012744963169, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + 2.2672949739899195e-08, + -0.4282083213329315, + 1.8189894035458565e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.671724021434784e-07, + 0.03459971770644188, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0003726781578734517, + -2.651103204698302e-05, + -0.00011462859401945025, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 0.9999999403953552, + 0.9999998807907104 + ], + "translation":[ + -1.8476566765457392e-07, + 0.03922785073518753, + -2.2351741790771484e-08 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.000855587946716696, + -3.4503656934248284e-05, + 0.0004891885910183191, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999998807907104, + 0.9999998807907104 + ], + "translation":[ + -5.372567102313042e-08, + 0.03956543654203415, + -2.60770320892334e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.30099350214004517, + -0.9291350841522217, + -0.21020175516605377, + 0.04388761147856712 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.02139997109770775, + 0.027700087055563927, + 0.02740001119673252 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.015807554125785828, + 1.2515496337073273e-06, + 1.8592521300320186e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + -9.193168182264344e-08, + 0.24042010307312012, + -5.398987923399545e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.03093818761408329, + -4.256031024851836e-05, + 1.2421967312548077e-06, + 0.9995213150978088 + ], + "translation":[ + 4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.16515187919139862, + -0.6876330971717834, + 0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5359424352645874, + 0.3172530233860016, + 0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + -0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.12418898940086365, + 0, + 0, + 0.9922585487365723 + ], + "translation":[ + 0, + 0.1331336796283722, + 0 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.03958535194396973, + 0, + 0, + 0.9992161989212036 + ], + "translation":[ + 0, + 0.10634974390268326, + -1.3969838619232178e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.09185619652271271, + 0, + 0, + 0.9957723021507263 + ], + "translation":[ + 0, + 0.1280922144651413, + -3.259629011154175e-08 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -2.1363266711205142e-10 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + -7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + 0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -1.1364305052552481e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + 7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + -0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.8005710244178772, + 0, + 0, + 0.5992379188537598 + ], + "translation":[ + 0, + 0.042999982833862305, + 0.9491000175476074 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_Buzzed", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_1", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0 + } + } + ], + "meshes":[ + { + "name":"Cylinder.002", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_1_Normal", + "uri":"T_Hair_1_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_1_BaseColor", + "uri":"T_Hair_1_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":466, + "max":[ + 0.0772952064871788, + 1.813513159751892, + 0.08289127051830292 + ], + "min":[ + -0.07729528844356537, + 1.6441489458084106, + -0.10803250223398209 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":466, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":466, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":466, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":466, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":2490, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":5592, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":5592, + "byteOffset":5592, + "target":34962 + }, + { + "buffer":0, + "byteLength":3728, + "byteOffset":11184, + "target":34962 + }, + { + "buffer":0, + "byteLength":1864, + "byteOffset":14912, + "target":34962 + }, + { + "buffer":0, + "byteLength":7456, + "byteOffset":16776, + "target":34962 + }, + { + "buffer":0, + "byteLength":4980, + "byteOffset":24232, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":29212 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":33372, + "uri":"Hair_Buzzed.bin" + } + ] +} diff --git a/public/models/characters/Hair_BuzzedFemale.bin b/public/models/characters/Hair_BuzzedFemale.bin new file mode 100644 index 0000000..70c8b95 Binary files /dev/null and b/public/models/characters/Hair_BuzzedFemale.bin differ diff --git a/public/models/characters/Hair_BuzzedFemale.gltf b/public/models/characters/Hair_BuzzedFemale.gltf new file mode 100644 index 0000000..3ab8630 --- /dev/null +++ b/public/models/characters/Hair_BuzzedFemale.gltf @@ -0,0 +1,1544 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.20467473566532135, + -4.759437705400649e-21, + 1.2439442348830942e-21, + 0.9788300395011902 + ], + "translation":[ + -1.5903435849255598e-27, + 0.0711912140250206, + 2.0489096641540527e-08 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.3088374435901642, + 8.337463586651673e-21, + -5.849849968646638e-21, + 0.95111483335495 + ], + "translation":[ + -1.0141478263557337e-20, + 0.19815585017204285, + 2.60770320892334e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -8.381903171539307e-09, + 1, + -1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + 1.0023382124302316e-09, + 7.603918037758783e-13, + -0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + 1.8987577732332284e-08, + 1.4024364247688936e-07, + -0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.0033091865479946136, + 0.7071018815040588, + -0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + 0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.0489096641540527e-08, + 1, + 6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + 2.420814304571195e-08, + 1.4173854798182894e-11, + -0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + -4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + -2.949975197452659e-08, + 1.402399334438087e-07, + 0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + 1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.007979890331625938, + 0.7070646286010742, + -0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + 0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + 8.381903171539307e-09, + 1, + 5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + -1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + -2.1800540039862426e-08, + 5.25581791629981e-12, + 0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + 1.03155857189563e-08, + 1.4017835781032773e-07, + -0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.01044775452464819, + 0.7070325016975403, + -0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 2.7474015951156616e-08, + 1, + 1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + 9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + 2.6234243222234e-08, + 4.3393351412124304e-11, + -0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + 7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + -1.8197205520209536e-08, + 1.4009778226409253e-07, + 0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + -9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + 0.0025809321086853743, + 0.7071049213409424, + 0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + -1.2782692238033633e-08, + 0.48539119958877563, + 2.0375746601075662e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -1.2670352589339018e-07, + 0.03127264976501465, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0012816648231819272, + 5.811178561998531e-05, + 0.0002541383437346667, + 0.9999991655349731 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 2.2436142899096012e-07, + 0.035620346665382385, + 5.122274160385132e-09 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0019128327257931232, + 0.00019216042710468173, + -0.0004484721284825355, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + 1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.263997346162796, + 0.9450139999389648, + 0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + 0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.02237604185938835, + -2.264418526465306e-06, + -3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + 1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.023802155628800392, + 8.208974031731486e-05, + -1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + -4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.17232586443424225, + 0.6858593225479126, + -0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + -0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5471324324607849, + -0.3204275965690613, + -0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -8.381903171539307e-09, + -1, + 1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + 1.0023382124302316e-09, + -7.603918037758783e-13, + 0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + 1.8987577732332284e-08, + -1.4024364247688936e-07, + 0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.0033091865479946136, + -0.7071018815040588, + 0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + -0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.0489096641540527e-08, + -1, + -6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + 2.420814304571195e-08, + -1.4173854798182894e-11, + 0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + 4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + -2.949975197452659e-08, + -1.402399334438087e-07, + -0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + -1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.007979890331625938, + -0.7070646286010742, + 0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + -0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + 8.381903171539307e-09, + -1, + -5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + 1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + -2.1800540039862426e-08, + -5.25581791629981e-12, + -0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.03155857189563e-08, + -1.4017835781032773e-07, + 0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.01044775452464819, + -0.7070325016975403, + 0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 2.7474015951156616e-08, + -1, + -1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + -9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + 2.6234243222234e-08, + -4.3393351412124304e-11, + 0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + -7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + -1.8197205520209536e-08, + -1.4009778226409253e-07, + -0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + 9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + 0.0025809321086853743, + -0.7071049213409424, + -0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + -2.5565388028780944e-08, + -0.48539119958877563, + -1.9393742434203887e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.2622331269085407e-07, + 0.031272709369659424, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0012816853122785687, + -5.809385038446635e-05, + -0.00025414914125576615, + 0.9999991655349731 + ], + "scale":[ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.0542134987190366e-07, + 0.03562036156654358, + -8.847564458847046e-09 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.001912830863147974, + -0.00019218510715290904, + 0.0004484682867769152, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + -1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.263997346162796, + -0.9450139999389648, + -0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + -0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.02237604185938835, + 2.264418526465306e-06, + 3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + -1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.023802155628800392, + -8.208974031731486e-05, + 1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + 4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.17232586443424225, + -0.6858593225479126, + 0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + 0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5471324324607849, + 0.3204275965690613, + 0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.10099761933088303, + 4.5928396448426806e-14, + -4.5242200827702583e-13, + 0.9948866963386536 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 4.6735704609246064e-20, + 0.12640145421028137, + 3.4924596548080444e-10 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.055728573352098465, + -4.992229150957428e-05, + -2.7864282401424134e-06, + 0.998445987701416 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999998807907104 + ], + "translation":[ + -4.263256414560601e-13, + 0.11034487932920456, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.06393160670995712, + 4.989771332475357e-05, + -3.19658010994317e-06, + 0.9979543089866638 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 0, + 0.12655510008335114, + -9.313225746154785e-10 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.204170985147357e-09 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + 1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + 0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.5897967386990786e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + -1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + -0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.7879695892333984, + 0, + 0, + 0.6157141923904419 + ], + "translation":[ + 0, + 0.045700013637542725, + 0.9318000078201294 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_BuzzedFemale", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_1", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0 + } + } + ], + "meshes":[ + { + "name":"Hair_BuzzedFemale", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_1_Normal", + "uri":"T_Hair_1_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_1_BaseColor", + "uri":"T_Hair_1_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":466, + "max":[ + 0.07933114469051361, + 1.7709248065948486, + 0.08289240300655365 + ], + "min":[ + -0.07933114469051361, + 1.600769281387329, + -0.11473648250102997 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":466, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":466, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":466, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":466, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":2490, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":5592, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":5592, + "byteOffset":5592, + "target":34962 + }, + { + "buffer":0, + "byteLength":3728, + "byteOffset":11184, + "target":34962 + }, + { + "buffer":0, + "byteLength":1864, + "byteOffset":14912, + "target":34962 + }, + { + "buffer":0, + "byteLength":7456, + "byteOffset":16776, + "target":34962 + }, + { + "buffer":0, + "byteLength":4980, + "byteOffset":24232, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":29212 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":33372, + "uri":"Hair_BuzzedFemale.bin" + } + ] +} diff --git a/public/models/characters/Hair_Long.bin b/public/models/characters/Hair_Long.bin new file mode 100644 index 0000000..6dd35df Binary files /dev/null and b/public/models/characters/Hair_Long.bin differ diff --git a/public/models/characters/Hair_Long.gltf b/public/models/characters/Hair_Long.gltf new file mode 100644 index 0000000..cbe0388 --- /dev/null +++ b/public/models/characters/Hair_Long.gltf @@ -0,0 +1,1545 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.20467473566532135, + -4.759437705400649e-21, + 1.2439442348830942e-21, + 0.9788300395011902 + ], + "translation":[ + -1.5903435849255598e-27, + 0.0711912140250206, + 2.0489096641540527e-08 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.3088374435901642, + 8.337463586651673e-21, + -5.849849968646638e-21, + 0.95111483335495 + ], + "translation":[ + -1.0141478263557337e-20, + 0.19815585017204285, + 2.60770320892334e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -8.381903171539307e-09, + 1, + -1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + 1.0023382124302316e-09, + 7.603918037758783e-13, + -0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + 1.8987577732332284e-08, + 1.4024364247688936e-07, + -0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.0033091865479946136, + 0.7071018815040588, + -0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + 0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.0489096641540527e-08, + 1, + 6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + 2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + 2.420814304571195e-08, + 1.4173854798182894e-11, + -0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + -4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + -2.949975197452659e-08, + 1.402399334438087e-07, + 0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + 1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.007979890331625938, + 0.7070646286010742, + -0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + 0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + 8.381903171539307e-09, + 1, + 5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + -1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + -2.1800540039862426e-08, + 5.25581791629981e-12, + 0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + 1.03155857189563e-08, + 1.4017835781032773e-07, + -0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.01044775452464819, + 0.7070325016975403, + -0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 2.7474015951156616e-08, + 1, + 1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + 9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + 2.6234243222234e-08, + 4.3393351412124304e-11, + -0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + 7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + -1.8197205520209536e-08, + 1.4009778226409253e-07, + 0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + -9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + 0.0025809321086853743, + 0.7071049213409424, + 0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + 0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + -1.2782692238033633e-08, + 0.48539119958877563, + 2.0375746601075662e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -1.2670352589339018e-07, + 0.03127264976501465, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0012816648231819272, + 5.811178561998531e-05, + 0.0002541383437346667, + 0.9999991655349731 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 2.2436142899096012e-07, + 0.035620346665382385, + 5.122274160385132e-09 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0019128327257931232, + 0.00019216042710468173, + -0.0004484721284825355, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + 1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.263997346162796, + 0.9450139999389648, + 0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + 0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.02237604185938835, + -2.264418526465306e-06, + -3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + 1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.023802155628800392, + 8.208974031731486e-05, + -1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + -4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.17232586443424225, + 0.6858593225479126, + -0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + -0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5471324324607849, + -0.3204275965690613, + -0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -8.381903171539307e-09, + -1, + 1.5432005174599583e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -9.076757123693824e-10, + 0.023510519415140152, + -3.8285477899080433e-08 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + 1.0023382124302316e-09, + -7.603918037758783e-13, + 0.00013328436762094498, + 1 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -4.420144250616431e-10, + 0.027111778035759926, + -3.670398029953503e-08 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + 1.8987577732332284e-08, + -1.4024364247688936e-07, + 0.002140256343409419, + 0.9999977350234985 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -8.094502845779061e-11, + 0.03171013668179512, + -6.863018597869086e-09 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.0033091865479946136, + -0.7071018815040588, + 0.003309202380478382, + 0.7070961594581604 + ], + "translation":[ + -0.004199977032840252, + 0.08823654055595398, + 0.03620496019721031 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.0489096641540527e-08, + -1, + -6.335320587363621e-14, + 3.6517765238386346e-06 + ], + "translation":[ + -2.193701220676303e-09, + 0.029620492830872536, + 1.1362611473941797e-07 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + 2.420814304571195e-08, + -1.4173854798182894e-11, + 0.0032189602497965097, + 0.9999948143959045 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 1 + ], + "translation":[ + 4.32646629633382e-09, + 0.02931377850472927, + 3.287611605173879e-08 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + -2.949975197452659e-08, + -1.402399334438087e-07, + -0.0038676888216286898, + 0.9999924898147583 + ], + "translation":[ + -1.6816557035781443e-09, + 0.03642695024609566, + 1.0210540324351314e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.007979890331625938, + -0.7070646286010742, + 0.007979941554367542, + 0.7070589065551758 + ], + "scale":[ + 1, + 0.9999998807907104, + 1 + ], + "translation":[ + -0.001899929717183113, + 0.08634158223867416, + 0.010671664960682392 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + 8.381903171539307e-09, + -1, + -5.647658583201112e-14, + 3.65177675121231e-06 + ], + "translation":[ + 1.317857822868973e-09, + 0.020919334143400192, + -1.727942162688123e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + -2.1800540039862426e-08, + -5.25581791629981e-12, + -0.0028988486155867577, + 0.9999958276748657 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 1.318767317570746e-09, + 0.026631725952029228, + -8.721048061488545e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.03155857189563e-08, + -1.4017835781032773e-07, + 0.001705002854578197, + 0.9999985694885254 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.967681211885065e-09, + 0.03083186410367489, + -8.672896001371555e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.01044775452464819, + -0.7070325016975403, + 0.010447824373841286, + 0.7070267200469971 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.003799965837970376, + 0.06994835287332535, + -0.03399413824081421 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 2.7474015951156616e-08, + -1, + -1.0721373739979931e-13, + 3.65177675121231e-06 + ], + "translation":[ + -9.5042196335271e-10, + 0.028301579877734184, + -3.474425369631717e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + 2.6234243222234e-08, + -4.3393351412124304e-11, + 0.0034884933847934008, + 0.9999939203262329 + ], + "translation":[ + -7.703420124016702e-09, + 0.027600184082984924, + -1.1280478418029816e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + -1.8197205520209536e-08, + -1.4009778226409253e-07, + -0.002474082401022315, + 0.9999969601631165 + ], + "translation":[ + 9.877112461254e-10, + 0.035001225769519806, + -1.5782489981575054e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + 0.0025809321086853743, + -0.7071049213409424, + -0.0025809479411691427, + 0.707099199295044 + ], + "scale":[ + 0.9999999403953552, + 0.9999997615814209, + 0.9999999403953552 + ], + "translation":[ + -0.0021999571472406387, + 0.08042963594198227, + -0.013825255446135998 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + -2.5565388028780944e-08, + -0.48539119958877563, + -1.9393742434203887e-07, + 0.8742970824241638 + ], + "scale":[ + 0.9999998807907104, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.2622331269085407e-07, + 0.031272709369659424, + 3.073364496231079e-08 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0012816853122785687, + -5.809385038446635e-05, + -0.00025414914125576615, + 0.9999991655349731 + ], + "scale":[ + 1.0000001192092896, + 1.0000001192092896, + 1 + ], + "translation":[ + -1.0542134987190366e-07, + 0.03562036156654358, + -8.847564458847046e-09 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.001912830863147974, + -0.00019218510715290904, + 0.0004484682867769152, + 0.9999980330467224 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999999403953552 + ], + "translation":[ + -1.453081495128572e-07, + 0.03582108020782471, + -1.30385160446167e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.263997346162796, + -0.9450139999389648, + -0.1882738322019577, + 0.04250776767730713 + ], + "scale":[ + 1, + 1.0000004768371582, + 1 + ], + "translation":[ + -0.009999980218708515, + -0.0028757674153894186, + 0.029958141967654228 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.02237604185938835, + 2.264418526465306e-06, + 3.032003448311116e-08, + 0.9997496008872986 + ], + "translation":[ + -1.532122695380167e-08, + 0.24930401146411896, + 5.277343007037416e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.023802155628800392, + -8.208974031731486e-05, + 1.8556972918304382e-06, + 0.9997166991233826 + ], + "translation":[ + 4.793889729626244e-08, + 0.2403421401977539, + -4.220055416226387e-09 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.17232586443424225, + -0.6858593225479126, + 0.1717943400144577, + 0.68584805727005 + ], + "scale":[ + 1, + 1, + 1.0000001192092896 + ], + "translation":[ + 0.0016045584343373775, + 0.1410660296678543, + -0.01228591613471508 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5471324324607849, + 0.3204275965690613, + 0.39127784967422485, + 0.666988730430603 + ], + "scale":[ + 1, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -0.02930000051856041, + 0.13370320200920105, + 0.0448194220662117 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.10099761933088303, + 4.5928396448426806e-14, + -4.5242200827702583e-13, + 0.9948866963386536 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 4.6735704609246064e-20, + 0.12640145421028137, + 3.4924596548080444e-10 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.055728573352098465, + -4.992229150957428e-05, + -2.7864282401424134e-06, + 0.998445987701416 + ], + "scale":[ + 1, + 0.9999998211860657, + 0.9999998807907104 + ], + "translation":[ + -4.263256414560601e-13, + 0.11034487932920456, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.06393160670995712, + 4.989771332475357e-05, + -3.19658010994317e-06, + 0.9979543089866638 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 0, + 0.12655510008335114, + -9.313225746154785e-10 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.204170985147357e-09 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + 1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + 0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 0, + 0.00017269056115765125, + 5.421010862427522e-20, + 1 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 5.525180313270539e-10, + 0.06809987872838974, + -1.5897967386990786e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -3.296312570455484e-05, + 0.9816133975982666, + -0.1908797174692154, + 0.00016951537691056728 + ], + "scale":[ + 1, + 1.0000001192092896, + 0.9999998807907104 + ], + "translation":[ + -1.4901161193847656e-08, + 0.14916980266571045, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5978578329086304, + 0, + 0, + 0.8016021847724915 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4661003053188324, + 2.7939677238464355e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.0712229460477829, + 0, + 0, + 0.9974604249000549 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 7.450580596923828e-09, + 0.4098641872406006, + 1.3969838619232178e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9893749952316284, + 0, + 0, + 0.1453862488269806 + ], + "scale":[ + 1, + 1, + 1.0000014305114746 + ], + "translation":[ + -0.11140000075101852, + 0.010460092686116695, + -0.008893024176359177 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.7879695892333984, + 0, + 0, + 0.6157141923904419 + ], + "translation":[ + 0, + 0.045700013637542725, + 0.9318000078201294 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_Long", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_2", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0, + "roughnessFactor":0.7121212482452393 + } + } + ], + "meshes":[ + { + "name":"Hair_Long", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_2_Normal", + "uri":"T_Hair_2_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_2_BaseColor", + "uri":"T_Hair_2_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":3080, + "max":[ + 0.12235528230667114, + 1.7772293090820312, + 0.10885592550039291 + ], + "min":[ + -0.12235528230667114, + 1.5008693933486938, + -0.1615893542766571 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":3080, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":3080, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":3080, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":3080, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":8718, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":36960, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":36960, + "byteOffset":36960, + "target":34962 + }, + { + "buffer":0, + "byteLength":24640, + "byteOffset":73920, + "target":34962 + }, + { + "buffer":0, + "byteLength":12320, + "byteOffset":98560, + "target":34962 + }, + { + "buffer":0, + "byteLength":49280, + "byteOffset":110880, + "target":34962 + }, + { + "buffer":0, + "byteLength":17436, + "byteOffset":160160, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":177596 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":181756, + "uri":"Hair_Long.bin" + } + ] +} diff --git a/public/models/characters/Hair_SimpleParted.bin b/public/models/characters/Hair_SimpleParted.bin new file mode 100644 index 0000000..7acd443 Binary files /dev/null and b/public/models/characters/Hair_SimpleParted.bin differ diff --git a/public/models/characters/Hair_SimpleParted.gltf b/public/models/characters/Hair_SimpleParted.gltf new file mode 100644 index 0000000..1f62944 --- /dev/null +++ b/public/models/characters/Hair_SimpleParted.gltf @@ -0,0 +1,1519 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.3.47", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 66 + ] + } + ], + "nodes":[ + { + "name":"Head", + "rotation":[ + -0.13207007944583893, + 0, + 0, + 0.991240382194519 + ], + "translation":[ + 0, + 0.08285234868526459, + 9.313225746154785e-09 + ] + }, + { + "children":[ + 0 + ], + "name":"neck_01", + "rotation":[ + 0.25725916028022766, + 0, + 0, + 0.9663424491882324 + ], + "translation":[ + 0, + 0.21509313583374023, + 1.862645149230957e-08 + ] + }, + { + "name":"index_04_leaf_l", + "rotation":[ + -4.656613761255812e-09, + -1, + -1.8664633572962157e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 1.9281287677586079e-10, + 0.02411014772951603, + 1.6830044557991641e-07 + ] + }, + { + "children":[ + 2 + ], + "name":"index_03_l", + "rotation":[ + -1.348770428677426e-09, + 3.689715200039245e-12, + -0.00018570991232991219, + 1 + ], + "translation":[ + -1.6689227777533233e-09, + 0.027911463752388954, + 1.6598225727193494e-07 + ] + }, + { + "children":[ + 3 + ], + "name":"index_02_l", + "rotation":[ + -1.721623910100334e-08, + -3.9419649766614384e-08, + -0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -3.374225343577564e-10, + 0.0326123908162117, + 1.3817563626616902e-07 + ] + }, + { + "children":[ + 4 + ], + "name":"index_01_l", + "rotation":[ + -0.009757923893630505, + 0.7070369124412537, + -0.0097578726708889, + 0.7070420384407043 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.009400011971592903, + 0.11500009149312973, + 0.03249999135732651 + ] + }, + { + "name":"middle_04_leaf_l", + "rotation":[ + 2.421438694000244e-08, + -1, + -9.97962698806934e-14, + 3.65177675121231e-06 + ], + "translation":[ + 5.168658390175551e-09, + 0.030519818887114525, + 2.3142732175074343e-08 + ] + }, + { + "children":[ + 6 + ], + "name":"middle_03_l", + "rotation":[ + -1.0311108411542591e-08, + 2.617175920427428e-11, + -0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 3.3051037462428212e-09, + 0.03011666052043438, + 1.2451241104827204e-07 + ] + }, + { + "children":[ + 7 + ], + "name":"middle_02_l", + "rotation":[ + 1.5643285777855453e-08, + -3.913748614081669e-08, + 0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + 1.090484147425741e-09, + 0.03752619028091431, + 1.5301162648029276e-07 + ] + }, + { + "children":[ + 8 + ], + "name":"middle_01_l", + "rotation":[ + -0.013192507438361645, + 0.7069811820983887, + -0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + 0.0069999718107283115, + 0.11260004341602325, + 0.0069999960251152515 + ] + }, + { + "name":"pinky_04_leaf_l", + "rotation":[ + -2.2351745343485163e-08, + -1, + 1.2562023090582214e-13, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.033640728564933e-08, + 0.021523205563426018, + -2.814113031490706e-07 + ] + }, + { + "children":[ + 10 + ], + "name":"pinky_03_l", + "rotation":[ + 3.383408886392658e-09, + -9.627411715062983e-12, + 0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 2.8849171940237284e-09, + 0.02743077464401722, + -3.729670083885139e-08 + ] + }, + { + "children":[ + 11 + ], + "name":"pinky_02_l", + "rotation":[ + -1.035459185061427e-08, + -3.897551081877282e-08, + -0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + -1.0922121873591095e-08, + 0.031630996614694595, + 7.067205842758995e-08 + ] + }, + { + "children":[ + 12 + ], + "name":"pinky_01_l", + "rotation":[ + -0.015652360394597054, + 0.706930935382843, + -0.01565224677324295, + 0.7069361209869385 + ], + "translation":[ + 0.009000067599117756, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_l", + "rotation":[ + 1.1641533959050321e-08, + -1, + -4.1919619902033856e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -3.835339157376438e-09, + 0.029101530089974403, + 3.391749459069615e-08 + ] + }, + { + "children":[ + 14 + ], + "name":"ring_03_l", + "rotation":[ + -2.4604773329883756e-08, + 6.235185284753086e-11, + -0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -8.026290743146092e-09, + 0.028300149366259575, + 1.1107826480838412e-07 + ] + }, + { + "children":[ + 15 + ], + "name":"ring_02_l", + "rotation":[ + 1.7517091777108362e-08, + -3.9449915334444086e-08, + 0.0023997032549232244, + 0.9999971389770508 + ], + "translation":[ + -5.185938789509237e-09, + 0.0360012948513031, + 1.464196230926973e-07 + ] + }, + { + "children":[ + 16 + ], + "name":"ring_01_l", + "rotation":[ + -0.0029462252277880907, + 0.7070980072021484, + -0.0029462038073688745, + 0.7071032524108887 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + 0.00730002298951149, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_l", + "rotation":[ + 2.2672955068969713e-08, + 0.4282083213329315, + -1.3036950008427084e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999998807907104, + 1, + 1 + ], + "translation":[ + -1.0710209608078003e-07, + 0.03459959849715233, + 6.51925802230835e-09 + ] + }, + { + "children":[ + 18 + ], + "name":"thumb_03_l", + "rotation":[ + -0.0003726967261172831, + 2.6525931389187463e-05, + 0.00011462579277576879, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 1, + 1 + ], + "translation":[ + 3.5608536563813686e-08, + 0.03922773152589798, + -5.168840289115906e-08 + ] + }, + { + "children":[ + 19 + ], + "name":"thumb_02_l", + "rotation":[ + 0.0008555729873478413, + 3.4565124224172905e-05, + -0.0004891895223408937, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.83063093572855e-07, + 0.039565373212099075, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 20 + ], + "name":"thumb_01_l", + "rotation":[ + 0.30099350214004517, + 0.9291350841522217, + 0.21020177006721497, + 0.04388770833611488 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + 0.021399976685643196, + 0.027700087055563927, + 0.02740001305937767 + ] + }, + { + "children":[ + 5, + 9, + 13, + 17, + 21 + ], + "name":"hand_l", + "rotation":[ + -0.015807554125785828, + -1.1323515991534805e-06, + -1.859292275696589e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + 8.156474962106586e-08, + 0.24042010307312012, + -3.2514435588382185e-09 + ] + }, + { + "children":[ + 22 + ], + "name":"lowerarm_l", + "rotation":[ + 0.03093818761408329, + 4.2500738345552236e-05, + -1.2440405043889768e-06, + 0.9995213150978088 + ], + "translation":[ + -4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 23 + ], + "name":"upperarm_l", + "rotation":[ + 0.16515187919139862, + 0.6876330971717834, + -0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 24 + ], + "name":"clavicle_l", + "rotation":[ + -0.5359424352645874, + -0.3172530233860016, + -0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + 0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "name":"index_04_leaf_r", + "rotation":[ + -4.656613761255812e-09, + 1, + -9.069184307350635e-15, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + -1.9281287677586079e-10, + 0.02411014772951603, + 1.6830023241709569e-07 + ] + }, + { + "children":[ + 26 + ], + "name":"index_03_r", + "rotation":[ + -1.3487808647738575e-09, + -3.968936290732472e-12, + 0.00018570991232991219, + 1 + ], + "translation":[ + 1.6707417671568692e-09, + 0.027911463752388954, + 1.659820298982595e-07 + ] + }, + { + "children":[ + 27 + ], + "name":"index_02_r", + "rotation":[ + -4.891389959738035e-09, + 3.925104508084587e-08, + 0.0005329284467734396, + 0.9999998807907104 + ], + "translation":[ + -1.2369127944111824e-10, + 0.032612428069114685, + 1.5866616820403578e-07 + ] + }, + { + "children":[ + 28 + ], + "name":"index_01_r", + "rotation":[ + -0.00975793320685625, + -0.7070369720458984, + 0.009757863357663155, + 0.7070419788360596 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.00940000731498003, + 0.11500009149312973, + 0.032499995082616806 + ] + }, + { + "name":"middle_04_leaf_r", + "rotation":[ + 2.421438694000244e-08, + 1, + 8.419702652098793e-14, + 3.65177675121231e-06 + ], + "translation":[ + -5.168658390175551e-09, + 0.030519818887114525, + 2.3141225824474532e-08 + ] + }, + { + "children":[ + 30 + ], + "name":"middle_03_r", + "rotation":[ + -1.0311155484998835e-08, + -2.69988770923435e-11, + 0.001419748761691153, + 0.9999989867210388 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + -3.306013240944594e-09, + 0.03011666052043438, + 1.2451081943254394e-07 + ] + }, + { + "children":[ + 31 + ], + "name":"middle_02_r", + "rotation":[ + 1.3419549915738571e-08, + 3.920036917293146e-08, + -0.0020527271553874016, + 0.9999979138374329 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 0.9999999403953552 + ], + "translation":[ + -1.2823875294998288e-09, + 0.03752618655562401, + 1.4930063230167434e-07 + ] + }, + { + "children":[ + 32 + ], + "name":"middle_01_r", + "rotation":[ + -0.013192505575716496, + -0.7069811820983887, + 0.013192412443459034, + 0.7069862484931946 + ], + "scale":[ + 0.9999999403953552, + 0.9999998807907104, + 0.9999999403953552 + ], + "translation":[ + -0.006999965291470289, + 0.11260004341602325, + 0.0069999974220991135 + ] + }, + { + "name":"pinky_04_leaf_r", + "rotation":[ + -2.2351745343485163e-08, + 1, + -9.381222605383058e-14, + 3.651776296464959e-06 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -1.0335497790947556e-08, + 0.02152320370078087, + -2.814119568483875e-07 + ] + }, + { + "children":[ + 34 + ], + "name":"pinky_03_r", + "rotation":[ + 3.383400670742276e-09, + 9.110491007435773e-12, + -0.0004658793332055211, + 0.9999998807907104 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + -2.8858266887255013e-09, + 0.02743077091872692, + -3.729741138158715e-08 + ] + }, + { + "children":[ + 35 + ], + "name":"pinky_02_r", + "rotation":[ + 1.908002644768203e-09, + 3.8693851678317515e-08, + 0.0015674028545618057, + 0.9999988079071045 + ], + "translation":[ + 4.2391548049636185e-09, + 0.03163096681237221, + 9.059564831659372e-08 + ] + }, + { + "children":[ + 36 + ], + "name":"pinky_01_r", + "rotation":[ + -0.0156523697078228, + -0.7069309949874878, + 0.015652237460017204, + 0.7069360613822937 + ], + "translation":[ + -0.009000054560601711, + 0.0951000526547432, + -0.042500000447034836 + ] + }, + { + "name":"ring_04_leaf_r", + "rotation":[ + 1.1641533959050321e-08, + 1, + 3.932434822109636e-14, + 3.651776296464959e-06 + ], + "scale":[ + 1, + 0.9999997019767761, + 1 + ], + "translation":[ + 3.835339157376438e-09, + 0.029101528227329254, + 3.391586744783126e-08 + ] + }, + { + "children":[ + 38 + ], + "name":"ring_03_r", + "rotation":[ + -2.4604839055086813e-08, + -5.959530785526468e-11, + 0.003387601813301444, + 0.9999942779541016 + ], + "scale":[ + 1, + 0.9999999403953552, + 1 + ], + "translation":[ + 8.026290743146092e-09, + 0.028300149366259575, + 1.1107695030432296e-07 + ] + }, + { + "children":[ + 39 + ], + "name":"ring_02_r", + "rotation":[ + 1.7020420628455213e-08, + 3.94586443519529e-08, + -0.0023997037205845118, + 0.9999971389770508 + ], + "translation":[ + 6.081791070755571e-09, + 0.0360012948513031, + 1.4559928729340754e-07 + ] + }, + { + "children":[ + 40 + ], + "name":"ring_01_r", + "rotation":[ + -0.002946224994957447, + -0.7070980668067932, + 0.002946204040199518, + 0.7071031928062439 + ], + "scale":[ + 0.9999998807907104, + 0.9999997019767761, + 0.9999998807907104 + ], + "translation":[ + -0.007300012744963169, + 0.10620005428791046, + -0.020400000736117363 + ] + }, + { + "name":"thumb_04_leaf_r", + "rotation":[ + 2.2672949739899195e-08, + -0.4282083213329315, + 1.8189894035458565e-07, + 0.9036800265312195 + ], + "scale":[ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation":[ + 1.671724021434784e-07, + 0.03459971770644188, + 8.381903171539307e-09 + ] + }, + { + "children":[ + 42 + ], + "name":"thumb_03_r", + "rotation":[ + -0.0003726781578734517, + -2.651103204698302e-05, + -0.00011462859401945025, + 0.9999999403953552 + ], + "scale":[ + 1.0000001192092896, + 0.9999999403953552, + 0.9999998807907104 + ], + "translation":[ + -1.8476566765457392e-07, + 0.03922785073518753, + -2.2351741790771484e-08 + ] + }, + { + "children":[ + 43 + ], + "name":"thumb_02_r", + "rotation":[ + 0.000855587946716696, + -3.4503656934248284e-05, + 0.0004891885910183191, + 0.9999995231628418 + ], + "scale":[ + 1, + 0.9999998807907104, + 0.9999998807907104 + ], + "translation":[ + -5.372567102313042e-08, + 0.03956543654203415, + -2.60770320892334e-08 + ] + }, + { + "children":[ + 44 + ], + "name":"thumb_01_r", + "rotation":[ + 0.30099350214004517, + -0.9291350841522217, + -0.21020175516605377, + 0.04388761147856712 + ], + "scale":[ + 1, + 1.0000001192092896, + 1 + ], + "translation":[ + -0.02139997109770775, + 0.027700087055563927, + 0.02740001119673252 + ] + }, + { + "children":[ + 29, + 33, + 37, + 41, + 45 + ], + "name":"hand_r", + "rotation":[ + -0.015807554125785828, + 1.2515496337073273e-06, + 1.8592521300320186e-08, + 0.9998750686645508 + ], + "scale":[ + 1, + 1, + 0.9999999403953552 + ], + "translation":[ + -9.193168182264344e-08, + 0.24042010307312012, + -5.398987923399545e-09 + ] + }, + { + "children":[ + 46 + ], + "name":"lowerarm_r", + "rotation":[ + 0.03093818761408329, + -4.256031024851836e-05, + 1.2421967312548077e-06, + 0.9995213150978088 + ], + "translation":[ + 4.025901034765411e-08, + 0.25111493468284607, + -8.731149137020111e-11 + ] + }, + { + "children":[ + 47 + ], + "name":"upperarm_r", + "rotation":[ + 0.16515187919139862, + -0.6876330971717834, + 0.16469810903072357, + 0.6875755786895752 + ], + "scale":[ + 0.9999999403953552, + 1, + 1 + ], + "translation":[ + 0.009641071781516075, + 0.1883048117160797, + -0.03967198729515076 + ] + }, + { + "children":[ + 48 + ], + "name":"clavicle_r", + "rotation":[ + -0.5359424352645874, + 0.3172530233860016, + 0.3989512026309967, + 0.673018753528595 + ], + "translation":[ + -0.03139999881386757, + 0.1737176477909088, + 0.06732845306396484 + ] + }, + { + "children":[ + 1, + 25, + 49 + ], + "name":"spine_03", + "rotation":[ + -0.12418898940086365, + 0, + 0, + 0.9922585487365723 + ], + "translation":[ + 0, + 0.1331336796283722, + 0 + ] + }, + { + "children":[ + 50 + ], + "name":"spine_02", + "rotation":[ + -0.03958535194396973, + 0, + 0, + 0.9992161989212036 + ], + "translation":[ + 0, + 0.10634974390268326, + -1.3969838619232178e-09 + ] + }, + { + "children":[ + 51 + ], + "name":"spine_01", + "rotation":[ + -0.09185619652271271, + 0, + 0, + 0.9957723021507263 + ], + "translation":[ + 0, + 0.1280922144651413, + -3.259629011154175e-08 + ] + }, + { + "name":"ball_leaf_l", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -2.1363266711205142e-10 + ] + }, + { + "children":[ + 53 + ], + "name":"ball_l", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 54 + ], + "name":"foot_l", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 55 + ], + "name":"calf_l", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + -7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 56 + ], + "name":"thigh_l", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + 0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "name":"ball_leaf_r", + "rotation":[ + 1.4901161193847656e-08, + -4.371139183945161e-08, + 6.513504428675462e-16, + 1 + ], + "translation":[ + -1.328826715329967e-09, + 0.07889983803033829, + -1.1364305052552481e-09 + ] + }, + { + "children":[ + 58 + ], + "name":"ball_r", + "rotation":[ + -1.0066750988357853e-08, + -0.9731196165084839, + 0.23030038177967072, + 4.2536413502602954e-08 + ], + "scale":[ + 1, + 1.000000238418579, + 1 + ], + "translation":[ + 0, + 0.15907371044158936, + -6.51925802230835e-09 + ] + }, + { + "children":[ + 59 + ], + "name":"foot_r", + "rotation":[ + -0.5721680521965027, + 0, + 0, + 0.8201364278793335 + ], + "translation":[ + 0, + 0.4587883949279785, + 5.587935447692871e-09 + ] + }, + { + "children":[ + 60 + ], + "name":"calf_r", + "rotation":[ + 0.05598893761634827, + 0, + 0, + 0.998431384563446 + ], + "translation":[ + 7.450580596923828e-09, + 0.4288000166416168, + 3.1723175197839737e-09 + ] + }, + { + "children":[ + 61 + ], + "name":"thigh_r", + "rotation":[ + 0.9898310303688049, + 0, + 0, + 0.14224845170974731 + ], + "scale":[ + 1, + 1, + 1.0000019073486328 + ], + "translation":[ + -0.09059999883174896, + 0.023176943883299828, + 0.0004878304898738861 + ] + }, + { + "children":[ + 52, + 57, + 62 + ], + "name":"pelvis", + "rotation":[ + 0.8005710244178772, + 0, + 0, + 0.5992379188537598 + ], + "translation":[ + 0, + 0.042999982833862305, + 0.9491000175476074 + ] + }, + { + "children":[ + 63 + ], + "name":"root", + "rotation":[ + -0.7071067690849304, + 0, + 0, + 0.7071067690849304 + ] + }, + { + "mesh":0, + "name":"Hair_SimpleParted", + "skin":0 + }, + { + "children":[ + 65, + 64 + ], + "name":"Armature" + } + ], + "materials":[ + { + "doubleSided":true, + "name":"MI_Hair_1", + "normalTexture":{ + "index":0 + }, + "pbrMetallicRoughness":{ + "baseColorTexture":{ + "index":1 + }, + "metallicFactor":0 + } + } + ], + "meshes":[ + { + "name":"Plane.002", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "JOINTS_0":3, + "WEIGHTS_0":4 + }, + "indices":5, + "material":0 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + }, + { + "sampler":0, + "source":1 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"T_Hair_1_Normal", + "uri":"T_Hair_1_Normal.png" + }, + { + "mimeType":"image/png", + "name":"T_Hair_1_BaseColor", + "uri":"T_Hair_1_BaseColor.png" + } + ], + "skins":[ + { + "inverseBindMatrices":6, + "joints":[ + 64, + 63, + 52, + 51, + 50, + 1, + 0, + 25, + 24, + 23, + 22, + 5, + 4, + 3, + 2, + 9, + 8, + 7, + 6, + 13, + 12, + 11, + 10, + 17, + 16, + 15, + 14, + 21, + 20, + 19, + 18, + 49, + 48, + 47, + 46, + 29, + 28, + 27, + 26, + 33, + 32, + 31, + 30, + 37, + 36, + 35, + 34, + 41, + 40, + 39, + 38, + 45, + 44, + 43, + 42, + 57, + 56, + 55, + 54, + 53, + 62, + 61, + 60, + 59, + 58 + ], + "name":"Armature" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":757, + "max":[ + 0.089996337890625, + 1.8397216796875, + 0.07879609614610672 + ], + "min":[ + -0.08542495965957642, + 1.660560131072998, + -0.10815342515707016 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":757, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":757, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5121, + "count":757, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5126, + "count":757, + "type":"VEC4" + }, + { + "bufferView":5, + "componentType":5123, + "count":3903, + "type":"SCALAR" + }, + { + "bufferView":6, + "componentType":5126, + "count":65, + "type":"MAT4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":9084, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":9084, + "byteOffset":9084, + "target":34962 + }, + { + "buffer":0, + "byteLength":6056, + "byteOffset":18168, + "target":34962 + }, + { + "buffer":0, + "byteLength":3028, + "byteOffset":24224, + "target":34962 + }, + { + "buffer":0, + "byteLength":12112, + "byteOffset":27252, + "target":34962 + }, + { + "buffer":0, + "byteLength":7806, + "byteOffset":39364, + "target":34963 + }, + { + "buffer":0, + "byteLength":4160, + "byteOffset":47172 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":51332, + "uri":"Hair_SimpleParted.bin" + } + ] +} diff --git a/public/models/characters/Superhero_Female_FullBody.bin b/public/models/characters/Superhero_Female_FullBody.bin new file mode 100644 index 0000000..6e6507c Binary files /dev/null and b/public/models/characters/Superhero_Female_FullBody.bin differ diff --git a/public/models/characters/Superhero_Female_FullBody.gltf b/public/models/characters/Superhero_Female_FullBody.gltf new file mode 100644 index 0000000..0b6b8d1 --- /dev/null +++ b/public/models/characters/Superhero_Female_FullBody.gltf @@ -0,0 +1 @@ +{"asset":{"generator":"Khronos glTF Blender I/O v4.3.47","version":"2.0"},"scene":0,"scenes":[{"name":"Scene","nodes":[68]}],"nodes":[{"name":"Head","rotation":[-0.20467473566532135,-4.759437705400649e-21,1.2439442348830942e-21,0.9788300395011902],"translation":[-1.5903435849255598e-27,0.0711912140250206,2.0489096641540527e-08]},{"children":[0],"name":"neck_01","rotation":[0.3088374435901642,8.337463586651673e-21,-5.849849968646638e-21,0.95111483335495],"translation":[-1.0141478263557337e-20,0.19815585017204285,2.60770320892334e-08]},{"name":"index_04_leaf_l","rotation":[-8.381903171539307e-09,1,-1.5432005174599583e-14,3.6517765238386346e-06],"translation":[9.076757123693824e-10,0.023510519415140152,-3.8285477899080433e-08]},{"children":[2],"name":"index_03_l","rotation":[1.0023382124302316e-09,7.603918037758783e-13,-0.00013328436762094498,1],"scale":[0.9999999403953552,1,1],"translation":[4.420144250616431e-10,0.027111778035759926,-3.670398029953503e-08]},{"children":[3],"name":"index_02_l","rotation":[1.8987577732332284e-08,1.4024364247688936e-07,-0.002140256343409419,0.9999977350234985],"scale":[0.9999999403953552,1,1],"translation":[8.094502845779061e-11,0.03171013668179512,-6.863018597869086e-09]},{"children":[4],"name":"index_01_l","rotation":[-0.0033091865479946136,0.7071018815040588,-0.003309202380478382,0.7070961594581604],"translation":[0.004199977032840252,0.08823654055595398,0.03620496019721031]},{"name":"middle_04_leaf_l","rotation":[2.0489096641540527e-08,1,6.335320587363621e-14,3.6517765238386346e-06],"translation":[2.193701220676303e-09,0.029620492830872536,1.1362611473941797e-07]},{"children":[6],"name":"middle_03_l","rotation":[2.420814304571195e-08,1.4173854798182894e-11,-0.0032189602497965097,0.9999948143959045],"scale":[0.9999998807907104,0.9999999403953552,1],"translation":[-4.32646629633382e-09,0.02931377850472927,3.287611605173879e-08]},{"children":[7],"name":"middle_02_l","rotation":[-2.949975197452659e-08,1.402399334438087e-07,0.0038676888216286898,0.9999924898147583],"translation":[1.6816557035781443e-09,0.03642695024609566,1.0210540324351314e-07]},{"children":[8],"name":"middle_01_l","rotation":[-0.007979890331625938,0.7070646286010742,-0.007979941554367542,0.7070589065551758],"scale":[1,0.9999998807907104,1],"translation":[0.001899929717183113,0.08634158223867416,0.010671664960682392]},{"name":"pinky_04_leaf_l","rotation":[8.381903171539307e-09,1,5.647658583201112e-14,3.65177675121231e-06],"translation":[-1.317857822868973e-09,0.020919334143400192,-1.727942162688123e-07]},{"children":[10],"name":"pinky_03_l","rotation":[-2.1800540039862426e-08,5.25581791629981e-12,0.0028988486155867577,0.9999958276748657],"scale":[1,1.0000001192092896,1],"translation":[-1.318767317570746e-09,0.026631725952029228,-8.721048061488545e-08]},{"children":[11],"name":"pinky_02_l","rotation":[1.03155857189563e-08,1.4017835781032773e-07,-0.001705002854578197,0.9999985694885254],"scale":[0.9999999403953552,0.9999999403953552,1],"translation":[-2.967681211885065e-09,0.03083186410367489,-8.672896001371555e-08]},{"children":[12],"name":"pinky_01_l","rotation":[-0.01044775452464819,0.7070325016975403,-0.010447824373841286,0.7070267200469971],"scale":[0.9999999403953552,0.9999997615814209,0.9999999403953552],"translation":[0.003799965837970376,0.06994835287332535,-0.03399413824081421]},{"name":"ring_04_leaf_l","rotation":[2.7474015951156616e-08,1,1.0721373739979931e-13,3.65177675121231e-06],"translation":[9.5042196335271e-10,0.028301579877734184,-3.474425369631717e-08]},{"children":[14],"name":"ring_03_l","rotation":[2.6234243222234e-08,4.3393351412124304e-11,-0.0034884933847934008,0.9999939203262329],"translation":[7.703420124016702e-09,0.027600184082984924,-1.1280478418029816e-07]},{"children":[15],"name":"ring_02_l","rotation":[-1.8197205520209536e-08,1.4009778226409253e-07,0.002474082401022315,0.9999969601631165],"translation":[-9.877112461254e-10,0.035001225769519806,-1.5782489981575054e-07]},{"children":[16],"name":"ring_01_l","rotation":[0.0025809321086853743,0.7071049213409424,0.0025809479411691427,0.707099199295044],"scale":[0.9999999403953552,0.9999997615814209,0.9999999403953552],"translation":[0.0021999571472406387,0.08042963594198227,-0.013825255446135998]},{"name":"thumb_04_leaf_l","rotation":[-1.2782692238033633e-08,0.48539119958877563,2.0375746601075662e-07,0.8742970824241638],"scale":[0.9999999403953552,1,1],"translation":[-1.2670352589339018e-07,0.03127264976501465,3.073364496231079e-08]},{"children":[18],"name":"thumb_03_l","rotation":[-0.0012816648231819272,5.811178561998531e-05,0.0002541383437346667,0.9999991655349731],"scale":[1,1,0.9999999403953552],"translation":[2.2436142899096012e-07,0.035620346665382385,5.122274160385132e-09]},{"children":[19],"name":"thumb_02_l","rotation":[0.0019128327257931232,0.00019216042710468173,-0.0004484721284825355,0.9999980330467224],"scale":[1,0.9999998211860657,0.9999999403953552],"translation":[1.453081495128572e-07,0.03582108020782471,-1.30385160446167e-08]},{"children":[20],"name":"thumb_01_l","rotation":[0.263997346162796,0.9450139999389648,0.1882738322019577,0.04250776767730713],"scale":[1,1.0000004768371582,1],"translation":[0.009999980218708515,-0.0028757674153894186,0.029958141967654228]},{"children":[5,9,13,17,21],"name":"hand_l","rotation":[-0.02237604185938835,-2.264418526465306e-06,-3.032003448311116e-08,0.9997496008872986],"translation":[1.532122695380167e-08,0.24930401146411896,5.277343007037416e-09]},{"children":[22],"name":"lowerarm_l","rotation":[0.023802155628800392,8.208974031731486e-05,-1.8556972918304382e-06,0.9997166991233826],"translation":[-4.793889729626244e-08,0.2403421401977539,-4.220055416226387e-09]},{"children":[23],"name":"upperarm_l","rotation":[0.17232586443424225,0.6858593225479126,-0.1717943400144577,0.68584805727005],"scale":[1,1,1.0000001192092896],"translation":[-0.0016045584343373775,0.1410660296678543,-0.01228591613471508]},{"children":[24],"name":"clavicle_l","rotation":[-0.5471324324607849,-0.3204275965690613,-0.39127784967422485,0.666988730430603],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[0.02930000051856041,0.13370320200920105,0.0448194220662117]},{"name":"index_04_leaf_r","rotation":[-8.381903171539307e-09,-1,1.5432005174599583e-14,3.6517765238386346e-06],"translation":[-9.076757123693824e-10,0.023510519415140152,-3.8285477899080433e-08]},{"children":[26],"name":"index_03_r","rotation":[1.0023382124302316e-09,-7.603918037758783e-13,0.00013328436762094498,1],"scale":[0.9999999403953552,1,1],"translation":[-4.420144250616431e-10,0.027111778035759926,-3.670398029953503e-08]},{"children":[27],"name":"index_02_r","rotation":[1.8987577732332284e-08,-1.4024364247688936e-07,0.002140256343409419,0.9999977350234985],"scale":[0.9999999403953552,1,1],"translation":[-8.094502845779061e-11,0.03171013668179512,-6.863018597869086e-09]},{"children":[28],"name":"index_01_r","rotation":[-0.0033091865479946136,-0.7071018815040588,0.003309202380478382,0.7070961594581604],"translation":[-0.004199977032840252,0.08823654055595398,0.03620496019721031]},{"name":"middle_04_leaf_r","rotation":[2.0489096641540527e-08,-1,-6.335320587363621e-14,3.6517765238386346e-06],"translation":[-2.193701220676303e-09,0.029620492830872536,1.1362611473941797e-07]},{"children":[30],"name":"middle_03_r","rotation":[2.420814304571195e-08,-1.4173854798182894e-11,0.0032189602497965097,0.9999948143959045],"scale":[0.9999998807907104,0.9999999403953552,1],"translation":[4.32646629633382e-09,0.02931377850472927,3.287611605173879e-08]},{"children":[31],"name":"middle_02_r","rotation":[-2.949975197452659e-08,-1.402399334438087e-07,-0.0038676888216286898,0.9999924898147583],"translation":[-1.6816557035781443e-09,0.03642695024609566,1.0210540324351314e-07]},{"children":[32],"name":"middle_01_r","rotation":[-0.007979890331625938,-0.7070646286010742,0.007979941554367542,0.7070589065551758],"scale":[1,0.9999998807907104,1],"translation":[-0.001899929717183113,0.08634158223867416,0.010671664960682392]},{"name":"pinky_04_leaf_r","rotation":[8.381903171539307e-09,-1,-5.647658583201112e-14,3.65177675121231e-06],"translation":[1.317857822868973e-09,0.020919334143400192,-1.727942162688123e-07]},{"children":[34],"name":"pinky_03_r","rotation":[-2.1800540039862426e-08,-5.25581791629981e-12,-0.0028988486155867577,0.9999958276748657],"scale":[1,1.0000001192092896,1],"translation":[1.318767317570746e-09,0.026631725952029228,-8.721048061488545e-08]},{"children":[35],"name":"pinky_02_r","rotation":[1.03155857189563e-08,-1.4017835781032773e-07,0.001705002854578197,0.9999985694885254],"scale":[0.9999999403953552,0.9999999403953552,1],"translation":[2.967681211885065e-09,0.03083186410367489,-8.672896001371555e-08]},{"children":[36],"name":"pinky_01_r","rotation":[-0.01044775452464819,-0.7070325016975403,0.010447824373841286,0.7070267200469971],"scale":[0.9999999403953552,0.9999997615814209,0.9999999403953552],"translation":[-0.003799965837970376,0.06994835287332535,-0.03399413824081421]},{"name":"ring_04_leaf_r","rotation":[2.7474015951156616e-08,-1,-1.0721373739979931e-13,3.65177675121231e-06],"translation":[-9.5042196335271e-10,0.028301579877734184,-3.474425369631717e-08]},{"children":[38],"name":"ring_03_r","rotation":[2.6234243222234e-08,-4.3393351412124304e-11,0.0034884933847934008,0.9999939203262329],"translation":[-7.703420124016702e-09,0.027600184082984924,-1.1280478418029816e-07]},{"children":[39],"name":"ring_02_r","rotation":[-1.8197205520209536e-08,-1.4009778226409253e-07,-0.002474082401022315,0.9999969601631165],"translation":[9.877112461254e-10,0.035001225769519806,-1.5782489981575054e-07]},{"children":[40],"name":"ring_01_r","rotation":[0.0025809321086853743,-0.7071049213409424,-0.0025809479411691427,0.707099199295044],"scale":[0.9999999403953552,0.9999997615814209,0.9999999403953552],"translation":[-0.0021999571472406387,0.08042963594198227,-0.013825255446135998]},{"name":"thumb_04_leaf_r","rotation":[-2.5565388028780944e-08,-0.48539119958877563,-1.9393742434203887e-07,0.8742970824241638],"scale":[0.9999998807907104,0.9999999403953552,0.9999999403953552],"translation":[1.2622331269085407e-07,0.031272709369659424,3.073364496231079e-08]},{"children":[42],"name":"thumb_03_r","rotation":[-0.0012816853122785687,-5.809385038446635e-05,-0.00025414914125576615,0.9999991655349731],"scale":[1.0000001192092896,1.0000001192092896,1],"translation":[-1.0542134987190366e-07,0.03562036156654358,-8.847564458847046e-09]},{"children":[43],"name":"thumb_02_r","rotation":[0.001912830863147974,-0.00019218510715290904,0.0004484682867769152,0.9999980330467224],"scale":[1,0.9999998211860657,0.9999999403953552],"translation":[-1.453081495128572e-07,0.03582108020782471,-1.30385160446167e-08]},{"children":[44],"name":"thumb_01_r","rotation":[0.263997346162796,-0.9450139999389648,-0.1882738322019577,0.04250776767730713],"scale":[1,1.0000004768371582,1],"translation":[-0.009999980218708515,-0.0028757674153894186,0.029958141967654228]},{"children":[29,33,37,41,45],"name":"hand_r","rotation":[-0.02237604185938835,2.264418526465306e-06,3.032003448311116e-08,0.9997496008872986],"translation":[-1.532122695380167e-08,0.24930401146411896,5.277343007037416e-09]},{"children":[46],"name":"lowerarm_r","rotation":[0.023802155628800392,-8.208974031731486e-05,1.8556972918304382e-06,0.9997166991233826],"translation":[4.793889729626244e-08,0.2403421401977539,-4.220055416226387e-09]},{"children":[47],"name":"upperarm_r","rotation":[0.17232586443424225,-0.6858593225479126,0.1717943400144577,0.68584805727005],"scale":[1,1,1.0000001192092896],"translation":[0.0016045584343373775,0.1410660296678543,-0.01228591613471508]},{"children":[48],"name":"clavicle_r","rotation":[-0.5471324324607849,0.3204275965690613,0.39127784967422485,0.666988730430603],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[-0.02930000051856041,0.13370320200920105,0.0448194220662117]},{"children":[1,25,49],"name":"spine_03","rotation":[-0.10099761933088303,4.5928396448426806e-14,-4.5242200827702583e-13,0.9948866963386536],"scale":[1,1,0.9999999403953552],"translation":[4.6735704609246064e-20,0.12640145421028137,3.4924596548080444e-10]},{"children":[50],"name":"spine_02","rotation":[-0.055728573352098465,-4.992229150957428e-05,-2.7864282401424134e-06,0.998445987701416],"scale":[1,0.9999998211860657,0.9999998807907104],"translation":[-4.263256414560601e-13,0.11034487932920456,8.381903171539307e-09]},{"children":[51],"name":"spine_01","rotation":[-0.06393160670995712,4.989771332475357e-05,-3.19658010994317e-06,0.9979543089866638],"scale":[1,0.9999999403953552,1],"translation":[0,0.12655510008335114,-9.313225746154785e-10]},{"name":"ball_leaf_l","rotation":[0,0.00017269056115765125,5.421010862427522e-20,1],"scale":[1,1.0000001192092896,1],"translation":[5.525180313270539e-10,0.06809987872838974,-1.204170985147357e-09]},{"children":[53],"name":"ball_l","rotation":[-3.296312570455484e-05,0.9816133975982666,-0.1908797174692154,0.00016951537691056728],"scale":[1,1.0000001192092896,0.9999998807907104],"translation":[1.4901161193847656e-08,0.14916980266571045,-6.51925802230835e-09]},{"children":[54],"name":"foot_l","rotation":[-0.5978578329086304,0,0,0.8016021847724915],"scale":[1,1.0000001192092896,1],"translation":[-7.450580596923828e-09,0.4661003053188324,2.7939677238464355e-09]},{"children":[55],"name":"calf_l","rotation":[0.0712229460477829,0,0,0.9974604249000549],"scale":[1,0.9999999403953552,1],"translation":[-7.450580596923828e-09,0.4098641872406006,1.3969838619232178e-09]},{"children":[56],"name":"thigh_l","rotation":[0.9893749952316284,0,0,0.1453862488269806],"scale":[1,1,1.0000014305114746],"translation":[0.11140000075101852,0.010460092686116695,-0.008893024176359177]},{"name":"ball_leaf_r","rotation":[0,0.00017269056115765125,5.421010862427522e-20,1],"scale":[1,1.0000001192092896,1],"translation":[5.525180313270539e-10,0.06809987872838974,-1.5897967386990786e-09]},{"children":[58],"name":"ball_r","rotation":[-3.296312570455484e-05,0.9816133975982666,-0.1908797174692154,0.00016951537691056728],"scale":[1,1.0000001192092896,0.9999998807907104],"translation":[-1.4901161193847656e-08,0.14916980266571045,-6.51925802230835e-09]},{"children":[59],"name":"foot_r","rotation":[-0.5978578329086304,0,0,0.8016021847724915],"scale":[1,1.0000001192092896,1],"translation":[7.450580596923828e-09,0.4661003053188324,2.7939677238464355e-09]},{"children":[60],"name":"calf_r","rotation":[0.0712229460477829,0,0,0.9974604249000549],"scale":[1,0.9999999403953552,1],"translation":[7.450580596923828e-09,0.4098641872406006,1.3969838619232178e-09]},{"children":[61],"name":"thigh_r","rotation":[0.9893749952316284,0,0,0.1453862488269806],"scale":[1,1,1.0000014305114746],"translation":[-0.11140000075101852,0.010460092686116695,-0.008893024176359177]},{"children":[52,57,62],"name":"pelvis","rotation":[0.7879695892333984,0,0,0.6157141923904419],"translation":[0,0.045700013637542725,0.9318000078201294]},{"children":[63],"name":"root","rotation":[-0.7071067690849304,0,0,0.7071067690849304]},{"mesh":0,"name":"Eyebrows","skin":0},{"mesh":1,"name":"Eyes","skin":0},{"mesh":2,"name":"Superhero_Female","skin":0},{"children":[65,66,67,64],"name":"Armature"}],"materials":[{"doubleSided":true,"name":"MI_Hair_2","normalTexture":{"index":0},"pbrMetallicRoughness":{"baseColorTexture":{"index":1},"metallicFactor":0,"roughnessFactor":0.8227272629737854}},{"doubleSided":true,"name":"MI_Eyes","normalTexture":{"index":2},"pbrMetallicRoughness":{"baseColorTexture":{"index":3},"metallicFactor":0,"roughnessFactor":0.34545454382896423}},{"doubleSided":true,"name":"MI_Superhero_Female","normalTexture":{"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"index":5},"metallicFactor":0,"metallicRoughnessTexture":{"index":6}}}],"meshes":[{"name":"Eyebrows","primitives":[{"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2,"TEXCOORD_1":3,"TEXCOORD_2":4,"TEXCOORD_3":5,"COLOR_0":6,"COLOR_1":7,"JOINTS_0":8,"WEIGHTS_0":9},"indices":10,"material":0}]},{"name":"Eyes","primitives":[{"attributes":{"POSITION":12,"NORMAL":13,"TEXCOORD_0":14,"TEXCOORD_1":15,"TEXCOORD_2":16,"TEXCOORD_3":17,"COLOR_0":18,"COLOR_1":19,"JOINTS_0":20,"WEIGHTS_0":21},"indices":22,"material":1}]},{"name":"Superhero_Female","primitives":[{"attributes":{"POSITION":23,"NORMAL":24,"TEXCOORD_0":25,"TEXCOORD_1":26,"TEXCOORD_2":27,"TEXCOORD_3":28,"TEXCOORD_4":29,"COLOR_0":30,"COLOR_1":31,"COLOR_2":32,"JOINTS_0":33,"WEIGHTS_0":34},"indices":35,"material":2}]}],"textures":[{"sampler":0,"source":0},{"sampler":0,"source":1},{"sampler":0,"source":2},{"sampler":0,"source":3},{"sampler":0,"source":4},{"sampler":0,"source":5},{"sampler":0,"source":6}],"images":[{"mimeType":"image/png","name":"T_Hair_2_Normal","uri":"T_Hair_2_Normal.png"},{"mimeType":"image/png","name":"T_Hair_2_BaseColor","uri":"T_Hair_2_BaseColor.png"},{"mimeType":"image/png","name":"T_Eye_Normal.png","uri":"T_Eye_Normal.png"},{"mimeType":"image/png","name":"T_Eye_Brown","uri":"T_Eye_Brown.png"},{"mimeType":"image/png","name":"T_Superhero_Female_Normal","uri":"T_Superhero_Female_Normal.png"},{"mimeType":"image/png","name":"T_Superhero_Female_Dark_BaseColor","uri":"T_Superhero_Female_Dark_BaseColor.png"},{"mimeType":"image/png","name":"T_Superhero_Female_Roughness","uri":"T_Superhero_Female_Roughness.png"}],"skins":[{"inverseBindMatrices":11,"joints":[64,63,52,51,50,1,0,25,24,23,22,5,4,3,2,9,8,7,6,13,12,11,10,17,16,15,14,21,20,19,18,49,48,47,46,29,28,27,26,33,32,31,30,37,36,35,34,41,40,39,38,45,44,43,42,57,56,55,54,53,62,61,60,59,58],"name":"Armature"}],"accessors":[{"bufferView":0,"componentType":5126,"count":912,"max":[0.06299881637096405,1.6869006156921387,0.0915711298584938],"min":[-0.06299881637096405,1.6492890119552612,0.05128476396203041],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":912,"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":912,"type":"VEC2"},{"bufferView":3,"componentType":5126,"count":912,"type":"VEC2"},{"bufferView":4,"componentType":5126,"count":912,"type":"VEC2"},{"bufferView":5,"componentType":5126,"count":912,"type":"VEC2"},{"bufferView":6,"componentType":5121,"count":912,"normalized":true,"type":"VEC4"},{"bufferView":7,"componentType":5123,"count":912,"normalized":true,"type":"VEC4"},{"bufferView":8,"componentType":5121,"count":912,"type":"VEC4"},{"bufferView":9,"componentType":5126,"count":912,"type":"VEC4"},{"bufferView":10,"componentType":5123,"count":4440,"type":"SCALAR"},{"bufferView":11,"componentType":5126,"count":65,"type":"MAT4"},{"bufferView":12,"componentType":5126,"count":556,"max":[0.05105403810739517,1.672553300857544,0.07533310353755951],"min":[-0.05105403810739517,1.6395376920700073,0.04291451722383499],"type":"VEC3"},{"bufferView":13,"componentType":5126,"count":556,"type":"VEC3"},{"bufferView":14,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":15,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":16,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":17,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":18,"componentType":5121,"count":556,"normalized":true,"type":"VEC4"},{"bufferView":19,"componentType":5123,"count":556,"normalized":true,"type":"VEC4"},{"bufferView":20,"componentType":5121,"count":556,"type":"VEC4"},{"bufferView":21,"componentType":5126,"count":556,"type":"VEC4"},{"bufferView":22,"componentType":5123,"count":2304,"type":"SCALAR"},{"bufferView":23,"componentType":5126,"count":7376,"max":[0.83443284034729,1.7666438817977905,0.1402275115251541],"min":[-0.8344329595565796,-0.008407175540924072,-0.1624695360660553],"type":"VEC3"},{"bufferView":24,"componentType":5126,"count":7376,"type":"VEC3"},{"bufferView":25,"componentType":5126,"count":7376,"type":"VEC2"},{"bufferView":26,"componentType":5126,"count":7376,"type":"VEC2"},{"bufferView":27,"componentType":5126,"count":7376,"type":"VEC2"},{"bufferView":28,"componentType":5126,"count":7376,"type":"VEC2"},{"bufferView":29,"componentType":5126,"count":7376,"type":"VEC2"},{"bufferView":30,"componentType":5121,"count":7376,"normalized":true,"type":"VEC4"},{"bufferView":31,"componentType":5123,"count":7376,"normalized":true,"type":"VEC4"},{"bufferView":32,"componentType":5123,"count":7376,"normalized":true,"type":"VEC4"},{"bufferView":33,"componentType":5121,"count":7376,"type":"VEC4"},{"bufferView":34,"componentType":5126,"count":7376,"type":"VEC4"},{"bufferView":35,"componentType":5123,"count":38436,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":10944,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":10944,"byteOffset":10944,"target":34962},{"buffer":0,"byteLength":7296,"byteOffset":21888,"target":34962},{"buffer":0,"byteLength":7296,"byteOffset":29184,"target":34962},{"buffer":0,"byteLength":7296,"byteOffset":36480,"target":34962},{"buffer":0,"byteLength":7296,"byteOffset":43776,"target":34962},{"buffer":0,"byteLength":3648,"byteOffset":51072,"target":34962},{"buffer":0,"byteLength":7296,"byteOffset":54720,"target":34962},{"buffer":0,"byteLength":3648,"byteOffset":62016,"target":34962},{"buffer":0,"byteLength":14592,"byteOffset":65664,"target":34962},{"buffer":0,"byteLength":8880,"byteOffset":80256,"target":34963},{"buffer":0,"byteLength":4160,"byteOffset":89136},{"buffer":0,"byteLength":6672,"byteOffset":93296,"target":34962},{"buffer":0,"byteLength":6672,"byteOffset":99968,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":106640,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":111088,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":115536,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":119984,"target":34962},{"buffer":0,"byteLength":2224,"byteOffset":124432,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":126656,"target":34962},{"buffer":0,"byteLength":2224,"byteOffset":131104,"target":34962},{"buffer":0,"byteLength":8896,"byteOffset":133328,"target":34962},{"buffer":0,"byteLength":4608,"byteOffset":142224,"target":34963},{"buffer":0,"byteLength":88512,"byteOffset":146832,"target":34962},{"buffer":0,"byteLength":88512,"byteOffset":235344,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":323856,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":382864,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":441872,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":500880,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":559888,"target":34962},{"buffer":0,"byteLength":29504,"byteOffset":618896,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":648400,"target":34962},{"buffer":0,"byteLength":59008,"byteOffset":707408,"target":34962},{"buffer":0,"byteLength":29504,"byteOffset":766416,"target":34962},{"buffer":0,"byteLength":118016,"byteOffset":795920,"target":34962},{"buffer":0,"byteLength":76872,"byteOffset":913936,"target":34963}],"samplers":[{"magFilter":9729,"minFilter":9987}],"buffers":[{"byteLength":990808,"uri":"Superhero_Female_FullBody.bin"}]} \ No newline at end of file diff --git a/public/models/characters/Superhero_Male_FullBody.bin b/public/models/characters/Superhero_Male_FullBody.bin new file mode 100644 index 0000000..54309de Binary files /dev/null and b/public/models/characters/Superhero_Male_FullBody.bin differ diff --git a/public/models/characters/Superhero_Male_FullBody.gltf b/public/models/characters/Superhero_Male_FullBody.gltf new file mode 100644 index 0000000..472dd07 --- /dev/null +++ b/public/models/characters/Superhero_Male_FullBody.gltf @@ -0,0 +1 @@ +{"asset":{"generator":"Khronos glTF Blender I/O v4.3.47","version":"2.0"},"scene":0,"scenes":[{"name":"Scene","nodes":[68]}],"nodes":[{"name":"Head","rotation":[-0.13207007944583893,0,0,0.991240382194519],"translation":[0,0.08285234868526459,9.313225746154785e-09]},{"children":[0],"name":"neck_01","rotation":[0.25725916028022766,0,0,0.9663424491882324],"translation":[0,0.21509313583374023,1.862645149230957e-08]},{"name":"index_04_leaf_l","rotation":[-1.789221437675792e-09,0.9998229742050171,3.712300440383842e-07,0.018816031515598297],"scale":[0.9999999403953552,1,1],"translation":[-1.1732481652870774e-09,0.024110054597258568,-1.3058706826996058e-07]},{"children":[2],"name":"index_03_l","rotation":[1.9416402210481465e-06,-7.145895324356388e-06,-0.00018566079961601645,1],"scale":[1,1,1.0000001192092896],"translation":[-5.757101462222636e-10,0.027911342680454254,5.889705789741129e-08]},{"children":[3],"name":"index_02_l","rotation":[3.8516853351211466e-07,4.9490859964862466e-05,-0.0005330402054823935,0.9999998807907104],"scale":[0.9999999403953552,1.0000001192092896,1],"translation":[-8.440110832452774e-10,0.032612428069114685,1.2031887308694422e-07]},{"children":[4],"name":"index_01_l","rotation":[0.008505093865096569,0.7068116664886475,-0.01852414943277836,0.7071080803871155],"scale":[1.0000001192092896,1.000000238418579,1.0000001192092896],"translation":[0.007159475702792406,0.1174025684595108,0.040643345564603806]},{"name":"middle_04_leaf_l","rotation":[-1.5724443969133972e-08,0.9998255372047424,5.420716675530457e-08,0.018679797649383545],"scale":[1,0.9999997019767761,1],"translation":[2.2610038286074996e-09,0.030519673600792885,1.955777406692505e-07]},{"children":[6],"name":"middle_03_l","rotation":[-4.686012857746391e-07,-5.432930265669711e-05,-0.0014198303688317537,0.9999990463256836],"scale":[0.9999999403953552,0.9999998211860657,1],"translation":[-5.793481250293553e-10,0.030116640031337738,-6.39629433862865e-08]},{"children":[7],"name":"middle_02_l","rotation":[5.612571953861334e-07,7.84045914770104e-05,0.0020528144668787718,0.9999979138374329],"scale":[1,1,1.0000001192092896],"translation":[-4.098183126188815e-09,0.03752607852220535,-1.7083948478102684e-08]},{"children":[8],"name":"middle_01_l","rotation":[0.005067416001111269,0.7067627906799316,-0.02195817232131958,0.7070916295051575],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[0.004682549275457859,0.1154387816786766,0.015113381668925285]},{"name":"pinky_04_leaf_l","rotation":[-6.453817924523264e-09,0.9998291730880737,2.147510969052746e-07,0.018483733758330345],"translation":[2.8803697205148637e-09,0.021523315459489822,-3.95521055907011e-08]},{"children":[10],"name":"pinky_03_l","rotation":[3.3508222259115428e-06,-0.00013744289753958583,0.0004660093109123409,0.9999998807907104],"scale":[0.9999998807907104,0.9999999403953552,0.9999998807907104],"translation":[-4.249159246683121e-09,0.027430830523371696,1.7808633856475353e-07]},{"children":[11],"name":"pinky_02_l","rotation":[3.9539517615594377e-07,9.536039578961208e-05,-0.0015674401074647903,0.9999988079071045],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[1.1932570487260818e-08,0.03163102641701698,-1.7530692275613546e-07]},{"children":[12],"name":"pinky_01_l","rotation":[0.002601056592538953,0.7066821455955505,-0.024414697661995888,0.7071049809455872],"scale":[1.0000001192092896,1.000000238418579,1.0000001192092896],"translation":[0.0060377283953130245,0.09854141622781754,-0.03461737558245659]},{"name":"ring_04_leaf_l","rotation":[8.940817863845041e-09,0.9998185634613037,5.402291662903735e-07,0.019049758091568947],"translation":[-9.167706593871117e-09,0.02910165674984455,5.82986103836447e-09]},{"children":[14],"name":"ring_03_l","rotation":[3.849756012641592e-06,-0.00025297756656073034,-0.003387551987543702,0.9999942183494568],"translation":[1.204170985147357e-09,0.028300179168581963,5.35583239980042e-08]},{"children":[15],"name":"ring_02_l","rotation":[-4.73642239740002e-06,0.00021853116049896926,0.00239976542070508,0.9999971389770508],"scale":[0.9999999403953552,0.9999999403953552,0.9999999403953552],"translation":[7.916241884231567e-09,0.03600123152136803,-8.07840478955768e-08]},{"children":[16],"name":"ring_01_l","rotation":[0.015323746018111706,0.7069170475006104,-0.011713176034390926,0.7070334553718567],"scale":[1,0.9999997615814209,1],"translation":[0.004751814063638449,0.10940060019493103,-0.012370164506137371]},{"name":"thumb_04_leaf_l","rotation":[1.285916511051255e-07,0.38270875811576843,-4.782022244853579e-08,0.9238690137863159],"scale":[1,0.9999999403953552,1],"translation":[-1.0035000741481781e-07,0.034558095037937164,2.1187588572502136e-08]},{"children":[18],"name":"thumb_03_l","rotation":[-5.349284037947655e-08,-2.9730843380093575e-05,1.7080456018447876e-06,1],"translation":[-1.2048985809087753e-08,0.03549090400338173,-2.9336661100387573e-08]},{"children":[19],"name":"thumb_02_l","rotation":[6.149784894660115e-07,4.712928785011172e-06,-3.2112004646478454e-06,1],"scale":[1,0.9999998807907104,1],"translation":[-1.050066202878952e-07,0.039519939571619034,3.5390257835388184e-08]},{"children":[20],"name":"thumb_01_l","rotation":[-0.24446295201778412,-0.94356769323349,-0.21606169641017914,0.05687990039587021],"scale":[1,1.000000238418579,1],"translation":[0.0274813212454319,0.03381355106830597,0.04106312245130539]},{"children":[5,9,13,17,21],"name":"hand_l","rotation":[-0.015601660124957561,-4.1717584053913015e-07,-9.051257521264233e-09,0.9998782873153687],"scale":[1,1,0.9999999403953552],"translation":[-1.5123794128157897e-07,0.243594229221344,2.6994939616997726e-09]},{"children":[22],"name":"lowerarm_l","rotation":[0.030732227489352226,4.16175062127877e-05,-1.2497959005486337e-06,0.9995276927947998],"translation":[3.7845666156499647e-08,0.251115083694458,-5.1513779908418655e-09]},{"children":[23],"name":"upperarm_l","rotation":[0.149803027510643,0.6911307573318481,-0.14938844740390778,0.6910719275474548],"scale":[0.9999998211860657,0.999999463558197,0.9999998807907104],"translation":[-0.009135720320045948,0.20573900640010834,-0.03967121243476868]},{"children":[24],"name":"clavicle_l","rotation":[-0.5287374258041382,-0.32910192012786865,-0.41380804777145386,0.663996696472168],"scale":[1,0.9999998807907104,1],"translation":[0.03139999881386757,0.1737176477909088,0.06732845306396484]},{"name":"index_04_leaf_r","rotation":[-1.934766347133632e-09,-0.9998229742050171,-3.711606666456646e-07,0.018816031515598297],"scale":[0.9999999403953552,1,1],"translation":[1.1732481652870774e-09,0.02411006949841976,-1.3124372344464064e-07]},{"children":[26],"name":"index_03_r","rotation":[1.943404186022235e-06,7.1459307946497574e-06,0.00018566078506410122,1],"scale":[1,1,1.0000001192092896],"translation":[4.911271389573812e-10,0.027911365032196045,6.19775164523162e-08]},{"children":[27],"name":"index_02_r","rotation":[3.823500378530298e-07,-4.935889955959283e-05,0.0005330423591658473,0.9999998807907104],"scale":[0.9999999403953552,1.0000001192092896,1],"translation":[1.2951204553246498e-09,0.03261244669556618,1.2260898074600846e-07]},{"children":[28],"name":"index_01_r","rotation":[0.008505097590386868,-0.706811785697937,0.01852414757013321,0.7071079611778259],"scale":[1.0000001192092896,1.000000238418579,1.0000001192092896],"translation":[-0.007159472443163395,0.117402583360672,0.040643345564603806]},{"name":"middle_04_leaf_r","rotation":[-1.5782660511831637e-08,-0.9998255372047424,-5.4032970098205624e-08,0.018679797649383545],"scale":[1,0.9999997019767761,1],"translation":[-2.2610038286074996e-09,0.030519699677824974,1.9423532648943365e-07]},{"children":[30],"name":"middle_03_r","rotation":[-4.687495334110281e-07,5.432928810478188e-05,0.001419831532984972,0.9999990463256836],"scale":[0.9999999403953552,0.9999998211860657,1],"translation":[-1.1996235116384923e-09,0.030116606503725052,-6.529444362968206e-08]},{"children":[31],"name":"middle_02_r","rotation":[5.584595896834799e-07,-7.839182944735512e-05,-0.0020528144668787718,0.9999979138374329],"scale":[1,1,1.0000001192092896],"translation":[4.5683918870054185e-09,0.03752603381872177,-2.081651473417878e-08]},{"children":[32],"name":"middle_01_r","rotation":[0.005067416001111269,-0.7067628502845764,0.02195817045867443,0.7070915699005127],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[-0.004682543221861124,0.1154387965798378,0.015113386325538158]},{"name":"pinky_04_leaf_r","rotation":[-9.396038613829205e-09,-0.9998291730880737,-2.1258703952753422e-07,0.018483733758330345],"translation":[-1.3542376109398901e-09,0.021523330360651016,-4.5925844460725784e-08]},{"children":[34],"name":"pinky_03_r","rotation":[3.3533979149069637e-06,0.0001374428829876706,-0.00046601047506555915,0.9999998807907104],"scale":[0.9999998807907104,0.9999999403953552,0.9999998807907104],"translation":[3.7834979593753815e-10,0.027430785819888115,1.7545244190841913e-07]},{"children":[35],"name":"pinky_02_r","rotation":[3.925948135474755e-07,-9.534749551676214e-05,0.0015674429014325142,0.9999988079071045],"scale":[1,0.9999999403953552,0.9999999403953552],"translation":[-8.046299626585096e-09,0.03163103014230728,-5.98374754190445e-08]},{"children":[36],"name":"pinky_01_r","rotation":[0.0026010593865066767,-0.7066822052001953,0.024414699524641037,0.7071049213409424],"scale":[1.0000001192092896,1.000000238418579,1.0000001192092896],"translation":[-0.0060377162881195545,0.09854142367839813,-0.03461737558245659]},{"name":"ring_04_leaf_r","rotation":[8.93445140093263e-09,-0.9998185634613037,-5.40070118404401e-07,0.019049877300858498],"scale":[0.9999999403953552,1,0.9999999403953552],"translation":[6.257323548197746e-09,0.029101617634296417,2.222896000603214e-08]},{"children":[38],"name":"ring_03_r","rotation":[3.850367193081183e-06,0.00025285835727117956,0.0033875522203743458,0.9999942183494568],"translation":[-1.204170985147357e-09,0.028300197795033455,5.154106474947184e-08]},{"children":[39],"name":"ring_02_r","rotation":[-4.736421942652669e-06,-0.0002185181510867551,-0.002399763325229287,0.9999971389770508],"scale":[0.9999999403953552,0.9999999403953552,0.9999999403953552],"translation":[-4.307366907596588e-09,0.036001186817884445,-8.079041435848922e-08]},{"children":[40],"name":"ring_01_r","rotation":[0.01532374694943428,-0.7069171071052551,0.011713176965713501,0.7070333957672119],"scale":[1,0.9999997615814209,1],"translation":[-0.0047518047504127026,0.10940061509609222,-0.012370162643492222]},{"name":"thumb_04_leaf_r","rotation":[1.2106264080102846e-07,-0.3827088177204132,2.8808685215153673e-08,0.9238690137863159],"scale":[1.0000001192092896,1,1],"translation":[9.080395102500916e-09,0.03455810248851776,1.7695128917694092e-08]},{"children":[42],"name":"thumb_03_r","rotation":[-5.1935785450041294e-08,2.9705788620049134e-05,-1.7005951349347015e-06,1],"scale":[0.9999999403953552,1,0.9999999403953552],"translation":[1.2456439435482025e-08,0.03549079969525337,8.381903171539307e-09]},{"children":[43],"name":"thumb_02_r","rotation":[6.680493811472843e-07,-4.789792001247406e-06,3.1683596262155334e-06,1],"scale":[1,0.9999998807907104,0.9999999403953552],"translation":[-4.563480615615845e-08,0.039520014077425,2.8172507882118225e-08]},{"children":[44],"name":"thumb_01_r","rotation":[-0.24446293711662292,0.9435676336288452,0.21606166660785675,0.05687989294528961],"scale":[0.9999999403953552,1.0000001192092896,1.0000001192092896],"translation":[-0.02748131938278675,0.03381356596946716,0.04106312245130539]},{"children":[29,33,37,41,45],"name":"hand_r","rotation":[-0.015601660124957561,4.7677681891400425e-07,8.121838313002172e-09,0.9998782873153687],"scale":[1,1,0.9999999403953552],"translation":[1.5123667651550932e-07,0.2435941994190216,2.032038537436165e-09]},{"children":[46],"name":"lowerarm_r","rotation":[0.030732227489352226,-4.1677081753732637e-05,1.251685375791567e-06,0.9995276927947998],"translation":[-3.0872001843818e-08,0.251115083694458,-2.86672729998827e-09]},{"children":[47],"name":"upperarm_r","rotation":[0.1498030126094818,-0.6911307573318481,0.14938844740390778,0.6910719275474548],"scale":[0.9999998211860657,0.999999463558197,0.9999998807907104],"translation":[0.009135720320045948,0.20573900640010834,-0.03967121243476868]},{"children":[48],"name":"clavicle_r","rotation":[-0.5287374258041382,0.32910192012786865,0.41380804777145386,0.663996696472168],"scale":[1,0.9999998807907104,1],"translation":[-0.03139999881386757,0.1737176477909088,0.06732845306396484]},{"children":[1,25,49],"name":"spine_03","rotation":[-0.12418898940086365,0,0,0.9922585487365723],"translation":[0,0.1331336796283722,0]},{"children":[50],"name":"spine_02","rotation":[-0.03958535194396973,0,0,0.9992161989212036],"translation":[0,0.10634974390268326,-1.3969838619232178e-09]},{"children":[51],"name":"spine_01","rotation":[-0.09185619652271271,0,0,0.9957723021507263],"translation":[0,0.1280922144651413,-3.259629011154175e-08]},{"name":"ball_leaf_l","rotation":[1.4901161193847656e-08,-4.371149486814829e-08,-1.355950077832355e-14,1],"translation":[-1.3288261602184548e-09,0.07889983803033829,-4.233804418163345e-10]},{"children":[53],"name":"ball_l","rotation":[6.497470650401738e-08,0.9731196165084839,-0.23030038177967072,1.894733969720619e-07],"scale":[1,1.000000238418579,1],"translation":[-4.181756274590498e-09,0.15907371044158936,-7.893650177948075e-09]},{"children":[54],"name":"foot_l","rotation":[-0.5721680521965027,1.9553584706955007e-07,-1.3641555085541768e-07,0.8201364278793335],"translation":[0,0.4587883949279785,5.587935447692871e-09]},{"children":[55],"name":"calf_l","rotation":[0.05598893761634827,0,0,0.998431384563446],"translation":[-7.450580596923828e-09,0.4288000166416168,3.1723175197839737e-09]},{"children":[56],"name":"thigh_l","rotation":[0.9898310303688049,0,0,0.14224845170974731],"scale":[1,1,1.0000019073486328],"translation":[0.11430513858795166,0.023176943883299828,0.0004878304898738861]},{"name":"ball_leaf_r","rotation":[1.4901161193847656e-08,4.371149486814829e-08,1.355950077832355e-14,1],"translation":[1.3288261602184548e-09,0.07889983803033829,-4.233804418163345e-10]},{"children":[58],"name":"ball_r","rotation":[6.497470650401738e-08,-0.9731196165084839,0.23030038177967072,1.894733969720619e-07],"scale":[1,1.000000238418579,1],"translation":[4.181756274590498e-09,0.15907371044158936,-7.893650177948075e-09]},{"children":[59],"name":"foot_r","rotation":[-0.5721680521965027,-1.9553584706955007e-07,1.3641555085541768e-07,0.8201364278793335],"translation":[0,0.4587883949279785,5.587935447692871e-09]},{"children":[60],"name":"calf_r","rotation":[0.05598893761634827,0,0,0.998431384563446],"translation":[7.450580596923828e-09,0.4288000166416168,3.1723175197839737e-09]},{"children":[61],"name":"thigh_r","rotation":[0.9898310303688049,0,0,0.14224845170974731],"scale":[1,1,1.0000019073486328],"translation":[-0.11430513858795166,0.023176943883299828,0.0004878304898738861]},{"children":[52,57,62],"name":"pelvis","rotation":[0.8005710244178772,0,0,0.5992379188537598],"translation":[0,0.042999982833862305,0.9491000175476074]},{"children":[63],"name":"root","rotation":[-0.7071067690849304,0,0,0.7071067690849304]},{"mesh":0,"name":"Eyebrows","skin":0},{"mesh":1,"name":"Eyes","skin":0},{"mesh":2,"name":"SuperHero_Male","skin":0},{"children":[65,66,67,64],"name":"Armature"}],"materials":[{"doubleSided":true,"name":"MI_Hair_1","normalTexture":{"index":0},"pbrMetallicRoughness":{"baseColorTexture":{"index":1},"metallicFactor":0,"roughnessFactor":0.8227272629737854}},{"doubleSided":true,"name":"MI_Eyes","normalTexture":{"index":2},"pbrMetallicRoughness":{"baseColorTexture":{"index":3},"metallicFactor":0,"roughnessFactor":0.34545454382896423}},{"doubleSided":true,"name":"MI_Superhero_Male","normalTexture":{"index":4},"pbrMetallicRoughness":{"baseColorTexture":{"index":5},"metallicFactor":0,"metallicRoughnessTexture":{"index":6}}}],"meshes":[{"name":"Face","primitives":[{"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2,"TEXCOORD_1":3,"TEXCOORD_2":4,"TEXCOORD_3":5,"COLOR_0":6,"COLOR_1":7,"JOINTS_0":8,"WEIGHTS_0":9},"indices":10,"material":0}]},{"name":"Face.001","primitives":[{"attributes":{"POSITION":12,"NORMAL":13,"TEXCOORD_0":14,"TEXCOORD_1":15,"TEXCOORD_2":16,"TEXCOORD_3":17,"COLOR_0":18,"COLOR_1":19,"JOINTS_0":20,"WEIGHTS_0":21},"indices":22,"material":1}]},{"name":"Sphere.005_Retopology.004","primitives":[{"attributes":{"POSITION":23,"NORMAL":24,"TEXCOORD_0":25,"TEXCOORD_1":26,"COLOR_0":27,"COLOR_1":28,"JOINTS_0":29,"WEIGHTS_0":30},"indices":31,"material":2}]}],"textures":[{"sampler":0,"source":0},{"sampler":0,"source":1},{"sampler":0,"source":2},{"sampler":0,"source":3},{"sampler":0,"source":4},{"sampler":0,"source":5},{"sampler":0,"source":6}],"images":[{"mimeType":"image/png","name":"T_Hair_1_Normal.png","uri":"T_Hair_1_Normal.png"},{"mimeType":"image/png","name":"T_Hair_1_BaseColor","uri":"T_Hair_1_BaseColor.png"},{"mimeType":"image/png","name":"T_Eye_Normal.png","uri":"T_Eye_Normal.png"},{"mimeType":"image/png","name":"T_Eye_Brown","uri":"T_Eye_Brown.png"},{"mimeType":"image/png","name":"T_Superhero_Male_Normal","uri":"T_Superhero_Male_Normal.png"},{"mimeType":"image/png","name":"T_Superhero_Male_Dark","uri":"T_Superhero_Male_Dark.png"},{"mimeType":"image/png","name":"T_Superhero_Male_Roughness","uri":"T_Superhero_Male_Roughness.png"}],"skins":[{"inverseBindMatrices":11,"joints":[64,63,52,51,50,1,0,25,24,23,22,5,4,3,2,9,8,7,6,13,12,11,10,17,16,15,14,21,20,19,18,49,48,47,46,29,28,27,26,33,32,31,30,37,36,35,34,41,40,39,38,45,44,43,42,57,56,55,54,53,62,61,60,59,58],"name":"Armature"}],"accessors":[{"bufferView":0,"componentType":5126,"count":646,"max":[0.062340568751096725,1.7254674434661865,0.09447786957025528],"min":[-0.062340568751096725,1.6948596239089966,0.0569215789437294],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":646,"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":646,"type":"VEC2"},{"bufferView":3,"componentType":5126,"count":646,"type":"VEC2"},{"bufferView":4,"componentType":5126,"count":646,"type":"VEC2"},{"bufferView":5,"componentType":5126,"count":646,"type":"VEC2"},{"bufferView":6,"componentType":5121,"count":646,"normalized":true,"type":"VEC4"},{"bufferView":7,"componentType":5123,"count":646,"normalized":true,"type":"VEC4"},{"bufferView":8,"componentType":5121,"count":646,"type":"VEC4"},{"bufferView":9,"componentType":5126,"count":646,"type":"VEC4"},{"bufferView":10,"componentType":5123,"count":2952,"type":"SCALAR"},{"bufferView":11,"componentType":5126,"count":65,"type":"MAT4"},{"bufferView":12,"componentType":5126,"count":556,"max":[0.04874879866838455,1.7135447263717651,0.08063791692256927],"min":[-0.04874879866838455,1.6835992336273193,0.05123402923345566],"type":"VEC3"},{"bufferView":13,"componentType":5126,"count":556,"type":"VEC3"},{"bufferView":14,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":15,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":16,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":17,"componentType":5126,"count":556,"type":"VEC2"},{"bufferView":18,"componentType":5121,"count":556,"normalized":true,"type":"VEC4"},{"bufferView":19,"componentType":5123,"count":556,"normalized":true,"type":"VEC4"},{"bufferView":20,"componentType":5121,"count":556,"type":"VEC4"},{"bufferView":21,"componentType":5126,"count":556,"type":"VEC4"},{"bufferView":22,"componentType":5123,"count":2304,"type":"SCALAR"},{"bufferView":23,"componentType":5126,"count":7281,"max":[0.9294325113296509,1.8100767135620117,0.12803764641284943],"min":[-0.9294325113296509,-0.009509669616818428,-0.16345079243183136],"type":"VEC3"},{"bufferView":24,"componentType":5126,"count":7281,"type":"VEC3"},{"bufferView":25,"componentType":5126,"count":7281,"type":"VEC2"},{"bufferView":26,"componentType":5126,"count":7281,"type":"VEC2"},{"bufferView":27,"componentType":5121,"count":7281,"normalized":true,"type":"VEC4"},{"bufferView":28,"componentType":5123,"count":7281,"normalized":true,"type":"VEC4"},{"bufferView":29,"componentType":5121,"count":7281,"type":"VEC4"},{"bufferView":30,"componentType":5126,"count":7281,"type":"VEC4"},{"bufferView":31,"componentType":5123,"count":37698,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":7752,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":7752,"byteOffset":7752,"target":34962},{"buffer":0,"byteLength":5168,"byteOffset":15504,"target":34962},{"buffer":0,"byteLength":5168,"byteOffset":20672,"target":34962},{"buffer":0,"byteLength":5168,"byteOffset":25840,"target":34962},{"buffer":0,"byteLength":5168,"byteOffset":31008,"target":34962},{"buffer":0,"byteLength":2584,"byteOffset":36176,"target":34962},{"buffer":0,"byteLength":5168,"byteOffset":38760,"target":34962},{"buffer":0,"byteLength":2584,"byteOffset":43928,"target":34962},{"buffer":0,"byteLength":10336,"byteOffset":46512,"target":34962},{"buffer":0,"byteLength":5904,"byteOffset":56848,"target":34963},{"buffer":0,"byteLength":4160,"byteOffset":62752},{"buffer":0,"byteLength":6672,"byteOffset":66912,"target":34962},{"buffer":0,"byteLength":6672,"byteOffset":73584,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":80256,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":84704,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":89152,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":93600,"target":34962},{"buffer":0,"byteLength":2224,"byteOffset":98048,"target":34962},{"buffer":0,"byteLength":4448,"byteOffset":100272,"target":34962},{"buffer":0,"byteLength":2224,"byteOffset":104720,"target":34962},{"buffer":0,"byteLength":8896,"byteOffset":106944,"target":34962},{"buffer":0,"byteLength":4608,"byteOffset":115840,"target":34963},{"buffer":0,"byteLength":87372,"byteOffset":120448,"target":34962},{"buffer":0,"byteLength":87372,"byteOffset":207820,"target":34962},{"buffer":0,"byteLength":58248,"byteOffset":295192,"target":34962},{"buffer":0,"byteLength":58248,"byteOffset":353440,"target":34962},{"buffer":0,"byteLength":29124,"byteOffset":411688,"target":34962},{"buffer":0,"byteLength":58248,"byteOffset":440812,"target":34962},{"buffer":0,"byteLength":29124,"byteOffset":499060,"target":34962},{"buffer":0,"byteLength":116496,"byteOffset":528184,"target":34962},{"buffer":0,"byteLength":75396,"byteOffset":644680,"target":34963}],"samplers":[{"magFilter":9729,"minFilter":9987}],"buffers":[{"byteLength":720076,"uri":"Superhero_Male_FullBody.bin"}]} \ No newline at end of file diff --git a/public/models/characters/T_Eye_Brown.png b/public/models/characters/T_Eye_Brown.png new file mode 100644 index 0000000..0d037fe Binary files /dev/null and b/public/models/characters/T_Eye_Brown.png differ diff --git a/public/models/characters/T_Eye_Normal.png b/public/models/characters/T_Eye_Normal.png new file mode 100644 index 0000000..2da5912 Binary files /dev/null and b/public/models/characters/T_Eye_Normal.png differ diff --git a/public/models/characters/T_Hair_1_BaseColor.png b/public/models/characters/T_Hair_1_BaseColor.png new file mode 100644 index 0000000..c398ca7 Binary files /dev/null and b/public/models/characters/T_Hair_1_BaseColor.png differ diff --git a/public/models/characters/T_Hair_1_Normal.png b/public/models/characters/T_Hair_1_Normal.png new file mode 100644 index 0000000..5aa652e Binary files /dev/null and b/public/models/characters/T_Hair_1_Normal.png differ diff --git a/public/models/characters/T_Hair_2_BaseColor.png b/public/models/characters/T_Hair_2_BaseColor.png new file mode 100644 index 0000000..bda8d95 Binary files /dev/null and b/public/models/characters/T_Hair_2_BaseColor.png differ diff --git a/public/models/characters/T_Hair_2_Normal.png b/public/models/characters/T_Hair_2_Normal.png new file mode 100644 index 0000000..2d77b1d Binary files /dev/null and b/public/models/characters/T_Hair_2_Normal.png differ diff --git a/public/models/characters/T_Superhero_Female_Dark_BaseColor.png b/public/models/characters/T_Superhero_Female_Dark_BaseColor.png new file mode 100644 index 0000000..06d49a5 Binary files /dev/null and b/public/models/characters/T_Superhero_Female_Dark_BaseColor.png differ diff --git a/public/models/characters/T_Superhero_Female_Normal.png b/public/models/characters/T_Superhero_Female_Normal.png new file mode 100644 index 0000000..20af328 Binary files /dev/null and b/public/models/characters/T_Superhero_Female_Normal.png differ diff --git a/public/models/characters/T_Superhero_Female_Roughness.png b/public/models/characters/T_Superhero_Female_Roughness.png new file mode 100644 index 0000000..d496b53 Binary files /dev/null and b/public/models/characters/T_Superhero_Female_Roughness.png differ diff --git a/public/models/characters/T_Superhero_Male_Dark.png b/public/models/characters/T_Superhero_Male_Dark.png new file mode 100644 index 0000000..6391f45 Binary files /dev/null and b/public/models/characters/T_Superhero_Male_Dark.png differ diff --git a/public/models/characters/T_Superhero_Male_Normal.png b/public/models/characters/T_Superhero_Male_Normal.png new file mode 100644 index 0000000..88303e2 Binary files /dev/null and b/public/models/characters/T_Superhero_Male_Normal.png differ diff --git a/public/models/characters/T_Superhero_Male_Roughness.png b/public/models/characters/T_Superhero_Male_Roughness.png new file mode 100644 index 0000000..2bbc618 Binary files /dev/null and b/public/models/characters/T_Superhero_Male_Roughness.png differ diff --git a/public/models/vehicles/suv.glb b/public/models/vehicles/suv.glb new file mode 100644 index 0000000..edfabfe Binary files /dev/null and b/public/models/vehicles/suv.glb differ diff --git a/src/characters/index.js b/src/characters/index.js new file mode 100644 index 0000000..68299db --- /dev/null +++ b/src/characters/index.js @@ -0,0 +1,324 @@ +import { AnimationClip, Box3, Quaternion, QuaternionKeyframeTrack, Vector3, + VectorKeyframeTrack } from "three"; +import { clone as cloneSkeleton } from "three/examples/jsm/utils/SkeletonUtils.js"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js"; + +// Übernommen aus three-player-controller/example/showcase.js (drei Figuren teilen sich +// dasselbe 65-Bone-Skelett; Animation kommt immer von ual.glb, siehe retargetClips unten). +// Pfade an dieses Projekts public/-Layout angepasst (dort ./glb/…, hier ./models/…). +export const CHARACTER_DIR = "./models/characters/"; +export const HAIR_NONE = "None"; +export const CHARACTERS = [ + { name: "Mannequin", url: "./models/ual.glb", heightFactor: 1 }, + { name: "Superhero Male", url: `${CHARACTER_DIR}Superhero_Male_FullBody.gltf`, heightFactor: 1 }, + // Erwachsene Frauen sind im Schnitt ca. 93% der Körpergröße von Männern; die im Modell + // eingebauten 97,5% Unterschied fallen kaum auf (Kommentar aus showcase.js übernommen). + { name: "Superhero Female", url: `${CHARACTER_DIR}Superhero_Female_FullBody.gltf`, heightFactor: 0.93 }, +]; +export const HAIRSTYLES = [ + "Hair_Buzzed", + "Hair_BuzzedFemale", + "Hair_SimpleParted", + "Hair_Long", + "Hair_Buns", + "Hair_Beard", +]; +// Nur zur Breitenmessung (measureTorsoRadiusRatio): T-Pose-Arme sollen die Breite nicht verfälschen. +const HITBOX_TORSO_BONES = ["pelvis", "spine_01", "spine_02", "spine_03"]; +// Controller-Standard playerCapsuleHeight / playerCapsuleRadius = 180 / 30. +const CAPSULE_HEIGHT_TO_RADIUS = 6; + +// Modellunabhängige Spielerkonfiguration, gemeinsam für Ersteinrichtung (main.js) und +// Figurenwechsel (applyCharacter) — identisch zu PLAYER_MODEL_BASE in showcase.js, weil +// alle drei Figuren von genau demselben ual.glb animiert werden. +export const PLAYER_MODEL_BASE = { + scale: 0.005, + idleAnim: "Idle_Loop", + walkAnim: "Walk_Loop", + runAnim: "Sprint_Loop", + jumpAnim: ["Jump_Start", "Jump_Loop", "Jump_Land"], + flyAnim: "fly", + flyIdleAnim: "flyIdle", + flyHoverForwardAnim: "flyHoverForward", + flyHoverBackAnim: "flyHoverBack", + flyHoverLeftAnim: "flyHoverLeft", + flyHoverRightAnim: "flyHoverRight", + flyHoverUpAnim: "flyHoverUp", + flyHoverDownAnim: "flyHoverDown", + drivingAnim: "Driving_Loop", + headBoneName: "Head", + firstPersonCameraOffset: [0, 0.15, 0.12], + rotateY: -Math.PI / 2, + speed: 100, + runSpeed: 600, +}; + +// Records: Bone-Name -> { position, quaternion } zum Zeitpunkt des Ladens (vor dem ersten +// mixer-Update aufgenommen). Unverändert aus showcase.js. +export function collectRestPose(root) { + const rest = new Map(); + root?.traverse((obj) => { + if (obj.isBone) rest.set(obj.name, { position: obj.position.clone(), quaternion: obj.quaternion.clone() }); + }); + return rest; +} + +// Ändert sich die Spur über die Zeit? Unverändert aus showcase.js. +export function trackVaries(track, stride) { + const v = track.values; + for (let i = stride; i < v.length; i++) { + if (Math.abs(v[i] - v[i % stride]) > 1e-6) return true; + } + return false; +} + +// Wiederverwendete Skalare für retargetClips, um pro Aufruf keine neuen Quaternion-Objekte +// anzulegen (unverändert aus showcase.js, dort retargetTmp genannt). +const retargetTmp = { corr: new Quaternion(), inv: new Quaternion(), q: new Quaternion() }; + +/** + * Passt die Animationen von ual.glb an ein anderes Körperschema an. Der Blender-Export legt + * allen 65 Bones Translation-/Scale-Spuren an; direktes Abspielen würde dem Zielmodell die + * Bone-Positionen des Mannequins aufzwingen und Schulterbreite/Gliedmaßenlängen verzerren. + * Deshalb bleiben nur Rotationen erhalten, konstante Verschiebung und alle Scale-Spuren + * fallen weg; die einzige echt bewegte Spur (pelvis-Verschiebung) wird auf die Ziel-Ruhepose + * umgerechnet. + * + * Anders als in showcase.js (wo sourceRest ein Modul-Global war) nimmt diese Fassung die + * Quellruhepose als expliziten dritten Parameter — sonst ließe sich die Funktion nicht ohne + * versteckten globalen Zustand testen/exportieren. Die Rechnung selbst (q_new = R_target · + * R_source⁻¹ · q_anim, konstante Verschiebung und Scale verworfen) ist unverändert: am realen + * Modell zeigte sich, dass ein direktes Übernehmen der absoluten Rotation die Schultern des + * weiblichen Modells sichtbar verdreht (siehe task-11-brief.md) — deshalb hier nicht vereinfachen. + */ +export function retargetClips(clips, sourceRest, targetRest) { + if (!sourceRest) return clips; + return clips.map((clip) => { + const tracks = []; + for (const track of clip.tracks) { + const dot = track.name.lastIndexOf("."); + const bone = track.name.slice(0, dot); + const prop = track.name.slice(dot + 1); + + const from = sourceRest.get(bone); + const to = targetRest.get(bone); + + if (prop === "quaternion") { + if (!from || !to) { tracks.push(track); continue; } + // Die beiden Skelette unterscheiden sich in der Ruheausrichtung (Schlüsselbein + // 9,5°, Nacken 23°) — eine direkt übernommene absolute Rotation würde das + // Zielskelett verdrehen, daher wird nur die Differenz zur Ruhepose übertragen. + retargetTmp.corr.copy(to.quaternion).multiply(retargetTmp.inv.copy(from.quaternion).invert()); + if (1 - Math.abs(retargetTmp.corr.w) < 1e-9) { tracks.push(track); continue; } + const q = Float32Array.from(track.values); + for (let i = 0; i + 3 < q.length; i += 4) { + retargetTmp.q.set(q[i], q[i + 1], q[i + 2], q[i + 3]).premultiply(retargetTmp.corr); + q[i] = retargetTmp.q.x; q[i + 1] = retargetTmp.q.y; + q[i + 2] = retargetTmp.q.z; q[i + 3] = retargetTmp.q.w; + } + tracks.push(new QuaternionKeyframeTrack(track.name, track.times, q)); + continue; + } + + if (prop !== "position") continue; // scale wird immer verworfen + if (!trackVaries(track, 3)) continue; // konstante Verschiebung ist Ruhepose, verwerfen + if (!from || !to) { tracks.push(track); continue; } + + const values = Float32Array.from(track.values); + for (let i = 0; i + 2 < values.length; i += 3) { + values[i] += to.position.x - from.position.x; + values[i + 1] += to.position.y - from.position.y; + values[i + 2] += to.position.z - from.position.z; + } + tracks.push(new VectorKeyframeTrack(track.name, track.times, values)); + } + return new AnimationClip(clip.name, clip.duration, tracks); + }); +} + +/** + * Auf ein Modell angepasste Animationen, je Figur zwischengespeichert. `cache` und die + * Quelldaten (playerAnimations/sourceRestPose) kommen explizit herein statt aus Modul-Globalen + * (showcase.js hielt sie als `let` auf Skriptebene — hier ist die Funktion ein benannter + * Export und braucht darum einen expliziten, von außen kontrollierten Zustand). + */ +export function clipsForModel(name, model, { playerAnimations, sourceRestPose, cache }) { + if (!cache.has(name)) { + cache.set(name, retargetClips(playerAnimations, sourceRestPose, collectRestPose(model))); + } + return cache.get(name); +} + +/** Erstes SkinnedMesh unter root, oder null. Unverändert aus showcase.js. */ +function findSkinnedMesh(root) { + let found = null; + root?.traverse((obj) => { if (!found && obj.isSkinnedMesh) found = obj; }); + return found; +} + +function enableModelShadows(root) { + root?.traverse((obj) => { + if (obj.isMesh) { obj.castShadow = true; obj.receiveShadow = true; } + }); +} + +/** + * Misst die tatsächliche halbe Rumpfbreite und rechnet sie in ein capsuleRadiusRatio um, das + * zur Netzform passt. Das Modell steht in T-Pose; ein direkter Bounding-Box-Griff würde die + * ausgestreckten Arme mit einrechnen, daher nur Vertices mit dominantem Rumpf-Bone-Gewicht. + * Unverändert aus showcase.js. + */ +export function measureTorsoRadiusRatio(root) { + const mesh = findSkinnedMesh(root); + const pos = mesh?.geometry?.attributes?.position; + const skinIndex = mesh?.geometry?.attributes?.skinIndex; + const skinWeight = mesh?.geometry?.attributes?.skinWeight; + if (!mesh || !pos || !skinIndex || !skinWeight) return 1; + + const torso = new Set(); + mesh.skeleton?.bones.forEach((bone, i) => { + if (HITBOX_TORSO_BONES.includes(bone.name)) torso.add(i); + }); + if (!torso.size) return 1; + + let halfWidth = 0; + for (let v = 0; v < pos.count; v++) { + let dominant = 0; + let best = -1; + for (let k = 0; k < 4; k++) { + const w = skinWeight.getComponent(v, k); + if (w > best) { best = w; dominant = skinIndex.getComponent(v, k); } + } + if (torso.has(dominant)) halfWidth = Math.max(halfWidth, Math.abs(pos.getX(v))); + } + if (halfWidth <= 0) return 1; + + root.updateMatrixWorld(true); + const height = new Box3().setFromObject(root).getSize(new Vector3()).y; + if (!(height > 0)) return 1; + return CAPSULE_HEIGHT_TO_RADIUS * (halfWidth / height); +} + +function loadGltfCached(state, url) { + if (!state.gltfCache.has(url)) state.gltfCache.set(url, state.gltfLoader.loadAsync(url)); + return state.gltfCache.get(url); +} + +/** + * Wechselt das Figurenmodell; die Animationen kommen immer von ual.glb (state.playerAnimations). + * Unverändert aus showcase.js außer dem expliziten state-Objekt statt Modul-Globalen (siehe + * clipsForModel) und dem Wegfall der showcase-eigenen Zonen-/Armjustierfunktionen, die es in + * diesem Projekt nicht gibt (kein schrumpfender Korridor, keine Arm-Feinjustierung im Panel). + */ +export async function applyCharacter(state, name) { + const entry = CHARACTERS.find((c) => c.name === name) ?? CHARACTERS[0]; + const gltf = await loadGltfCached(state, entry.url); + // Jedes Mal eine frische Kopie: der Controller skaliert das Modell direkt, dieselbe + // Instanz wiederzuverwenden würde die Skalierung aufsummieren. + const model = cloneSkeleton(gltf.scene); + const radiusRatio = measureTorsoRadiusRatio(model); + state.currentHeightFactor = state.characterHeights.get(entry.name) ?? entry.heightFactor ?? 1; + await state.player.switchPlayerModel({ + ...PLAYER_MODEL_BASE, + model, + animations: clipsForModel(entry.name, model, state), + scale: PLAYER_MODEL_BASE.scale * state.currentHeightFactor, + capsuleRadiusRatio: radiusRatio, + }); + state.currentCharacterName = entry.name; + enableModelShadows(state.player.playerModel); + state.currentHairMesh = null; // altes Haar verschwindet mit dem alten Modell + await applyHair(state, state.currentHairName); +} + +/** + * Wechselt die Frisur; Figur und Frisur teilen dasselbe Skelett mit identischer Bone- + * Reihenfolge und lauter Einheitsmatrizen als Bind-Matrix, daher direkt bindbar. Unverändert + * aus showcase.js außer dem expliziten state-Objekt (siehe applyCharacter). + */ +export async function applyHair(state, name) { + state.currentHairName = name; + if (state.currentHairMesh) { + state.currentHairMesh.removeFromParent(); + state.currentHairMesh = null; + } + if (name === HAIR_NONE) return; + + const gltf = await loadGltfCached(state, `${CHARACTER_DIR}${name}.gltf`); + const hair = findSkinnedMesh(cloneSkeleton(gltf.scene)); + const target = findSkinnedMesh(state.player.playerModel); + if (!hair || !target) { + console.warn("[characters] Frisur oder Figur ohne SkinnedMesh:", name); + return; + } + + hair.name = name; + hair.position.set(0, 0, 0); + hair.quaternion.identity(); + hair.scale.set(1, 1, 1); + target.parent.add(hair); + hair.bind(target.skeleton, hair.bindMatrix); + // Bounding-Box wird nach dem Neu-Binden ungültig; Frustum-Culling aus, sonst verschwindet + // die Frisur fälschlich, sobald ihre alte Box aus dem Sichtfeld wandert. + hair.frustumCulled = false; + enableModelShadows(hair); + state.currentHairMesh = hair; +} + +/** + * Baut den {switchCharacter, switchHair, applyHeight}-Zustand für einen bereits initialisierten + * Player (Task 1). playerAnimations/sourceRestPose werden hier einmalig eingefroren: zum + * Zeitpunkt des Aufrufs trägt player.playerModel noch das ursprüngliche ual.glb (Mannequin), + * das gleichzeitig das Quellskelett für retargetClips ist. + */ +export function createCharacterModule(player) { + const state = { + player, + playerAnimations: player.playerModelConfig?.animations ?? [], + sourceRestPose: collectRestPose(player.playerModel), + gltfLoader: new GLTFLoader(), + gltfCache: new Map(), + cache: new Map(), + characterHeights: new Map(CHARACTERS.map((c) => [c.name, c.heightFactor])), + currentCharacterName: CHARACTERS[0].name, + currentHairName: HAIR_NONE, + currentHairMesh: null, + currentHeightFactor: 1, + busy: false, + }; + + async function switchCharacter(name) { + if (state.busy || name === state.currentCharacterName) return; + state.busy = true; + try { await applyCharacter(state, name); } + catch (err) { console.error("[characters] Figurenwechsel fehlgeschlagen:", err); } + finally { state.busy = false; } + } + + async function switchHair(name) { + if (state.busy || name === state.currentHairName) return; + state.busy = true; + try { await applyHair(state, name); } + catch (err) { console.error("[characters] Frisurenwechsel fehlgeschlagen:", err); } + finally { state.busy = false; } + } + + /** Höhenfaktor der aktuellen Figur (0.7–1.3 im Panel), skaliert den Spieler direkt. */ + function applyHeight(factor) { + state.currentHeightFactor = factor; + state.characterHeights.set(state.currentCharacterName, factor); + player.setPlayerScale(PLAYER_MODEL_BASE.scale * factor); + } + + return { switchCharacter, switchHair, applyHeight, state }; +} + +/** + * Wahrzeichen absteigend nach Höhe sortiert, mit three-Weltkoordinaten statt gtadb-XY + * (worldToThree: x bleibt, z = -Y, s. src/world/coords.js). + */ +export function teleportTargets(landmarks) { + return [...landmarks] + .sort((a, b) => b.height - a.height) + .map((l) => ({ name: l.name, x: l.xyz[0], z: -l.xyz[1], height: l.height })); +} diff --git a/src/main.js b/src/main.js index 361b2cf..26a0572 100644 --- a/src/main.js +++ b/src/main.js @@ -7,6 +7,10 @@ import { playerController } from "three-player-controller"; import { ChunkStreamer } from "./world/streaming.js"; import { createMaterials } from "./world/materials.js"; import { PropLayer } from "./world/props.js"; +import { chunkForWorld, threeToWorld } from "./world/coords.js"; +import { createCharacterModule } from "./characters/index.js"; +import { createPanel } from "./ui/panel.js"; +import { buildAttribution, mountHud } from "./ui/hud.js"; const container = document.querySelector("#container"); const scene = new Scene(); @@ -31,6 +35,11 @@ scene.add(sun); // die dort erzeugten Vertexfarben (Pastellton pro Gebäude) über der Stuckputz-Textur. const materials = await createMaterials(renderer.capabilities.getMaxAnisotropy()); +// Task 11: erster Laufzeit-Verbraucher von manifest.json (Task 6) — bisher las nur die +// Extraktions-Pipeline es. Trägt die Namensnennung fürs HUD und die Chunk-Liste fürs +// Kartenbild im Debug-Panel. +const manifest = await fetch("./data/vice-a/manifest.json").then((r) => r.json()); + // Himmel und Nebel über der Szene; sunPosition zeigt in dieselbe Richtung wie das Sonnenlicht. const sky = new Sky(); sky.scale.setScalar(45000); @@ -50,6 +59,47 @@ scene.add(water); // Chunk anfragt statt erst nach dem späteren reset() umzuschwenken. const SPAWN = { x: 1699, y: 3, z: -743 }; +// Task 11, Schritt 5: vier SUVs an echten Mittellinienpunkten aus chunk_10_7.json (derselbe +// Chunk wie SPAWN), auf der Straße verteilt und weit genug von SPAWN entfernt, um den Spieler +// beim Start nicht zu überlappen. y=1: kleine Fallhöhe bis zur Fahrbahn (y=0), die Federung +// übernimmt den Rest — wie schon bei SPAWN selbst braucht es keine exakte Bodenhöhe im Voraus. +const VEHICLE_SPAWNS = [ + new Vector3(1656, 1, -739), + new Vector3(1676, 1, -742), + new Vector3(1726, 1, -746), + new Vector3(1745, 1, -729), +]; +// Konfiguration unverändert aus spawnShowcaseVehicles/VEHICLE_TUNING in +// three-player-controller/example/showcase.js — dieselbe suv.glb, dieselbe Abstimmung. +const VEHICLE_SCALE = 0.5; +const VEHICLE_TUNING = { + followVehicleDirection: true, + debug: { showPhysicsBox: false, showWheelRays: false, showWheelTravel: false, showWheelSpheres: false }, + chassis: { density: 1, linearDamping: 0.05, angularDamping: 0.5, clearance: 0.8, sizeScale: { x: 0.9, y: 0.55, z: 0.9 } }, + suspension: { + restLength: 0.15, maxTravel: 0.15, stiffness: 25, compression: 2.1, relaxation: 2.5, + maxForce: 6000, frictionSlip: 8, sideFrictionStiffness: 1, rollInfluence: 0.12, + }, + steering: { + maxSteerAngle: Math.PI / 5, steerTime: 0.45, steerReturnTimeSlow: 0.55, + steerReturnTimeFast: 0.4, highSpeedSteerScale: 0.3, + }, + grip: { + maxG: 1.2, sideFrictionIdle: 1, sideFrictionFrontMin: 0.55, sideFrictionRearMin: 0.45, + handbrakeRearFriction: 0.35, handbrakeRearDriveScale: 0.65, handbrakeReleaseTime: 0.15, + wheelbaseRatio: 0.55, + }, + power: { maxSpeed: 100, acceleration: 5, deceleration: 5 }, +}; +// Die Chunks unter den vier Spawnpunkten hält ChunkStreamer dauerhaft fest (this.pinned, +// siehe streaming.js): ein Fahrzeug ohne Boden fällt ins Nichts, sobald der Spieler sich weit +// genug entfernt und der normale Radius-Abbau die Kollision unter ihm abbaut. +const VEHICLE_PINNED_CHUNKS = [...new Set(VEHICLE_SPAWNS.map((v) => { + const { X, Y } = threeToWorld(v.x, v.z); + const { i, j } = chunkForWorld(X, Y); + return `${i}_${j}`; +}))]; + const gltf = await new GLTFLoader().loadAsync("./models/ual.glb"); const player = new playerController(); await player.init({ @@ -63,6 +113,57 @@ await player.init({ }, }); +// Figurenauswahl (Task 11): player.playerModel ist hier noch das frisch geladene ual.glb +// (Mannequin) — genau das braucht createCharacterModule als Quellskelett/-animation für +// retargetClips, bevor die erste Figur gewechselt wird. +const characterModule = createCharacterModule(player); + +// Namensnennung dauerhaft unten links (Layout in index.html, .attribution). +mountHud(document.body, buildAttribution(manifest)); + +async function spawnVehicles() { + const suvGltf = await new GLTFLoader().loadAsync("./models/vehicles/suv.glb"); + for (const spawnPos of VEHICLE_SPAWNS) { + const model = suvGltf.scene.clone(true); + await player.loadVehicleModel({ + model, + scale: VEHICLE_SCALE, + position: spawnPos.clone(), + wheelsNames: ["Wheel_LF", "Wheel_RF", "Wheel_LR", "Wheel_RR"], + driverSeatPosition: new Vector3(-0.4, 1.0, 0.3), + driverSeatRotation: -Math.PI / 2, + modelRotation: -Math.PI / 2, + followVehicleDirection: VEHICLE_TUNING.followVehicleDirection, + debug: VEHICLE_TUNING.debug, + chassis: VEHICLE_TUNING.chassis, + suspension: VEHICLE_TUNING.suspension, + steering: VEHICLE_TUNING.steering, + grip: VEHICLE_TUNING.grip, + power: VEHICLE_TUNING.power, + }); + const vehicle = player.getAllVehicles().at(-1); + vehicle?.vehicleGroup?.traverse((child) => { + if (!child.isMesh) return; + child.castShadow = true; + child.receiveShadow = true; + }); + } +} + +// Ein hängender Sprung wartet auf den Collider am Ziel, statt sofort auf normale Kollision zu +// schalten (Ruling 53 gilt hier genauso wie beim Ersteinstieg unten): ohne das könnte der +// Spieler bei einem Sprung auf ein weit entferntes, noch nicht gestreamtes Wahrzeichen durch +// den ungeladenen Boden fallen und vom Auffangnetz (p.y < -30) zurück an lastSafe geschickt +// werden — der Sprung sähe dann aus, als wäre er wirkungslos. +let pendingTeleport = null; +function requestTeleport(position) { + pendingTeleport = { x: position.x, y: position.y, z: position.z }; + player.setSkipCapsuleCollision(true); + player.reset(new Vector3(position.x, position.y, position.z)); +} + +createPanel({ player, characterModule, scene, manifest, requestTeleport }); + // Meeresboden: man watet hinein, statt endlos zu fallen. Einmalig, nicht je Chunk. const seafloor = new Mesh(new BoxGeometry(4000, 1, 4000), materials.seafloor); seafloor.position.set(500, -3.0, -1000); // Oberkante bei y = -2,5 @@ -94,12 +195,13 @@ function updateShadow(target) { // Zeitschranke, die danach die Kollision ohne vorhandenen Boden einschaltet, würde in eine // endlose Fall-Auffang-Schleife laufen, sobald der Chunk dauerhaft ausbleibt. Nach 15s gibt // es nur noch eine einmalige Warnung, kein Verhaltenswechsel. -const streamer = new ChunkStreamer({ scene, player, materials, props }); +const streamer = new ChunkStreamer({ scene, player, materials, props, pinned: VEHICLE_PINNED_CHUNKS }); player.setSkipCapsuleCollision(true); let settled = false; let warnedSlowSpawn = false; const startedAt = performance.now(); let lastSafe = { ...SPAWN }; +let vehiclesSpawned = false; function tick(delta) { streamer.update(player.playerCapsule.position); @@ -117,6 +219,25 @@ function tick(delta) { } return; } + + // Erst spawnen, sobald der Boden unter allen vier Punkten wirklich da ist (Task 11, + // Schritt 5) — sonst fiele ein SUV durch einen Chunk, dessen Collider noch nicht fertig ist. + if (!vehiclesSpawned && VEHICLE_SPAWNS.every((v) => streamer.isReadyAt(v))) { + vehiclesSpawned = true; + void spawnVehicles(); + } + + // Sprungziel wird gehalten, bis sein Chunk bereit ist (s. Kommentar bei requestTeleport). + if (pendingTeleport) { + if (streamer.isReadyAt(player.playerCapsule.position)) { + player.setSkipCapsuleCollision(false); + pendingTeleport = null; + } else { + player.reset(new Vector3(pendingTeleport.x, pendingTeleport.y, pendingTeleport.z)); + return; + } + } + const p = player.playerCapsule.position; // Ruling 52: an ein echtes Bodensignal binden statt an die Höhe — sonst würde auch der // Scheitelpunkt eines Sprungs, ein Dach oder ein Moment im freien Fall als "sicher" gelten. diff --git a/src/ui/hud.js b/src/ui/hud.js new file mode 100644 index 0000000..15c0a74 --- /dev/null +++ b/src/ui/hud.js @@ -0,0 +1,26 @@ +// Namensnennung ist bei den hier verwendeten Assets teils Pflicht (CC BY), nicht Kosmetik: +// - Kartenkacheln und Wahrzeichenhöhen: schon in manifest.json (Task 6), wörtlich übernommen. +// - SUV: Boris731 (Sketchfab, "Low-poly cyberpunk SUV") unter CC BY — Namensnennung Pflicht. +// - Texturen: Poly Haven, CC0. +// - Palme: Nobiax (OpenGameArt), CC0 (public/models/palm/readme.txt: "absolutely free to +// use or to modify in any kind of work"). +// - Figuren/Frisuren: Quaternius, "Universal Base Characters[Standard]"-Paket, CC0 1.0 +// Universal (Public Domain Dedication) laut dessen License_Standard.txt — siehe +// task-11-report.md für den wörtlichen Fund. +// Jede Quelle bekommt ihren eigenen Satz mit ihrer eigenen Lizenz: keine Lizenz kürzen, +// keine zwei Lizenzen in einer Zeile vermischen, kein CC0 für die CC-BY-Quelle behaupten. +const MODEL_CREDITS = "SUV: Boris731 (Sketchfab, CC BY). Texturen: Poly Haven (CC0). " + + "Palme: Nobiax (OpenGameArt, CC0). Figuren: Quaternius (CC0)."; + +/** Reine Textzusammensetzung, ohne DOM — so ohne Browser testbar (siehe tests/hud.test.js). */ +export function buildAttribution(manifest) { + return `${manifest.attribution} ${MODEL_CREDITS}`; +} + +export function mountHud(root, attribution) { + const el = document.createElement("div"); + el.className = "attribution"; + el.textContent = attribution; + root.appendChild(el); + return el; +} diff --git a/src/ui/panel.js b/src/ui/panel.js new file mode 100644 index 0000000..3e0f24e --- /dev/null +++ b/src/ui/panel.js @@ -0,0 +1,210 @@ +import { BufferGeometry, CanvasTexture, Float32BufferAttribute, LineBasicMaterial, + LineSegments, Mesh, MeshBasicMaterial, PlaneGeometry, Vector3 } from "three"; +import GUI from "lil-gui"; +import { CHARACTERS, HAIRSTYLES, HAIR_NONE, teleportTargets } from "../characters/index.js"; +import { CHUNKS_PER_SIDE, CHUNK_SIZE, SLICE } from "../world/coords.js"; + +// Wahrzeichen: rolux/gtamaplib-vc (Unlicense, s. manifest.json), aus tools/extract/data/ +// skyline.json übernommen (nur gelesen, nicht verändert — die Datei selbst bleibt +// tools/extract vorbehalten). Alle 54 liegen innerhalb dieses Kartenausschnitts (SLICE). +const LANDMARKS = [ + { name: "Southeast Financial Center", xyz: [-461.31, -460.1, 248.34], height: 248.3 }, + { name: "Jade Ocean Condos", xyz: [1580.99, 2482.23, 202.46], height: 202.5 }, + { name: "Opera Tower", xyz: [-417.55, 864.58, 200.87], height: 200.9 }, + { name: "Quantum on the Bay", xyz: [-398.51, 1140.65, 194.78], height: 194.8 }, + { name: "Wells Fargo Center", xyz: [-655.02, -408.58, 186.88], height: 186.9 }, + { name: "Vizcayne North Condominium", xyz: [-528.49, 137.15, 177.17], height: 177.2 }, + { name: "Marina Blue", xyz: [-455.68, 414.97, 177.13], height: 177.1 }, + { name: "The Grand", xyz: [-262.47, 952.24, 176.64], height: 176.6 }, + { name: "1800 Club", xyz: [-349.78, 1034.41, 161.96], height: 162.0 }, + { name: "Stephen P. Clark Government Center", xyz: [-934.67, 19.08, 161.5], height: 161.5 }, + { name: "Miami Tower", xyz: [-770.52, -414.85, 161.07], height: 161.1 }, + { name: "Icon at South Beach", xyz: [1355.98, -13.76, 154.8], height: 154.8 }, + { name: "Citigroup Center", xyz: [-382.36, -480.26, 152.12], height: 152.1 }, + { name: "50 Biscayne Blvd", xyz: [-434.64, -246.37, 146.71], height: 146.7 }, + { name: "Marriott Miami Biscayne Bay", xyz: [-219.73, 859.14, 146.44], height: 146.4 }, + { name: "Portofino Tower", xyz: [1734.05, -205.8, 144.46], height: 144.5 }, + { name: "Green Diamond", xyz: [1772.72, 2120.85, 144.48], height: 144.5 }, + { name: "Blue Diamond", xyz: [1830.96, 2061.61, 143.59], height: 143.6 }, + { name: "Ten Museum Park", xyz: [-455.33, 468.57, 138.15], height: 138.1 }, + { name: "InterContinental Miami", xyz: [-255.84, -466.24, 133.46], height: 133.5 }, + { name: "Murano Grande", xyz: [1415.06, -58.77, 126.36], height: 126.4 }, + { name: "Loft Downtown II", xyz: [-539.52, 50.15, 126.04], height: 126.0 }, + { name: "The Crimson", xyz: [-458.38, 1238.37, 122.89], height: 122.9 }, + { name: "Trésor Tower", xyz: [1837.42, 1946.05, 119.24], height: 119.2 }, + { name: "New Wave Condominiums", xyz: [-341.11, 1419.48, 114.5], height: 114.5 }, + { name: "Pelican Harbor Radio Tower", xyz: [1101.8, 1869.0, 113.36], height: 113.4 }, + { name: "The Waverly South Beach", xyz: [1249.0, 602.57, 110.95], height: 110.9 }, + { name: "The Floridian", xyz: [1265.56, 409.0, 96.47], height: 96.5 }, + { name: "Sunset Harbour South Condo", xyz: [1441.32, 1669.71, 87.36], height: 87.4 }, + { name: "Flamingo South Beach", xyz: [1278.92, 950.05, 76.39], height: 76.4 }, + { name: "Bank of America Financial Center", xyz: [1693.67, 1372.34, 73.44], height: 73.4 }, + { name: "22 Biscayne Bay", xyz: [-350.41, 1354.52, 72.62], height: 72.6 }, + { name: "Capri South Beach", xyz: [1316.65, 1132.18, 57.54], height: 57.5 }, + { name: "1111 Lincoln Rd", xyz: [1482.94, 1340.65, 56.06], height: 56.1 }, + { name: "1000 Venetian Way", xyz: [307.83, 1129.73, 54.16], height: 54.2 }, + { name: "112 NE 41st St", xyz: [26.62, 2219.87, 53.35], height: 53.3 }, + { name: "The Tides South Beach", xyz: [1993.63, 888.23, 53.21], height: 53.2 }, + { name: "Old City Hall", xyz: [1681.71, 605.02, 51.6], height: 51.6 }, + { name: "St. Moritz Hotel", xyz: [1983.51, 1107.58, 49.35], height: 49.4 }, + { name: "W South Beach", xyz: [1906.2, 1590.71, 48.76], height: 48.8 }, + { name: "The Gates Hotel South Beach", xyz: [1863.97, 1612.19, 48.18], height: 48.2 }, + { name: "Venetian Isle Condominium", xyz: [55.22, 1191.41, 46.93], height: 46.9 }, + { name: "Kaseya Center", xyz: [-272.56, 433.4, 46.77], height: 46.8 }, + { name: "Uptown Lofts", xyz: [-349.03, 1316.42, 46.15], height: 46.2 }, + { name: "Knight Concert Hall", xyz: [-353.55, 687.21, 46.16], height: 46.2 }, + { name: "New World Center", xyz: [1653.41, 1432.42, 45.18], height: 45.2 }, + { name: "Cruise Terminal D", xyz: [664.47, -431.34, 34.79], height: 34.8 }, + { name: "419 NE 4th Ave", xyz: [-428.91, 1210.66, 34.08], height: 34.1 }, + { name: "Miami Beach Parking Garage", xyz: [1850.1, 682.39, 34.08], height: 34.1 }, + { name: "Hotel Victor", xyz: [1945.1, 733.09, 33.59], height: 33.6 }, + { name: "City View Parking Garage", xyz: [-172.17, 2060.76, 33.16], height: 33.2 }, + { name: "Jenny Hostel", xyz: [1911.18, 602.76, 30.98], height: 31.0 }, + { name: "Star Island Water Tower", xyz: [760.6, 480.35, 28.73], height: 28.7 }, + { name: "Hotel Breakwater", xyz: [1949.86, 563.75, 25.8], height: 25.8 }, +]; +// Sprungziel liegt so weit über dem Wahrzeichen, dass die Fallphysik es sicher von oben +// erreicht, statt in der Dachgeometrie zu stecken (s. requestTeleport in main.js). +const TELEPORT_MARGIN = 15; +const MAP_TEXTURE_SIZE = 768; +const MAP_LAND_COLOR = "#cfae7d"; + +/** Cyanfarbenes Gitter entlang aller Chunk-Grenzen der Slice; rein aus SLICE/CHUNK_SIZE, ohne Fetch. */ +function buildChunkGrid() { + const y = 0.15; // knapp über den Straßen-Decals (0.03), damit das Gitter nicht im Z-Fighting verschwindet + const positions = []; + for (let i = 0; i <= CHUNKS_PER_SIDE; i++) { + const x = SLICE.x0 + i * CHUNK_SIZE; + positions.push(x, y, -SLICE.y0, x, y, -SLICE.y1); + } + for (let j = 0; j <= CHUNKS_PER_SIDE; j++) { + const z = -(SLICE.y1 - j * CHUNK_SIZE); + positions.push(SLICE.x0, y, z, SLICE.x1, y, z); + } + const geometry = new BufferGeometry(); + geometry.setAttribute("position", new Float32BufferAttribute(positions, 3)); + const grid = new LineSegments(geometry, new LineBasicMaterial({ color: 0x00e5ff })); + grid.visible = false; + return grid; +} + +/** Füllt einen Polygonzug (Außenring + Löcher) auf dem Canvas; evenodd spart die Löcher aus. */ +function fillPolygon(ctx, rings, origin, scale) { + ctx.beginPath(); + for (const ring of rings) { + ring.forEach(([lx, lz], idx) => { + const cx = (origin[0] + lx - SLICE.x0) * scale; + const cy = (origin[1] + lz + SLICE.y1) * scale; + if (idx === 0) ctx.moveTo(cx, cy); else ctx.lineTo(cx, cy); + }); + ctx.closePath(); + } + ctx.fill("evenodd"); +} + +/** + * Kartenbild als Ebene auf dem Boden: Landflächen aller Chunks (aus public/data/vice-a, wie + * ChunkStreamer selbst sie lädt) als Silhouette auf transparentem Grund, damit das Meer + * darunter durchscheint. Fehlt ein einzelner Chunk (Netzfehler, 404), bleibt die Karte dort + * schlicht leer statt ganz abzubrechen — es ist ein Debug-Hilfsmittel, kein Spielinhalt. + */ +async function buildMapMesh(manifest, baseUrl) { + const width = SLICE.x1 - SLICE.x0, depth = SLICE.y1 - SLICE.y0; + const scale = MAP_TEXTURE_SIZE / width; + const canvas = document.createElement("canvas"); + canvas.width = MAP_TEXTURE_SIZE; + canvas.height = Math.round(MAP_TEXTURE_SIZE * (depth / width)); + const ctx = canvas.getContext("2d"); + ctx.fillStyle = MAP_LAND_COLOR; + for (const [i, j] of manifest.chunks) { + let chunk; + try { + const res = await fetch(`${baseUrl}/chunk_${i}_${j}.json`); + if (!res.ok) continue; + chunk = await res.json(); + } catch { + continue; + } + for (const polygon of chunk.land ?? []) fillPolygon(ctx, polygon, chunk.origin, scale); + } + const texture = new CanvasTexture(canvas); + texture.needsUpdate = true; + const mesh = new Mesh( + new PlaneGeometry(width, depth), + new MeshBasicMaterial({ map: texture, transparent: true, depthWrite: false }), + ); + mesh.rotation.x = -Math.PI / 2; + mesh.position.set((SLICE.x0 + SLICE.x1) / 2, 0.05, -(SLICE.y0 + SLICE.y1) / 2); + mesh.visible = false; + return mesh; +} + +/** + * Baut das lil-gui-Debug-Panel (Task 11, Schritt 6): Figur, Frisur, Höhe, Hitbox anzeigen, + * Chunk-Grenzen anzeigen, Kartenbild auf dem Boden, Sichtweite (Nebel) und Sprung zu + * Wahrzeichen. requestTeleport(position) kommt aus main.js, weil nur main.js weiß, wie ein + * Sprung sicher wird (Collider am Ziel abwarten, s. dortiger Kommentar zu pendingTeleport) — + * ohne das würde ein Sprung auf ein noch nicht gestreamtes Wahrzeichen den Spieler ins + * Leere fallen und vom Auffangnetz zurückschicken lassen. + */ +export function createPanel({ player, characterModule, scene, manifest, baseUrl = "./data/vice-a", requestTeleport }) { + const targets = teleportTargets(LANDMARKS); + const chunkGrid = buildChunkGrid(); + scene.add(chunkGrid); + + let mapMesh = null, mapPromise = null, mapWanted = false; + function setMapImageVisible(visible) { + mapWanted = visible; + if (mapMesh) { mapMesh.visible = mapWanted; return; } + if (!mapPromise) { + mapPromise = buildMapMesh(manifest, baseUrl).then((mesh) => { + mapMesh = mesh; + mapMesh.visible = mapWanted; + scene.add(mapMesh); + }).catch((err) => { + console.warn("[panel] Kartenbild konnte nicht gebaut werden:", err); + }); + } + } + + const params = { + character: characterModule.state.currentCharacterName, + hair: characterModule.state.currentHairName, + height: characterModule.state.currentHeightFactor, + showHitbox: false, + showChunkGrid: false, + showMapImage: false, + fogDistance: scene.fog?.far ?? 2200, + landmark: targets[0]?.name ?? "", + }; + + const gui = new GUI({ title: "Debug" }); + + const characterFolder = gui.addFolder("Figur"); + characterFolder.add(params, "character", CHARACTERS.map((c) => c.name)).name("Figur") + .onChange((value) => { void characterModule.switchCharacter(value); }); + characterFolder.add(params, "hair", [HAIR_NONE, ...HAIRSTYLES]).name("Frisur") + .onChange((value) => { void characterModule.switchHair(value); }); + characterFolder.add(params, "height", 0.7, 1.3, 0.01).name("Höhe") + .onChange((value) => characterModule.applyHeight(value)); + characterFolder.add(params, "showHitbox").name("Hitbox anzeigen") + .onChange((value) => player.setPlayerCapsuleDebug?.(value)); + + const worldFolder = gui.addFolder("Welt"); + worldFolder.add(params, "showChunkGrid").name("Chunk-Grenzen anzeigen") + .onChange((value) => { chunkGrid.visible = value; }); + worldFolder.add(params, "showMapImage").name("Kartenbild auf dem Boden") + .onChange((value) => setMapImageVisible(value)); + worldFolder.add(params, "fogDistance", 400, 3000, 50).name("Sichtweite (Nebel)") + .onChange((value) => { if (scene.fog) scene.fog.far = value; }); + + const teleportFolder = gui.addFolder("Sprung zu Wahrzeichen"); + teleportFolder.add(params, "landmark", targets.map((t) => t.name)).name("Wahrzeichen") + .onChange((value) => { + const target = targets.find((t) => t.name === value); + if (!target) return; + requestTeleport(new Vector3(target.x, target.height + TELEPORT_MARGIN, target.z)); + }); + + return gui; +} diff --git a/src/world/streaming.js b/src/world/streaming.js index d1eeea5..6a7ae1b 100644 --- a/src/world/streaming.js +++ b/src/world/streaming.js @@ -32,11 +32,15 @@ function dist(k, position) { } export class ChunkStreamer { - constructor({ scene, player, materials, props, baseUrl = "./data/vice-a" }) { + constructor({ scene, player, materials, props, baseUrl = "./data/vice-a", pinned = [] }) { Object.assign(this, { scene, player, materials, props, baseUrl }); this.active = new Map(); // key -> { group, handle } this.pending = new Set(); this.queue = []; + // Chunks, die #unload nie abbaut (Task 11, Schritt 5): die vier Fahrzeug-Spawnpunkte + // liegen darauf, und ein Fahrzeug ohne Boden fällt ins Nichts, sobald der Spieler + // sich weit genug entfernt und der normale Radius-Abbau eingreift. + this.pinned = new Set(pinned); } update(position) { @@ -110,6 +114,7 @@ export class ChunkStreamer { } #unload(k) { + if (this.pinned.has(k)) return; const entry = this.active.get(k); if (!entry) return; // Ruling 51: collider-lose Chunks (offenes Wasser) haben kein handle abzumelden. diff --git a/tests/characters.test.js b/tests/characters.test.js new file mode 100644 index 0000000..b72c12f --- /dev/null +++ b/tests/characters.test.js @@ -0,0 +1,38 @@ +import { describe, expect, it } from "vitest"; +import { AnimationClip, Quaternion, QuaternionKeyframeTrack, VectorKeyframeTrack } from "three"; +import { retargetClips, teleportTargets } from "../src/characters/index.js"; + +const rest = (q) => new Map([["arm", { position: { x: 0, y: 1, z: 0 }, quaternion: q }]]); + +describe("retargetClips", () => { + it("wirft konstante Positionsspuren weg", () => { + const clip = new AnimationClip("a", 1, [ + new VectorKeyframeTrack("arm.position", [0, 1], [0, 1, 0, 0, 1, 0]), + new QuaternionKeyframeTrack("arm.quaternion", [0], [0, 0, 0, 1]), + ]); + const out = retargetClips([clip], rest(new Quaternion()), rest(new Quaternion())); + expect(out[0].tracks.map((t) => t.name)).toEqual(["arm.quaternion"]); + }); + + it("überträgt Rotationen relativ zur Ruhepose", () => { + const src = new Quaternion().setFromAxisAngle({ x: 0, y: 1, z: 0 }, 0.3); + const dst = new Quaternion().setFromAxisAngle({ x: 0, y: 1, z: 0 }, 0.9); + const clip = new AnimationClip("a", 1, [ + new QuaternionKeyframeTrack("arm.quaternion", [0], [src.x, src.y, src.z, src.w]), + ]); + const out = retargetClips([clip], rest(src), rest(dst)); + const v = out[0].tracks[0].values; + expect(new Quaternion(v[0], v[1], v[2], v[3]).angleTo(dst)).toBeLessThan(1e-6); + }); +}); + +describe("teleportTargets", () => { + it("sortiert Wahrzeichen nach Höhe", () => { + const targets = teleportTargets([ + { name: "klein", xyz: [0, 0, 0], height: 30 }, + { name: "groß", xyz: [10, 20, 0], height: 200 }, + ]); + expect(targets[0].name).toBe("groß"); + expect(targets[0].z).toBe(-20); + }); +}); diff --git a/tests/hud.test.js b/tests/hud.test.js new file mode 100644 index 0000000..4d0dd0a --- /dev/null +++ b/tests/hud.test.js @@ -0,0 +1,37 @@ +import { describe, expect, it } from "vitest"; +import { buildAttribution } from "../src/ui/hud.js"; + +// Die Namensnennung ist Pflicht (CC BY, s. task-11-brief.md), keine Kosmetik — deshalb wird +// die Textzusammensetzung hier ohne Browser geprüft statt nur im laufenden HUD betrachtet. +describe("buildAttribution", () => { + const manifest = { + attribution: "Kartenkacheln: GTA VI Map (CC BY 4.0) — https://map.gtadb.org, YANIS v15. " + + "Wahrzeichen: rolux/gtamaplib-vc (Unlicense).", + }; + + it("behält den Manifest-Text wörtlich bei", () => { + expect(buildAttribution(manifest)).toContain(manifest.attribution); + }); + + it("ergänzt alle vier Modellquellen mit ihrer jeweiligen Lizenz", () => { + const text = buildAttribution(manifest); + expect(text).toContain("Boris731"); + expect(text).toContain("Poly Haven"); + expect(text).toContain("Nobiax"); + expect(text).toContain("Quaternius"); + expect(text).toMatch(/Boris731[^.]*CC BY/); + expect(text).toMatch(/Poly Haven[^.]*CC0/); + expect(text).toMatch(/Nobiax[^.]*CC0/); + expect(text).toMatch(/Quaternius[^.]*CC0/); + }); + + // Ruling (task-11-brief.md): keine Lizenz kürzen, keine zwei Lizenzen in einer Zeile + // vermischen, kein CC0 für etwas behaupten, das CC BY ist — der SUV-Satz muss darum + // isoliert bleiben und darf nicht in denselben Satz wie ein CC0-Eintrag rutschen. + it("vermischt die SUV-Lizenz (CC BY) nicht mit einer CC0-Angabe im selben Satz", () => { + const text = buildAttribution(manifest); + const suvSentence = text.split(".").find((s) => s.includes("Boris731")); + expect(suvSentence).toBeTruthy(); + expect(suvSentence).not.toContain("CC0"); + }); +}); diff --git a/tests/streaming.test.js b/tests/streaming.test.js index 8abb642..f226a5c 100644 --- a/tests/streaming.test.js +++ b/tests/streaming.test.js @@ -36,7 +36,7 @@ const emptyChunk = { chunk: [4, 6], origin: [0, -1000], land: [], surfaces: [], // Zentrum von Chunk 4_6 in three-Koordinaten: SLICE.x0 + 4.5*CHUNK_SIZE, -(SLICE.y1 - 6.5*CHUNK_SIZE). const emptyChunkCenter = { x: 125, z: -875 }; -function makeStreamer(chunkData, props) { +function makeStreamer(chunkData, props, pinned) { vi.stubGlobal("fetch", vi.fn(async () => ({ ok: true, json: async () => chunkData }))); const player = { addCollider: vi.fn(() => ({ id: 42 })), @@ -47,7 +47,7 @@ function makeStreamer(chunkData, props) { collisionWorld: { get: vi.fn(() => ({ ready: false })) }, }; const scene = { add: vi.fn(), remove: vi.fn() }; - return { streamer: new ChunkStreamer({ scene, player, materials: {}, props }), player, scene }; + return { streamer: new ChunkStreamer({ scene, player, materials: {}, props, pinned }), player, scene }; } // #load() ist privat und läuft nebenläufig; zwei Mikrotask-Runden reichen, um @@ -127,6 +127,31 @@ describe("ChunkStreamer", () => { expect(ownDispose).toHaveBeenCalledTimes(1); expect(sharedDispose).not.toHaveBeenCalled(); }); + + // Task 11, Schritt 5: die vier Fahrzeug-Chunks werden festgehalten, weil ein Fahrzeug + // ohne Boden ins Nichts fällt — #unload muss sie überspringen, statt sie beim + // gewöhnlichen Entfernen-jenseits-des-Radius-Durchlauf trotzdem abzubauen. Mit echter + // Landgeometrie (nicht emptyChunk), damit ein echtes Collider-Handle entsteht und die + // removeCollider-Zusicherung unten etwas prüft, statt nach Ruling 51 trivial wahr zu sein. + it("entlädt einen angehefteten Chunk nicht, auch jenseits des Entladeradius (Task 11)", async () => { + const landChunk = { + chunk: [4, 6], origin: [0, -1000], + land: [[[[0, 0], [50, 0], [50, 50], [0, 50]]]], + surfaces: [], roads: [], buildings: [], + }; + const { streamer, player } = makeStreamer(landChunk, undefined, ["4_6"]); + streamer.update(emptyChunkCenter); + await flush(); + expect(streamer.active.has("4_6")).toBe(true); + expect(player.addCollider).toHaveBeenCalledTimes(1); // sonst prüft removeCollider unten nichts + + // Weit weg -> jenseits des Entladeradius (600); ohne pinned wäre "4_6" nun weg + // (siehe Test oben, gleiches Setup ohne pinned). + streamer.update({ x: emptyChunkCenter.x + 5000, z: emptyChunkCenter.z }); + + expect(streamer.active.has("4_6")).toBe(true); + expect(player.removeCollider).not.toHaveBeenCalled(); + }); }); // Fix-Runde 2, Befund C / Ruling 64: der Zweig `if (this.props)` in #load hatte keine