# Better FBX 完整骨骼数据 # 包含头部位置、尾部偏移、Roll值和父子关系 # 可以直接用于在 Blender 中重建完整的 181 个骨骼的骨架 # 从 better_fbx 导入的 Koikatsu 模型骨架中提取 from mathutils import Vector better_fbx_complete_bone_data = { 'p_cf_body_00': { 'head': (0.0000000000, 0.0000000000, 0.0000000000), 'tail_offset': (0.0000000000, 0.0000000000, 0.5717499852), 'roll': 0.0000000000, 'parent': None }, 'cf_o_root': { 'head': (0.0000000000, 0.0000000000, 1.1434999704), 'tail_offset': (0.0000000000, 0.0000000000, 0.0214350224), 'roll': 0.0000000000, 'parent': 'p_cf_body_00' }, 'n_body': { 'head': (0.0000000000, 0.0000000000, 1.1434999704), 'tail_offset': (0.0000000000, 0.0000000000, 0.0214350224), 'roll': 0.0000000000, 'parent': 'cf_o_root' }, 'o_body_a': { 'head': (0.0000000000, 0.0000000000, 1.1434999704), 'tail_offset': (0.0000000000, 0.0000000000, 0.0214350224), 'roll': 0.0000000000, 'parent': 'n_body' }, 'cf_j_root': { 'head': (0.0000000000, 0.0000000000, 0.0000000000), 'tail_offset': (0.0000000000, 0.0000000000, 0.0099999998), 'roll': 0.0000000000, 'parent': 'p_cf_body_00' }, 'cf_n_height': { 'head': (0.0000000000, 0.0000000000, 0.0000000000), 'tail_offset': (0.0000000000, 0.0000000000, 1.1434999704), 'roll': 0.0000000000, 'parent': 'cf_j_root' }, 'cf_j_hips': { 'head': (0.0000000000, 0.0000000000, 1.1434999704), 'tail_offset': (0.0000000000, 0.0000000000, 0.0214350224), 'roll': 0.0000000000, 'parent': 'cf_n_height' }, 'cf_j_waist01': { 'head': (0.0000000000, 0.0000000000, 1.1384999752), 'tail_offset': (0.0000000050, 0.0082969246, -0.0676312447), 'roll': 0.0000000000, 'parent': 'cf_j_hips' }, 'cf_j_waist02': { 'head': (0.0000000000, 0.0165938493, 1.0032373667), 'tail_offset': (0.0000061035, 0.0022072941, -0.0269574523), 'roll': 0.0000000000, 'parent': 'cf_j_waist01' }, 'cf_d_ana': { 'head': (0.0000000100, 0.0520442016, 0.9285330772), 'tail_offset': (0.0000000011, -0.0037057437, 0.0183483958), 'roll': 0.0000005385, 'parent': 'cf_j_waist02' }, 'cf_j_ana': { 'head': (0.0000000100, 0.0520441495, 0.9285331368), 'tail_offset': (0.0000000000, 0.0004356094, -0.0009342432), 'roll': 0.0000004141, 'parent': 'cf_d_ana' }, 'cf_s_ana': { 'head': (0.0000000100, 0.0524797589, 0.9275988936), 'tail_offset': (0.0000000000, 0.0004356094, -0.0009342432), 'roll': 0.0000004141, 'parent': 'cf_j_ana' }, 'cf_d_kokan': { 'head': (0.0000000300, -0.0034061500, 0.9392373562), 'tail_offset': (0.0000000003, -0.0000340615, 0.0193923712), 'roll': 0.0000000000, 'parent': 'cf_j_waist02' }, 'cf_j_kokan': { 'head': (0.0000000300, -0.0034062001, 0.9392373562), 'tail_offset': (0.0000000003, -0.0000340852, 0.0193923712), 'roll': 0.0000007500, 'parent': 'cf_d_kokan' }, 'cf_d_siri_L': { 'head': (0.0700005591, 0.0165946409, 1.0032392740), 'tail_offset': (0.0006995648, 0.0001653936, 0.0200324059), 'roll': -0.0000000013, 'parent': 'cf_j_waist02' }, 'cf_d_siri01_L': { 'head': (0.0700005591, 0.0165946409, 1.0032392740), 'tail_offset': (-0.0000022426, 0.0499999970, 0.0000028610), 'roll': 0.0000004936, 'parent': 'cf_d_siri_L' }, 'cf_j_siri_L': { 'head': (0.0699983165, 0.0665946379, 1.0032421350), 'tail_offset': (0.0006995425, 0.0006653816, 0.0200324059), 'roll': 0.0000004936, 'parent': 'cf_d_siri01_L' }, 'cf_s_siri_L': { 'head': (0.0699983090, 0.0665946379, 1.0032421350), 'tail_offset': (0.0006995425, 0.0006653816, 0.0200324059), 'roll': 0.0000004936, 'parent': 'cf_j_siri_L' }, 'cf_d_siri_R': { 'head': (-0.0700001270, 0.0165937506, 1.0032376051), 'tail_offset': (-0.0007000044, 0.0001655202, 0.0200324059), 'roll': -0.0000000600, 'parent': 'cf_j_waist02' }, 'cf_d_siri01_R': { 'head': (-0.0700001270, 0.0165937506, 1.0032376051), 'tail_offset': (0.0000000000, 0.0499999858, 0.0000020266), 'roll': -0.0000000600, 'parent': 'cf_d_siri_R' }, 'cf_j_siri_R': { 'head': (-0.0700001270, 0.0665937364, 1.0032396317), 'tail_offset': (-0.0007000044, 0.0006655231, 0.0200324059), 'roll': -0.0000000600, 'parent': 'cf_d_siri01_R' }, 'cf_s_siri_R': { 'head': (-0.0700001270, 0.0665937364, 1.0032396317), 'tail_offset': (-0.0007000044, 0.0006655082, 0.0200324059), 'roll': 0.0000001400, 'parent': 'cf_j_siri_R' }, 'cf_j_thigh00_L': { 'head': (0.0830422416, 0.0165938493, 0.9782373309), 'tail_offset': (0.0000000000, 0.0045367014, -0.2599085569), 'roll': -0.0000257950, 'parent': 'cf_j_waist02' }, 'cf_d_thigh01_L': { 'head': (0.0830422416, 0.0165938493, 0.9782373309), 'tail_offset': (0.0008304268, -0.0000085849, 0.0197808743), 'roll': 0.0000004869, 'parent': 'cf_j_thigh00_L' }, 'cf_s_thigh01_L': { 'head': (0.0830422416, 0.0165938493, 0.9782374501), 'tail_offset': (0.0008304268, -0.0000085849, 0.0197808743), 'roll': 0.0000004869, 'parent': 'cf_d_thigh01_L' }, 'cf_d_thigh02_L': { 'head': (0.0830421895, 0.0205690805, 0.7504963279), 'tail_offset': (0.0008304268, 0.0000311676, 0.0175034404), 'roll': 0.0000007420, 'parent': 'cf_j_thigh00_L' }, 'cf_s_thigh02_L': { 'head': (0.0830421820, 0.0205690805, 0.7504962683), 'tail_offset': (0.0008304268, 0.0000311676, 0.0175034404), 'roll': 0.0000007420, 'parent': 'cf_d_thigh02_L' }, 'cf_d_thigh03_L': { 'head': (0.0830421671, 0.0227373894, 0.6262739897), 'tail_offset': (0.0008304268, 0.0000528507, 0.0162612200), 'roll': 0.0000009920, 'parent': 'cf_j_thigh00_L' }, 'cf_s_thigh03_L': { 'head': (0.0830421597, 0.0227373894, 0.6262739897), 'tail_offset': (0.0008304268, 0.0000528507, 0.0162612200), 'roll': 0.0000009920, 'parent': 'cf_d_thigh03_L' }, 'cf_j_leg01_L': { 'head': (0.0830423534, 0.0246218797, 0.5183074474), 'tail_offset': (-0.0000001565, -0.0001882389, -0.2238392234), 'roll': -0.0000262570, 'parent': 'cf_j_thigh00_L' }, 'cf_d_kneeF_L': { 'head': (0.0830413178, -0.0153537504, 0.5169112682), 'tail_offset': (-0.0000010356, -0.0399756283, -0.0013961792), 'roll': -0.0000262570, 'parent': 'cf_j_leg01_L' }, 'cf_d_leg02_L': { 'head': (0.0830424130, 0.0332937911, 0.2699765563), 'tail_offset': (0.0008304194, -0.0000160560, 0.0126936734), 'roll': -0.0000132481, 'parent': 'cf_j_leg01_L' }, 'cf_s_leg02_L': { 'head': (0.0830423832, 0.0332937911, 0.2699761987), 'tail_offset': (0.0004141256, 0.0006808266, -0.0072855055), 'roll': -3.1033129692, 'parent': 'cf_d_leg02_L' }, 'cf_d_leg03_L': { 'head': (0.0830424502, 0.0398031399, 0.0835729465), 'tail_offset': (0.0008304194, 0.0000490360, 0.0108296350), 'roll': -0.0000002392, 'parent': 'cf_j_leg01_L' }, 'cf_s_leg03_L': { 'head': (0.0830424428, 0.0398032106, 0.0835727602), 'tail_offset': (0.0008304194, 0.0000490360, 0.0108296350), 'roll': -0.0000002392, 'parent': 'cf_d_leg03_L' }, 'cf_j_leg03_L': { 'head': (0.0830424502, 0.0398031399, 0.0835729465), 'tail_offset': (0.0000000000, 0.0117738210, -0.0496065579), 'roll': 0.0000000000, 'parent': 'cf_j_leg01_L' }, 'cf_j_foot_L': { 'head': (0.0830424502, 0.0515769608, 0.0339663886), 'tail_offset': (-0.0000000075, -0.1070634499, -0.0073633678), 'roll': 0.0000000000, 'parent': 'cf_j_leg03_L' }, 'cf_j_toes_L': { 'head': (0.0830424428, -0.0554864891, 0.0266030207), 'tail_offset': (-0.0000000075, -0.1070634536, -0.0073633678), 'roll': 0.0000000000, 'parent': 'cf_j_foot_L' }, 'cf_s_leg01_L': { 'head': (0.0830423608, 0.0246218797, 0.5183073282), 'tail_offset': (0.0000015497, 0.0599634517, 0.0020940304), 'roll': -0.0000262570, 'parent': 'cf_j_leg01_L' }, 'cf_s_kneeB_L': { 'head': (0.0830439106, 0.0845853314, 0.5204013586), 'tail_offset': (0.0000015497, 0.0599634424, 0.0020940304), 'roll': -0.0000262570, 'parent': 'cf_s_leg01_L' }, 'cf_j_thigh00_R': { 'head': (-0.0829999968, 0.0165938493, 0.9782373309), 'tail_offset': (0.0000000149, 0.0045371708, -0.2599344850), 'roll': -0.0000023800, 'parent': 'cf_j_waist02' }, 'cf_d_thigh01_R': { 'head': (-0.0829999968, 0.0165955909, 0.9781373739), 'tail_offset': (-0.0008299947, -0.0000085682, 0.0197798610), 'roll': 0.0000005021, 'parent': 'cf_j_thigh00_R' }, 'cf_s_thigh01_R': { 'head': (-0.0829999894, 0.0165956002, 0.9781373739), 'tail_offset': (-0.0008299947, -0.0000085682, 0.0197798610), 'roll': 0.0000004819, 'parent': 'cf_d_thigh01_R' }, 'cf_d_thigh02_R': { 'head': (-0.0829999968, 0.0205690991, 0.7504955530), 'tail_offset': (-0.0008299947, 0.0000311676, 0.0175034404), 'roll': 0.0000007572, 'parent': 'cf_j_thigh00_R' }, 'cf_s_thigh02_R': { 'head': (-0.0829999894, 0.0205690991, 0.7504956126), 'tail_offset': (-0.0008299947, 0.0000311676, 0.0175034404), 'roll': 0.0000007370, 'parent': 'cf_d_thigh02_R' }, 'cf_d_thigh03_R': { 'head': (-0.0829999968, 0.0227374099, 0.6262727380), 'tail_offset': (-0.0008299947, 0.0000528507, 0.0162612200), 'roll': 0.0000010122, 'parent': 'cf_j_thigh00_R' }, 'cf_s_thigh03_R': { 'head': (-0.0829999894, 0.0227374099, 0.6262726784), 'tail_offset': (-0.0008299947, 0.0000528507, 0.0162612200), 'roll': 0.0000009920, 'parent': 'cf_d_thigh03_R' }, 'cf_j_leg01_R': { 'head': (-0.0829999372, 0.0246219803, 0.5183057785), 'tail_offset': (0.0000000000, -0.0001882352, -0.2238395214), 'roll': -0.0000025280, 'parent': 'cf_j_thigh00_R' }, 'cf_d_kneeF_R': { 'head': (-0.0830000266, -0.0153536396, 0.5169096589), 'tail_offset': (-0.0000000894, -0.0399756199, -0.0013961196), 'roll': -0.0000025484, 'parent': 'cf_j_leg01_R' }, 'cf_d_leg02_R': { 'head': (-0.0829999074, 0.0332938693, 0.2699745595), 'tail_offset': (-0.0008300021, -0.0000160560, 0.0126936436), 'roll': -0.0000016877, 'parent': 'cf_j_leg01_R' }, 'cf_s_leg02_R': { 'head': (-0.0829998925, 0.0332938805, 0.2699744105), 'tail_offset': (-0.0008300021, -0.0000160560, 0.0126936436), 'roll': -0.0000017081, 'parent': 'cf_d_leg02_R' }, 'cf_d_leg03_R': { 'head': (-0.0829998925, 0.0398032591, 0.0835707411), 'tail_offset': (-0.0008300021, 0.0000490360, 0.0108296126), 'roll': -0.0000025680, 'parent': 'cf_j_leg01_R' }, 'cf_s_leg03_R': { 'head': (-0.0829998776, 0.0398032703, 0.0835706517), 'tail_offset': (-0.0008300021, 0.0000490360, 0.0108296126), 'roll': -0.0000025884, 'parent': 'cf_d_leg03_R' }, 'cf_j_leg03_R': { 'head': (-0.0829998776, 0.0398032591, 0.0835707411), 'tail_offset': (0.0000000745, 0.0117738321, -0.0495891199), 'roll': 0.0000023126, 'parent': 'cf_j_leg01_R' }, 'cf_j_foot_R': { 'head': (-0.0829998031, 0.0515770912, 0.0339816213), 'tail_offset': (0.0000000447, -0.1070637517, -0.0073810909), 'roll': 0.0000023200, 'parent': 'cf_j_leg03_R' }, 'cf_j_toes_R': { 'head': (-0.0829997584, -0.0554866605, 0.0266005304), 'tail_offset': (0.0000000447, -0.1070637591, -0.0073810909), 'roll': 0.0000000000, 'parent': 'cf_j_foot_R' }, 'cf_s_leg01_R': { 'head': (-0.0829999372, 0.0246219803, 0.5183055997), 'tail_offset': (0.0000001490, 0.0599634480, 0.0020939708), 'roll': -0.0000025484, 'parent': 'cf_j_leg01_R' }, 'cf_s_kneeB_R': { 'head': (-0.0829997882, 0.0845854282, 0.5203995705), 'tail_offset': (0.0000001490, 0.0599634498, 0.0020939708), 'roll': -0.0000025484, 'parent': 'cf_s_leg01_R' }, 'cf_s_waist02': { 'head': (0.0000000100, 0.0165938493, 1.0032373667), 'tail_offset': (0.0000041698, 0.0000045616, 0.0999919176), 'roll': 0.0000000600, 'parent': 'cf_j_waist02' }, 'cf_s_leg_L': { 'head': (0.1000121087, 0.0165973399, 1.1032338142), 'tail_offset': (0.1000121087, 0.0000034906, 0.0999964476), 'roll': 0.0000959927, 'parent': 'cf_s_waist02' }, 'cf_s_leg_R': { 'head': (-0.1000037491, 0.0165994801, 1.1032247543), 'tail_offset': (-0.1000037491, 0.0000056308, 0.0999873877), 'roll': -0.0000147290, 'parent': 'cf_s_waist02' }, 'cf_s_waist01': { 'head': (0.0000000100, 0.0000000000, 1.1384999752), 'tail_offset': (0.0000000001, 0.0000000000, 0.0213849545), 'roll': 0.0000000000, 'parent': 'cf_j_waist01' }, 'cf_j_spine01': { 'head': (0.0000000000, 0.0000000000, 1.1484999657), 'tail_offset': (0.0000000000, 0.0032969250, 0.0450000763), 'roll': 0.0000000000, 'parent': 'cf_j_hips' }, 'cf_s_spine01': { 'head': (0.0000000000, 0.0000000000, 1.1484999657), 'tail_offset': (0.0000000000, 0.0000000000, 0.0214849710), 'roll': 0.0000002100, 'parent': 'cf_j_spine01' }, 'cf_j_spine02': { 'head': (0.0000000000, 0.0065938500, 1.2384999990), 'tail_offset': (0.0000000000, 0.0050841947, 0.0449999571), 'roll': 0.0000000000, 'parent': 'cf_j_spine01' }, 'cf_s_spine02': { 'head': (0.0000000000, 0.0065938500, 1.2384999990), 'tail_offset': (0.0000000000, 0.0000659386, 0.0223850012), 'roll': 0.0000000000, 'parent': 'cf_j_spine02' }, 'cf_j_spine03': { 'head': (0.0000000000, 0.0167622399, 1.3284999132), 'tail_offset': (0.0000064438, 0.0028000008, 0.0566434860), 'roll': 0.0000000000, 'parent': 'cf_j_spine02' }, 'cf_j_neck': { 'head': (0.0000000000, 0.0167622399, 1.4504170418), 'tail_offset': (0.0000000000, 0.0000000000, 0.0325000286), 'roll': 0.0000000000, 'parent': 'cf_j_spine03' }, 'cf_j_head': { 'head': (0.0000000000, 0.0167622399, 1.5154169798), 'tail_offset': (0.0000000000, 0.0001676232, 0.0251541138), 'roll': 0.0000000000, 'parent': 'cf_j_neck' }, 'cf_s_head': { 'head': (0.0000000000, 0.0167622399, 1.5154169798), 'tail_offset': (0.0000000000, 0.0001676232, 0.0251541138), 'roll': 0.0000002100, 'parent': 'cf_j_head' }, 'cf_s_neck': { 'head': (0.0000000000, 0.0167622399, 1.4504170418), 'tail_offset': (0.0000000000, 0.0001676232, 0.0245041847), 'roll': 0.0000000000, 'parent': 'cf_j_neck' }, 'cf_s_spine03': { 'head': (0.0000000000, 0.0167622399, 1.3284999132), 'tail_offset': (0.0000000000, 0.0001676232, 0.0232850313), 'roll': 0.0000000000, 'parent': 'cf_j_spine03' }, 'cf_d_shoulder_L': { 'head': (0.0156336892, 0.0237622391, 1.4131999016), 'tail_offset': (0.0001563374, 0.0002376232, 0.0241320133), 'roll': 0.0000000000, 'parent': 'cf_j_spine03' }, 'cf_j_shoulder_L': { 'head': (0.0156336892, 0.0237622391, 1.4131999016), 'tail_offset': (0.0940132719, -0.0000001993, 0.0000000000), 'roll': 0.0000000000, 'parent': 'cf_d_shoulder_L' }, 'cf_d_shoulder02_L': { 'head': (0.1096468568, 0.0237618405, 1.4131999016), 'tail_offset': (0.0010964721, 0.0002376176, 0.0241320133), 'roll': -0.0000057600, 'parent': 'cf_j_shoulder_L' }, 'cf_s_shoulder02_L': { 'head': (0.1096468568, 0.0237618405, 1.4132000208), 'tail_offset': (0.0010964721, 0.0002376176, 0.0241320133), 'roll': -0.0000057600, 'parent': 'cf_d_shoulder02_L' }, 'cf_j_arm00_L': { 'head': (0.1096470580, 0.0237622391, 1.4131999016), 'tail_offset': (0.1489044800, 0.0066715311, 0.0000000000), 'roll': 0.0439909510, 'parent': 'cf_j_shoulder_L' }, 'cf_d_arm01_L': { 'head': (0.1296277046, 0.0246417802, 1.4131999016), 'tail_offset': (0.0012971163, 0.0002268590, 0.0241320133), 'roll': 0.0428693146, 'parent': 'cf_j_arm00_L' }, 'cf_s_arm01_L': { 'head': (0.1296011955, 0.0252614897, 1.4132013321), 'tail_offset': (0.0012968481, 0.0002330560, 0.0241320133), 'roll': 0.0532971583, 'parent': 'cf_d_arm01_L' }, 'cf_d_arm02_L': { 'head': (0.2287678421, 0.0292154495, 1.4131999016), 'tail_offset': (0.0022885203, 0.0002723690, 0.0241320133), 'roll': 0.0428703651, 'parent': 'cf_j_arm00_L' }, 'cf_s_arm02_L': { 'head': (0.2287678570, 0.0292154495, 1.4131997824), 'tail_offset': (0.0022885203, 0.0002723690, 0.0241320133), 'roll': 0.0480841845, 'parent': 'cf_d_arm02_L' }, 'cf_d_arm03_L': { 'head': (0.3134112954, 0.0329414085, 1.4131999016), 'tail_offset': (0.0031349957, 0.0003089495, 0.0241320133), 'roll': 0.0428732038, 'parent': 'cf_j_arm00_L' }, 'cf_s_arm03_L': { 'head': (0.3134184778, 0.0327739306, 1.4131997824), 'tail_offset': (0.0031350553, 0.0003072731, 0.0241320133), 'roll': 0.0428689606, 'parent': 'cf_d_arm03_L' }, 'cf_j_forearm01_L': { 'head': (0.3623993397, 0.0349364392, 1.4131999016), 'tail_offset': (0.1090970039, 0.0050626770, 0.0000000000), 'roll': 0.0000298800, 'parent': 'cf_j_arm00_L' }, 'cf_d_forearm02_L': { 'head': (0.4659337103, 0.0349395312, 1.4131999016), 'tail_offset': (0.0046593249, 0.0003493950, 0.0241320133), 'roll': 0.0000298800, 'parent': 'cf_j_forearm01_L' }, 'cf_s_forearm02_L': { 'head': (0.4659157991, 0.0353630111, 1.4132000208), 'tail_offset': (0.0046591461, 0.0003536306, 0.0241320133), 'roll': 0.0000298900, 'parent': 'cf_d_forearm02_L' }, 'cf_d_wrist_L': { 'head': (0.5543993115, 0.0349338204, 1.4131999016), 'tail_offset': (0.0055440068, 0.0003493391, 0.0241320133), 'roll': 0.0000298800, 'parent': 'cf_j_forearm01_L' }, 'cf_s_wrist_L': { 'head': (0.5543813109, 0.0353573002, 1.4131997824), 'tail_offset': (0.0250180364, -0.0004227310, 0.0000002384), 'roll': 0.0000298800, 'parent': 'cf_d_wrist_L' }, 'cf_d_hand_L': { 'head': (0.5793993473, 0.0349345692, 1.4132000208), 'tail_offset': (0.0250180364, -0.0004227310, 0.0000002384), 'roll': 0.0000298800, 'parent': 'cf_s_wrist_L' }, 'cf_j_hand_L': { 'head': (0.6123993397, 0.0349439085, 1.4131999016), 'tail_offset': (0.0061240196, 0.0003494397, 0.0241320133), 'roll': 0.0000000000, 'parent': 'cf_j_forearm01_L' }, 'cf_s_hand_L': { 'head': (0.6123992801, 0.0349439085, 1.4132000208), 'tail_offset': (0.0434948206, -0.0036587194, -0.0018885136), 'roll': 0.0000000000, 'parent': 'cf_j_hand_L' }, 'cf_j_index01_L': { 'head': (0.6684081554, 0.0140276598, 1.4142888784), 'tail_offset': (0.0308244824, -0.0027071098, -0.0026963949), 'roll': -0.0063064583, 'parent': 'cf_s_hand_L' }, 'cf_j_index02_L': { 'head': (0.6992326379, 0.0113205500, 1.4115924835), 'tail_offset': (0.0205492973, -0.0018050103, -0.0018019676), 'roll': -0.0061317827, 'parent': 'cf_j_index01_L' }, 'cf_j_index03_L': { 'head': (0.7197819352, 0.0095155397, 1.4097905159), 'tail_offset': (0.0205492973, -0.0018050103, -0.0018019676), 'roll': -0.0060734837, 'parent': 'cf_j_index02_L' }, 'cf_j_little01_L': { 'head': (0.6591357589, 0.0573692396, 1.4077364206), 'tail_offset': (0.0280875564, 0.0039625615, -0.0024572611), 'roll': 0.1925563514, 'parent': 'cf_s_hand_L' }, 'cf_j_little02_L': { 'head': (0.6872233152, 0.0613318011, 1.4052791595), 'tail_offset': (0.0152931809, 0.0021575317, -0.0013381243), 'roll': 0.1925694495, 'parent': 'cf_j_little01_L' }, 'cf_j_little03_L': { 'head': (0.7025164962, 0.0634893328, 1.4039410353), 'tail_offset': (0.0152931809, 0.0021575317, -0.0013381243), 'roll': 0.1925694495, 'parent': 'cf_j_little02_L' }, 'cf_j_middle01_L': { 'head': (0.6709137559, 0.0295578092, 1.4168773890), 'tail_offset': (0.0340363383, 0.0000000112, -0.0029777288), 'roll': 0.0872664526, 'parent': 'cf_s_hand_L' }, 'cf_j_middle02_L': { 'head': (0.7049500942, 0.0295578204, 1.4138996601), 'tail_offset': (0.0226911902, 0.0000002403, -0.0019830465), 'roll': 0.0871735811, 'parent': 'cf_j_middle01_L' }, 'cf_j_middle03_L': { 'head': (0.7276412845, 0.0295580607, 1.4119166136), 'tail_offset': (0.0226911902, 0.0000002403, -0.0019830465), 'roll': 0.0871735811, 'parent': 'cf_j_middle02_L' }, 'cf_j_ring01_L': { 'head': (0.6663091183, 0.0442365594, 1.4139549732), 'tail_offset': (0.0324101448, 0.0022749901, -0.0028355122), 'roll': 0.1479601413, 'parent': 'cf_s_hand_L' }, 'cf_j_ring02_L': { 'head': (0.6987192631, 0.0465115495, 1.4111194611), 'tail_offset': (0.0216068029, 0.0015166700, -0.0018904209), 'roll': 0.1479601413, 'parent': 'cf_j_ring01_L' }, 'cf_j_ring03_L': { 'head': (0.7203260660, 0.0480282195, 1.4092290401), 'tail_offset': (0.0216068029, 0.0015166700, -0.0018904209), 'roll': 0.1479601413, 'parent': 'cf_j_ring02_L' }, 'cf_j_thumb01_L': { 'head': (0.6147037148, 0.0112346699, 1.4036999941), 'tail_offset': (0.0274280310, -0.0195015902, -0.0048363209), 'roll': -2.9670588970, 'parent': 'cf_s_hand_L' }, 'cf_j_thumb02_L': { 'head': (0.6421317458, -0.0082669202, 1.3988636732), 'tail_offset': (0.0201677084, -0.0143394098, -0.0035561323), 'roll': -2.9670588970, 'parent': 'cf_j_thumb01_L' }, 'cf_j_thumb03_L': { 'head': (0.6622994542, -0.0226063300, 1.3953075409), 'tail_offset': (0.0201677084, -0.0143394079, -0.0035561323), 'roll': -2.9670588970, 'parent': 'cf_j_thumb02_L' }, 'cf_s_elbo_L': { 'head': (0.3623679578, 0.0598184206, 1.4132000208), 'tail_offset': (-0.0000313818, 0.0248819850, 0.0000001192), 'roll': 0.0008395802, 'parent': 'cf_j_forearm01_L' }, 'cf_s_forearm01_L': { 'head': (0.3623813689, 0.0353599116, 1.4132000208), 'tail_offset': (0.0004531145, -0.0307315015, 0.0000000000), 'roll': 0.0000298900, 'parent': 'cf_j_forearm01_L' }, 'cf_s_elboback_L': { 'head': (0.3628344834, 0.0046284101, 1.4132000208), 'tail_offset': (0.0004531145, -0.0307315006, 0.0000000000), 'roll': 0.0008395802, 'parent': 'cf_s_forearm01_L' }, 'cf_d_bust00': { 'head': (0.0000000000, 0.0167622399, 1.3203999996), 'tail_offset': (0.0000000000, 0.0001676232, 0.0232039690), 'roll': 0.0000000000, 'parent': 'cf_j_spine03' }, 'cf_s_bust00_R': { 'head': (0.0000000000, 0.0167622399, 1.3203999996), 'tail_offset': (-0.0575999990, -0.0454922598, 0.0026999712), 'roll': 0.0000000000, 'parent': 'cf_d_bust00' }, 'cf_d_bust01_R': { 'head': (-0.0575999990, -0.0287300199, 1.3230999708), 'tail_offset': (-0.0002007224, 0.0006882958, 0.0231761932), 'roll': -0.3313451409, 'parent': 'cf_s_bust00_R' }, 'cf_j_bust01_R': { 'head': (-0.0575999990, -0.0287300199, 1.3230999708), 'tail_offset': (-0.0051772669, -0.0134591460, 0.0015155077), 'roll': -0.3313451409, 'parent': 'cf_d_bust01_R' }, 'cf_d_bust02_R': { 'head': (-0.0679545328, -0.0556483082, 1.3261312246), 'tail_offset': (-0.0003042668, 0.0004191138, 0.0232065916), 'roll': -0.3313451409, 'parent': 'cf_j_bust01_R' }, 'cf_j_bust02_R': { 'head': (-0.0679545328, -0.0556483082, 1.3261312246), 'tail_offset': (-0.0046416745, -0.0120668225, 0.0013588667), 'roll': -0.3313451409, 'parent': 'cf_d_bust02_R' }, 'cf_d_bust03_R': { 'head': (-0.0772378966, -0.0797819495, 1.3288489580), 'tail_offset': (-0.0003971010, 0.0001777783, 0.0232336521), 'roll': -0.3313451409, 'parent': 'cf_j_bust02_R' }, 'cf_j_bust03_R': { 'head': (-0.0772378966, -0.0797819495, 1.3288489580), 'tail_offset': (-0.0017852709, -0.0046411008, 0.0005227327), 'roll': -0.3313451409, 'parent': 'cf_d_bust03_R' }, 'cf_d_bnip01_R': { 'head': (-0.0808084309, -0.0890641212, 1.3298943043), 'tail_offset': (-0.0006545857, -0.0017017275, 0.0001918077), 'roll': -0.3313451409, 'parent': 'cf_j_bust03_R' }, 'cf_j_bnip02root_R': { 'head': (-0.0818795711, -0.0918487534, 1.3302081823), 'tail_offset': (-0.0048966482, -0.0061617792, 0.0016967058), 'roll': -0.3313451409, 'parent': 'cf_d_bnip01_R' }, 'cf_s_bnip02_R': { 'head': (-0.0833077803, -0.0955616236, 1.3306262493), 'tail_offset': (-0.0004578009, 0.0000199825, 0.0232515335), 'roll': -0.3313451409, 'parent': 'cf_j_bnip02root_R' }, 'cf_j_bnip02_R': { 'head': (-0.0833077803, -0.0955616236, 1.3306261301), 'tail_offset': (-0.0004578009, 0.0000199825, 0.0232515335), 'roll': -0.3313450813, 'parent': 'cf_s_bnip02_R' }, 'cf_s_bnip025_R': { 'head': (-0.0902446583, -0.1004594415, 1.3331835270), 'tail_offset': (-0.0083650872, -0.0086106881, 0.0029753447), 'roll': -0.3000984490, 'parent': 'cf_j_bnip02root_R' }, 'cf_s_bnip01_R': { 'head': (-0.0808084309, -0.0890641287, 1.3298943043), 'tail_offset': (-0.0004328042, 0.0000849515, 0.0232441425), 'roll': -0.3313450813, 'parent': 'cf_d_bnip01_R' }, 'cf_s_bnip015_R': { 'head': (-0.0817010403, -0.0913846418, 1.3301558495), 'tail_offset': (-0.0008926094, -0.0023205206, 0.0002615452), 'roll': -0.3313450813, 'parent': 'cf_d_bnip01_R' }, 'cf_s_bust03_R': { 'head': (-0.0772379115, -0.0797819793, 1.3288490772), 'tail_offset': (-0.0003971010, 0.0001777783, 0.0232336521), 'roll': -0.3313450813, 'parent': 'cf_j_bust03_R' }, 'cf_s_bust02_R': { 'head': (-0.0679545179, -0.0556483082, 1.3261313438), 'tail_offset': (-0.0003042668, 0.0004191138, 0.0232064724), 'roll': -0.3313450813, 'parent': 'cf_j_bust02_R' }, 'cf_s_bust01_R': { 'head': (-0.0575999990, -0.0287300199, 1.3230998516), 'tail_offset': (-0.0002007224, 0.0006882958, 0.0231761932), 'roll': -0.3313450813, 'parent': 'cf_j_bust01_R' }, 'cf_s_bust00_L': { 'head': (0.0000000000, 0.0167622399, 1.3203999996), 'tail_offset': (0.0575999990, -0.0454922598, 0.0026999712), 'roll': 0.0000000000, 'parent': 'cf_d_bust00' }, 'cf_d_bust01_L': { 'head': (0.0575999990, -0.0287300199, 1.3230999708), 'tail_offset': (0.0002007224, 0.0006882958, 0.0231761932), 'roll': 0.3313451409, 'parent': 'cf_s_bust00_L' }, 'cf_j_bust01_L': { 'head': (0.0575999990, -0.0287300199, 1.3230999708), 'tail_offset': (0.0051772669, -0.0134591460, 0.0015155077), 'roll': 0.3313451409, 'parent': 'cf_d_bust01_L' }, 'cf_d_bust02_L': { 'head': (0.0679545328, -0.0556483082, 1.3261312246), 'tail_offset': (0.0003042668, 0.0004191138, 0.0232065916), 'roll': 0.3313451409, 'parent': 'cf_j_bust01_L' }, 'cf_j_bust02_L': { 'head': (0.0679545328, -0.0556483082, 1.3261312246), 'tail_offset': (0.0046416819, -0.0120668299, 0.0013588667), 'roll': 0.3313451409, 'parent': 'cf_d_bust02_L' }, 'cf_d_bust03_L': { 'head': (0.0772378966, -0.0797819495, 1.3288489580), 'tail_offset': (0.0003971010, 0.0001777783, 0.0232336521), 'roll': 0.3313451409, 'parent': 'cf_j_bust02_L' }, 'cf_j_bust03_L': { 'head': (0.0772378966, -0.0797819495, 1.3288489580), 'tail_offset': (0.0017852709, -0.0046411008, 0.0005227327), 'roll': 0.3313451409, 'parent': 'cf_d_bust03_L' }, 'cf_d_bnip01_L': { 'head': (0.0808084309, -0.0890641212, 1.3298943043), 'tail_offset': (0.0006546006, -0.0017017350, 0.0001916885), 'roll': 0.3313451409, 'parent': 'cf_j_bust03_L' }, 'cf_j_bnip02root_L': { 'head': (0.0818795934, -0.0918487683, 1.3302078247), 'tail_offset': (0.0049032941, -0.0061767399, 0.0016988516), 'roll': 0.3313451409, 'parent': 'cf_d_bnip01_L' }, 'cf_s_bnip02_L': { 'head': (0.0833078027, -0.0955616385, 1.3306260109), 'tail_offset': (0.0004578009, 0.0000199825, 0.0232515335), 'roll': 0.3313451409, 'parent': 'cf_j_bnip02root_L' }, 'cf_j_bnip02_L': { 'head': (0.0833078027, -0.0955616534, 1.3306258917), 'tail_offset': (0.0004578009, 0.0000199825, 0.0232515335), 'roll': 0.3313450813, 'parent': 'cf_s_bnip02_L' }, 'cf_s_bnip025_L': { 'head': (0.0902579725, -0.1004893780, 1.3331873417), 'tail_offset': (0.0083783790, -0.0086406097, 0.0029795170), 'roll': 0.3000984490, 'parent': 'cf_j_bnip02root_L' }, 'cf_s_bnip01_L': { 'head': (0.0808084309, -0.0890641287, 1.3298943043), 'tail_offset': (0.0004328042, 0.0000849515, 0.0232441425), 'roll': 0.3313450813, 'parent': 'cf_d_bnip01_L' }, 'cf_s_bnip015_L': { 'head': (0.0817010626, -0.0913846791, 1.3301556110), 'tail_offset': (0.0008926317, -0.0023205578, 0.0002613068), 'roll': 0.3313450813, 'parent': 'cf_d_bnip01_L' }, 'cf_s_bust03_L': { 'head': (0.0772379115, -0.0797819793, 1.3288490772), 'tail_offset': (0.0003971010, 0.0001777783, 0.0232336521), 'roll': 0.3313450813, 'parent': 'cf_j_bust03_L' }, 'cf_s_bust02_L': { 'head': (0.0679545328, -0.0556483194, 1.3261313438), 'tail_offset': (0.0003042668, 0.0004191138, 0.0232064724), 'roll': 0.3313450813, 'parent': 'cf_j_bust02_L' }, 'cf_s_bust01_L': { 'head': (0.0575999990, -0.0287300199, 1.3230998516), 'tail_offset': (0.0002007224, 0.0006882958, 0.0231761932), 'roll': 0.3313450813, 'parent': 'cf_j_bust01_L' }, 'cf_d_shoulder_R': { 'head': (-0.0156014701, 0.0237622391, 1.4131999016), 'tail_offset': (-0.0001560142, 0.0002376232, 0.0241320133), 'roll': 0.0000000000, 'parent': 'cf_j_spine03' }, 'cf_j_shoulder_R': { 'head': (-0.0156014701, 0.0237622391, 1.4131999016), 'tail_offset': (-0.0939531336, -0.0000126194, 0.0000000000), 'roll': 0.0000000000, 'parent': 'cf_d_shoulder_R' }, 'cf_d_shoulder02_R': { 'head': (-0.1095482782, 0.0237370003, 1.4132000208), 'tail_offset': (-0.0010954589, 0.0002373699, 0.0241320133), 'roll': 0.0003692400, 'parent': 'cf_j_shoulder_R' }, 'cf_s_shoulder02_R': { 'head': (-0.1095482782, 0.0237370003, 1.4132000208), 'tail_offset': (-0.0010954589, 0.0002373699, 0.0241320133), 'roll': 0.0003692400, 'parent': 'cf_d_shoulder02_R' }, 'cf_j_arm00_R': { 'head': (-0.1095609218, 0.0237622391, 1.4131999016), 'tail_offset': (-0.1495516151, 0.0065441933, 0.0000001192), 'roll': -0.0423438102, 'parent': 'cf_j_shoulder_R' }, 'cf_d_arm01_R': { 'head': (-0.1295429915, 0.0246088598, 1.4131999016), 'tail_offset': (-0.0012957752, 0.0002367441, 0.0241320133), 'roll': -0.0414048992, 'parent': 'cf_j_arm00_R' }, 'cf_s_arm01_R': { 'head': (-0.1295185238, 0.0252000708, 1.4132006168), 'tail_offset': (-0.0012955368, 0.0002426561, 0.0241320133), 'roll': -0.0414048955, 'parent': 'cf_d_arm01_R' }, 'cf_d_arm02_R': { 'head': (-0.2294044346, 0.0290195905, 1.4131999016), 'tail_offset': (-0.0022943318, 0.0002824105, 0.0241320133), 'roll': -0.0413984470, 'parent': 'cf_j_arm00_R' }, 'cf_s_arm02_R': { 'head': (-0.2293606550, 0.0290177800, 1.4131999016), 'tail_offset': (-0.0022938997, 0.0002823994, 0.0241320133), 'roll': -0.0466109850, 'parent': 'cf_d_arm02_R' }, 'cf_d_arm03_R': { 'head': (-0.3151178360, 0.0330731496, 1.4131999016), 'tail_offset': (-0.0031512678, 0.0003276281, 0.0241320133), 'roll': -0.0413790382, 'parent': 'cf_j_arm00_R' }, 'cf_s_arm03_R': { 'head': (-0.3151178062, 0.0330731496, 1.4132000208), 'tail_offset': (-0.0031512082, 0.0003276169, 0.0241320133), 'roll': -0.0413735993, 'parent': 'cf_d_arm03_R' }, 'cf_j_forearm01_R': { 'head': (-0.3623849750, 0.0345241316, 1.4132004976), 'tail_offset': (-0.1111739874, 0.0051015355, -0.0000002384), 'roll': 0.0000210945, 'parent': 'cf_j_arm00_R' }, 'cf_s_elbo_R': { 'head': (-0.3623849452, 0.0596318804, 1.4132026434), 'tail_offset': (0.0000000298, 0.0251077451, 0.0000021458), 'roll': 0.0000008745, 'parent': 'cf_j_forearm01_R' }, 'cf_s_forearm01_R': { 'head': (-0.3623671234, 0.0349453315, 1.4132003784), 'tail_offset': (-0.0000276864, -0.0304288915, -0.0000027418), 'roll': 0.0000211045, 'parent': 'cf_j_forearm01_R' }, 'cf_s_elboback_R': { 'head': (-0.3623948097, 0.0045164400, 1.4131976366), 'tail_offset': (-0.0000276864, -0.0304288925, -0.0000027418), 'roll': 0.0000008745, 'parent': 'cf_s_forearm01_R' }, 'cf_d_forearm02_R': { 'head': (-0.4762727916, 0.0345205218, 1.4131991863), 'tail_offset': (-0.0047625899, 0.0003447086, 0.0241320133), 'roll': 0.0000707803, 'parent': 'cf_j_forearm01_R' }, 'cf_s_forearm02_R': { 'head': (-0.4762549698, 0.0349417105, 1.4131994247), 'tail_offset': (-0.0047624111, 0.0003491975, 0.0241320133), 'roll': 0.0000707901, 'parent': 'cf_d_forearm02_R' }, 'cf_d_wrist_R': { 'head': (-0.5543849468, 0.0345180407, 1.4131983519), 'tail_offset': (-0.0055437088, 0.0003451817, 0.0241320133), 'roll': 0.0000707800, 'parent': 'cf_j_forearm01_R' }, 'cf_s_wrist_R': { 'head': (-0.5543671250, 0.0349389985, 1.4131983519), 'tail_offset': (-0.0250178576, -0.0004224181, 0.0000003576), 'roll': 0.0000707900, 'parent': 'cf_d_wrist_R' }, 'cf_d_hand_R': { 'head': (-0.5793849826, 0.0345165804, 1.4131987095), 'tail_offset': (-0.0250178576, -0.0004224181, 0.0000003576), 'roll': 0.0000707900, 'parent': 'cf_s_wrist_R' }, 'cf_j_hand_R': { 'head': (-0.6123849154, 0.0345125683, 1.4132008553), 'tail_offset': (-0.0061238408, 0.0003451258, 0.0241320133), 'roll': -0.0000000100, 'parent': 'cf_j_forearm01_R' }, 'cf_s_hand_R': { 'head': (-0.6123849750, 0.0345125683, 1.4132009745), 'tail_offset': (-0.0434947014, -0.0036587510, -0.0018894672), 'roll': 0.0000000000, 'parent': 'cf_j_hand_R' }, 'cf_j_little01_R': { 'head': (-0.6591213346, 0.0569378883, 1.4077343941), 'tail_offset': (-0.0281152725, 0.0039664730, -0.0024597645), 'roll': 0.0977955684, 'parent': 'cf_s_hand_R' }, 'cf_j_little02_R': { 'head': (-0.6872366071, 0.0609043613, 1.4052746296), 'tail_offset': (-0.0152906775, 0.0021577775, -0.0013365746), 'roll': 0.0979485959, 'parent': 'cf_j_little01_R' }, 'cf_j_little03_R': { 'head': (-0.7025272846, 0.0630621389, 1.4039380550), 'tail_offset': (-0.0152906775, 0.0021577775, -0.0013365746), 'roll': 0.0981021821, 'parent': 'cf_j_little02_R' }, 'cf_j_middle01_R': { 'head': (-0.6708994508, 0.0291264802, 1.4168765545), 'tail_offset': (-0.0340698957, -0.0000000205, -0.0029808283), 'roll': -0.0872664824, 'parent': 'cf_s_hand_R' }, 'cf_j_middle02_R': { 'head': (-0.7049693465, 0.0291264597, 1.4138957262), 'tail_offset': (-0.0227140188, 0.0000003595, -0.0019767284), 'roll': -0.0867964178, 'parent': 'cf_j_middle01_R' }, 'cf_j_middle03_R': { 'head': (-0.7276833653, 0.0291268192, 1.4119189978), 'tail_offset': (-0.0227140188, 0.0000003595, -0.0019767284), 'roll': -0.0873360857, 'parent': 'cf_j_middle02_R' }, 'cf_j_ring01_R': { 'head': (-0.6662942171, 0.0438052602, 1.4139567614), 'tail_offset': (-0.0323968530, 0.0022740699, -0.0028343201), 'roll': -0.0069661369, 'parent': 'cf_s_hand_R' }, 'cf_j_ring02_R': { 'head': (-0.6986910701, 0.0460793301, 1.4111224413), 'tail_offset': (-0.0215651989, 0.0015144981, -0.0018799305), 'roll': -0.0066119703, 'parent': 'cf_j_ring01_R' }, 'cf_j_ring03_R': { 'head': (-0.7202562690, 0.0475938283, 1.4092425108), 'tail_offset': (-0.0215651989, 0.0015144981, -0.0018799305), 'roll': -0.0069324221, 'parent': 'cf_j_ring02_R' }, 'cf_j_thumb01_R': { 'head': (-0.6146893501, 0.0108031603, 1.4037010670), 'tail_offset': (-0.0274280310, -0.0195016302, -0.0048363209), 'roll': -0.1745328754, 'parent': 'cf_s_hand_R' }, 'cf_j_thumb02_R': { 'head': (-0.6421173811, -0.0086984700, 1.3988647461), 'tail_offset': (-0.0201677680, -0.0143393399, -0.0035561323), 'roll': -0.1745328754, 'parent': 'cf_j_thumb01_R' }, 'cf_j_thumb03_R': { 'head': (-0.6622851491, -0.0230378099, 1.3953086138), 'tail_offset': (-0.0201677680, -0.0143393390, -0.0035561323), 'roll': -0.1745328754, 'parent': 'cf_j_thumb02_R' }, 'cf_j_index01_R': { 'head': (-0.6683939695, 0.0135963000, 1.4142879248), 'tail_offset': (-0.0308635831, -0.0027105501, -0.0027000904), 'roll': -0.1686505526, 'parent': 'cf_s_hand_R' }, 'cf_j_index02_R': { 'head': (-0.6992575526, 0.0108857499, 1.4115878344), 'tail_offset': (-0.0205416679, -0.0018021995, -0.0018149614), 'roll': -0.1694059968, 'parent': 'cf_j_index01_R' }, 'cf_j_index03_R': { 'head': (-0.7197992206, 0.0090835504, 1.4097728729), 'tail_offset': (-0.0205416679, -0.0018021995, -0.0018149614), 'roll': -0.1691437811, 'parent': 'cf_j_index02_R' }, } # ========== 使用示例 ========== # 在 Blender 脚本编辑器中运行以下代码来重建骨架: # import bpy # from mathutils import Vector # # # 创建骨架 # bpy.ops.object.armature_add(enter_editmode=True, location=(0, 0, 0)) # armature = bpy.context.active_object # armature.name = 'Reconstructed_Armature' # # # 删除默认骨骼 # bpy.ops.armature.select_all(action='SELECT') # bpy.ops.armature.delete() # # # 创建所有骨骼 # for bone_name, bone_info in better_fbx_complete_bone_data.items(): # bone = armature.data.edit_bones.new(bone_name) # bone.head = Vector(bone_info['head']) # bone.tail = bone.head + Vector(bone_info['tail_offset']) # bone.roll = bone_info['roll'] # # # 设置父子关系 # for bone_name, bone_info in better_fbx_complete_bone_data.items(): # if bone_info['parent'] is not None: # parent_name = bone_info['parent'] # if parent_name in armature.data.edit_bones: # armature.data.edit_bones[bone_name].parent = armature.data.edit_bones[parent_name] # # # 切换到对象模式 # bpy.ops.object.mode_set(mode='OBJECT') # print(f'骨架重建完成!共 {len(better_fbx_complete_bone_data)} 个骨骼')