From c6c2334d052a15d0773ecce88693f9cd24191a82 Mon Sep 17 00:00:00 2001 From: ark Date: Mon, 10 Jan 2022 14:08:05 +0700 Subject: [PATCH] Euler angles for Body --- ModelUE4.py | 2241 +++++++-------------------------------------- ModelUE4_apose.py | 159 ++++ ModelUE4_old.py | 1763 +++++++++++++++++++++++++++++++++++ hpe_mp_class.py | 36 +- 4 files changed, 2290 insertions(+), 1909 deletions(-) create mode 100644 ModelUE4_apose.py create mode 100644 ModelUE4_old.py diff --git a/ModelUE4.py b/ModelUE4.py index c5a7e8f..45c2272 100644 --- a/ModelUE4.py +++ b/ModelUE4.py @@ -23,22 +23,6 @@ def makexyzrotvis(x,y,z,rotx,roty,rotz,visible): ret["scale"] = scale return ret -# data["root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) -# data["pelvis"] = makexyzrotvis(0., -1.056, 96.751, 89.790634, 89.998116, 89.998116, 1.0) -# data["hip_l"] = makexyzrotvis(9.006, -0.530, 95.300, 82.760597, 166.295837, 174.753387, 1.0) -# data["hip_r"] = makexyzrotvis(-9.006, -0.530, 95.300, -82.760597, -166.295837, -5.246624, 1.0) -# -# 0 -1.056 96.751 -# 9.006 0.526 -1.451 -# −140,941157 -# 884,094836048 -# −0,159418595 -# 99,173151018 -# -# −140,941157 -# 96,756762746*1,543397875 -# 160,699319672 - def getAngle(avec0, avec1, bvec0, bvec1): chis = float(avec0*bvec0 + avec1*bvec1) znam1 = float(np.sqrt(pow(avec0, 2) + pow(avec1, 2))) @@ -47,1880 +31,6 @@ def getAngle(avec0, avec1, bvec0, bvec1): return None return np.arccos(chis / (znam1 * znam2)) * 180. / np.pi -def HeadRot(poselms, coef): - head0x = poselms[0].x * coef - head0y = -poselms[0].z * coef - head0z = -poselms[0].y * coef - head7x = poselms[7].x * coef - head7y = -poselms[7].z * coef - head7z = -poselms[7].y * coef - head8x = poselms[8].x * coef - head8y = -poselms[8].z * coef - head8z = -poselms[8].y * coef - - rotx = 90.0 - p78x = 0.5*(head7x + head8x) - p78y = 0.5*(head7y + head8y) - p78z = 0.5*(head7z + head8z) - vec_head_x = [head0y - p78y, head0z - p78z] - alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) - rotx += (alpha_x) * 180. / np.pi - - roty = 90.0 - vec_head_y = [head8x - head7x, head8z - head7z] - alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 90.0 - vec_head_z = [head8x - head7x, head8y - head7y] - alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) - rotz += (alpha_z) * 180. / np.pi - - - rvec = [rotx, rotz, roty] - return rvec - -def ShoulderLRot(poselms, coef): - sh11x = poselms[11].x * coef - sh11y = -poselms[11].z * coef - sh11z = -poselms[11].y * coef - sh13x = poselms[13].x * coef - sh13y = -poselms[13].z * coef - sh13z = -poselms[13].y * coef - - rotx = 0. - - roty = 0. - vec_sh_y = [sh13x - sh11x, sh13z - sh11z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh13x - sh11x, sh13y - sh11y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def ShoulderRRot(poselms, coef): - sh12x = poselms[12].x * coef - sh12y = -poselms[12].z * coef - sh12z = -poselms[12].y * coef - sh14x = poselms[14].x * coef - sh14y = -poselms[14].z * coef - sh14z = -poselms[14].y * coef - - rotx = 0. - - roty = 0. - vec_sh_y = [sh14x - sh12x, sh14z - sh12z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh14x - sh12x, sh14y - sh12y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def ElbowLRot(poselms, coef): - sh13x = poselms[13].x * coef - sh13y = -poselms[13].z * coef - sh13z = -poselms[13].y * coef - sh15x = poselms[15].x * coef - sh15y = -poselms[15].z * coef - sh15z = -poselms[15].y * coef - - rotx = 0. - - roty = 0. - vec_sh_y = [sh15x - sh13x, sh15z - sh13z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh15x - sh13x, sh15y - sh13y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def ElbowRRot(poselms, coef): - sh14x = poselms[14].x * coef - sh14y = -poselms[14].z * coef - sh14z = -poselms[14].y * coef - sh16x = poselms[16].x * coef - sh16y = -poselms[16].z * coef - sh16z = -poselms[16].y * coef - - rotx = 0. - - roty = 0. - vec_sh_y = [sh16x - sh14x, sh16z - sh14z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh16x - sh14x, sh16y - sh14y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def HandLRot(poselms, coef): - sh16x = poselms[16].x * coef - sh16y = -poselms[16].z * coef - sh16z = -poselms[16].y * coef - sh18x = poselms[18].x * coef - sh18y = -poselms[18].z * coef - sh18z = -poselms[18].y * coef - sh20x = poselms[20].x * coef - sh20y = -poselms[20].z * coef - sh20z = -poselms[20].y * coef - - hand_vec_x = 0.5 * (sh18x + sh20x) - hand_vec_y = 0.5 * (sh18y + sh20y) - hand_vec_z = 0.5 * (sh18z + sh20z) - - rotx = 0. - - roty = 0. - vec_sh_y = [hand_vec_x - sh16x, hand_vec_z - sh16z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [hand_vec_x - sh16x, hand_vec_y - sh16y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def HandRRot(poselms, coef): - sh15x = poselms[15].x * coef - sh15y = -poselms[15].z * coef - sh15z = -poselms[15].y * coef - sh17x = poselms[17].x * coef - sh17y = -poselms[17].z * coef - sh17z = -poselms[17].y * coef - sh19x = poselms[19].x * coef - sh19y = -poselms[19].z * coef - sh19z = -poselms[19].y * coef - - hand_vec_x = 0.5 * (sh17x + sh19x) - hand_vec_y = 0.5 * (sh17y + sh19y) - hand_vec_z = 0.5 * (sh17z + sh19z) - - rotx = 0. - - roty = 0. - vec_sh_y = [hand_vec_x - sh15x, hand_vec_z - sh15z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [hand_vec_x - sh15x, hand_vec_y - sh15y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def Spine5Rot(poselms, coef): - sh11x = poselms[11].x * coef - sh11y = -poselms[11].z * coef - sh11z = -poselms[11].y * coef - sh12x = poselms[12].x * coef - sh12y = -poselms[12].z * coef - sh12z = -poselms[12].y * coef - - rotx = 90.0 - # p78x = 0.5*(head7x + head8x) - # p78y = 0.5*(head7y + head8y) - # p78z = 0.5*(head7z + head8z) - # vec_head_x = [head0y - p78y, head0z - p78z] - # alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) - # rotx += (alpha_x) * 180. / np.pi - - roty = -90.0 - # vec_head_y = [head8x - head7x, head8z - head7z] - # alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) - # roty += (alpha_y) * 180. / np.pi - - rotz = -90.0 - # vec_head_z = [head8x - head7x, head8y - head7y] - # alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) - # rotz += (alpha_z) * 180. / np.pi - - vec_spine_z = [sh12x - sh11x, sh12y - sh11y] - alpha_z = np.arctan(vec_spine_z[1]/vec_spine_z[0]) - roty += (alpha_z) * 180. / np.pi - - - rvec = [rotx, roty, rotz] - return rvec - -def PelvisRot(poselms, coef): - sh23x = poselms[23].x * coef - sh23y = -poselms[23].z * coef - sh23z = -poselms[23].y * coef - sh24x = poselms[24].x * coef - sh24y = -poselms[24].z * coef - sh24z = -poselms[24].y * coef - - rotx = 90.0 - # p78x = 0.5*(head7x + head8x) - # p78y = 0.5*(head7y + head8y) - # p78z = 0.5*(head7z + head8z) - # vec_head_x = [head0y - p78y, head0z - p78z] - # alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) - # rotx += (alpha_x) * 180. / np.pi - - roty = -90.0 - # vec_head_y = [head8x - head7x, head8z - head7z] - # alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) - # roty += (alpha_y) * 180. / np.pi - - rotz = -90.0 - # vec_head_z = [head8x - head7x, head8y - head7y] - # alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) - # rotz += (alpha_z) * 180. / np.pi - - vec_spine_z = [sh24x - sh23x, sh24y - sh23y] - alpha_z = np.arctan(vec_spine_z[1]/vec_spine_z[0]) - roty += (alpha_z) * 180. / np.pi - - - rvec = [rotx, roty, rotz] - return rvec - -def HipLRot(poselms, coef): - sh23x = poselms[23].x * coef - sh23y = -poselms[23].z * coef - sh23z = -poselms[23].y * coef - sh25x = poselms[25].x * coef - sh25y = -poselms[25].z * coef - sh25z = -poselms[25].y * coef - - rotx = 90. - - roty = 0. - vec_sh_y = [sh25x - sh23x, sh25z - sh23z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh25x - sh23x, sh25y - sh23y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def HipRRot(poselms, coef): - sh24x = poselms[24].x * coef - sh24y = -poselms[24].z * coef - sh24z = -poselms[24].y * coef - sh26x = poselms[26].x * coef - sh26y = -poselms[26].z * coef - sh26z = -poselms[26].y * coef - - rotx = 90. - - roty = 0. - vec_sh_y = [sh26x - sh24x, sh26z - sh24z] - alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) - roty += (alpha_y) * 180. / np.pi - - rotz = 0. - vec_sh_z = [sh26x - sh24x, sh26y - sh24y] - alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) - rotz += (alpha_z) * 180. / np.pi - - rvec = [roty, rotz, rotx] - return rvec - -def checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose): - # tvec0 - parent bone by root - # tvec1 - current bone by root - rvec = [0, 0, 0] - - # rotX - var_angle_apose = getAngle(tvec0_apose[1], tvec0_apose[2], tvec1_apose[1], tvec1_apose[2]) - var_angle = getAngle(tvec0[1], tvec0[2], tvec1[1], tvec1[2]) - if var_angle == None or var_angle_apose == None: - rvec[0] = rvec_apose[0] - else: - rvec[0] = var_angle - var_angle_apose + rvec_apose[0] - if rvec[0] > 180: - rvec[0] -= 180 - if rvec[0] < -180: - rvec[0] += 180 - - # rotY - var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[2], tvec1_apose[0], tvec1_apose[2]) - var_angle = getAngle(tvec0[0], tvec0[2], tvec1[0], tvec1[2]) - if var_angle == None or var_angle_apose == None: - rvec[1] = rvec_apose[1] - else: - rvec[1] = var_angle - var_angle_apose + rvec_apose[1] - if rvec[1] > 180: - rvec[1] -= 180 - if rvec[1] < -180: - rvec[1] += 180 - - # rotZ - var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[1], tvec1_apose[0], tvec1_apose[1]) - var_angle = getAngle(tvec0[0], tvec0[1], tvec1[0], tvec1[1]) - if var_angle == None or var_angle_apose == None: - rvec[2] = rvec_apose[2] - else: - rvec[2] = var_angle - var_angle_apose + rvec_apose[2] - if rvec[2] > 180: - rvec[2] -= 180 - if rvec[2] < -180: - rvec[2] += 180 - - return rvec - -def bodyaposeworld(data): - data["root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["pelvis"] = makexyzrotvis(0., -1.056, 96.751, 89.790634, 89.998116, 89.998116, 1.0) - data["spine_02"] = makexyzrotvis(0., -0.165, 107.556, 82.637939, 90.000107, 90.000107, 1.0) - data["spine_04"] = makexyzrotvis(0., -1.517, 126.763, 83.298508, -89.999939, -89.999939, 1.0) - data["spine_05"] = makexyzrotvis(0., -3.499, 140.030, 80.519157, -90., -90., 1.0) - data["clavicle_l"] = makexyzrotvis(3.782, -2.761, 152.201, -9.742390, -26.536825, -0.000003, 1.0) - data["shoulder_l"] = makexyzrotvis(17.700, -9.712, 149.530, -49.541229, -6.413618, 3.295939, 1.0) - data["elbow_l"] = makexyzrotvis(37.265, -11.911, 126.445, -33.187275, 30.848158, -28.515471, 1.0) - data["hand_l"] = makexyzrotvis(56.646, -0.335, 111.680, -35.172615, 32.751072, -105.931961, 1.0) - data["index_2_l"] = makexyzrotvis(63.042, 6.766, 103.815, -60.632530, 39.185219, -95.108459, 1.0) - data["index_3_l"] = makexyzrotvis(64.672, 8.095, 100.079, -72.604263, 41.145889, -95.530258, 1.0) - data["index_4_l"] = makexyzrotvis(65.436, 8.762, 96.840, -63.056412, 41.326263, -94.477684, 1.0) - data["middle_2_l"] = makexyzrotvis(64.490, 4.479, 103.481, -58.987339, 31.396336, -101.577202, 1.0) - data["middle_3_l"] = makexyzrotvis(66.531, 5.725, 99.504, -70.486740, 42.113358, -113.470406, 1.0) - data["middle_4_l"] = makexyzrotvis(67.435, 6.542, 96.065, -56.627937, 23.489927, -96.457565, 1.0) - data["pinky_2_l"] = makexyzrotvis(64.025, -0.159, 103.018, -57.221210, 8.494291, -103.297714, 1.0) - data["pinky_3_l"] = makexyzrotvis(65.937, 0.127, 100.015, -68.397072, 11.974680, -105.215523, 1.0) - data["pinky_4_l"] = makexyzrotvis(67.012, 0.355, 97.239, -68.031853, 22.739058, -114.804611, 1.0) - data["ring_2_l"] = makexyzrotvis(64.576, 2.083, 103.039, -60.143337, 23.882196, -110.450768, 1.0) - data["ring_3_l"] = makexyzrotvis(66.592, 2.975, 99.197, -72.950729, 34.323620, -119.597374, 1.0) - data["ring_4_l"] = makexyzrotvis(67.434, 3.550, 95.873, -60.028549, 26.871693, -112.741859, 1.0) - data["thumb_2_l"] = makexyzrotvis(57.478, 3.876, 107.639, -34.138702, 87.683189, -52.981850, 1.0) - data["thumb_3_l"] = makexyzrotvis(57.607, 7.077, 105.468, -52.094620, 85.939804, -51.473255, 1.0) - data["thumb_4_l"] = makexyzrotvis(57.784, 9.566, 102.262, -42.125023, 96.831261, -57.027554, 1.0) - data["lowerarm_twist_01_l"] = makexyzrotvis(47.323, -5.903, 118.782, -33.187275, 30.848158, -28.515471, 1.0) - data["upperarm_twist_01_l"] = makexyzrotvis(18.023, -9.748, 149.150, -49.541203, -6.413616, 3.295938, 1.0) - data["clavicle_r"] = makexyzrotvis(-3.782, -2.761, 152.201, 9.742397, 26.536829, 180., 1.0) - data["shoulder_r"] = makexyzrotvis(-17.700, -9.712, 149.530, 49.541229, 6.413619, -176.704056, 1.0) - data["elbow_r"] = makexyzrotvis(-37.265, -11.911, 126.445, 33.187275, -30.848154, 151.484512, 1.0) - data["hand_r"] = makexyzrotvis(-56.646, -0.335, 111.680, 35.172619, -32.751076, 74.068016, 1.0) - data["index_2_r"] = makexyzrotvis(-63.042, 6.766, 103.815, 60.632515, -39.185219, 84.891525, 1.0) - data["index_3_r"] = makexyzrotvis(-64.672, 8.095, 100.078, 72.604263, -41.145885, 84.469742, 1.0) - data["index_4_r"] = makexyzrotvis(-65.436, 8.762, 96.840, 63.056419, -41.326252, 85.522316, 1.0) - data["middle_2_r"] = makexyzrotvis(-64.490, 4.479, 103.482, 58.987339, -31.396345, 78.422768, 1.0) - data["middle_3_r"] = makexyzrotvis(-66.531, 5.725, 99.504, 70.486748, -42.113411, 66.529549, 1.0) - data["middle_4_r"] = makexyzrotvis(-67.435, 6.542, 96.065, 56.627953, -23.489948, 83.542404, 1.0) - data["pinky_2_r"] = makexyzrotvis(-64.025, -0.159, 103.017, 57.221222, -8.494291, 76.702271, 1.0) - data["pinky_3_r"] = makexyzrotvis(-65.937, 0.127, 100.015, 68.397110, -11.974666, 74.784508, 1.0) - data["pinky_4_r"] = makexyzrotvis(-67.013, 0.355, 97.239, 68.031822, -22.739044, 65.195419, 1.0) - data["ring_2_r"] = makexyzrotvis(-64.576, 2.083, 103.039, 60.143322, -23.882204, 69.549194, 1.0) - data["ring_3_r"] = makexyzrotvis(-66.592, 2.975, 99.197, 72.950775, -34.323681, 60.402596, 1.0) - data["ring_4_r"] = makexyzrotvis(-67.434, 3.550, 95.873, 60.028561, -26.871723, 67.258072, 1.0) - data["thumb_2_r"] = makexyzrotvis(-57.478, 3.877, 107.639, 34.138699, -87.683189, 127.018127, 1.0) - data["thumb_3_r"] = makexyzrotvis(-57.607, 7.077, 105.467, 52.094624, -85.939819, 128.526718, 1.0) - data["thumb_4_r"] = makexyzrotvis(-57.784, 9.566, 102.262, 42.125004, -96.831261, 122.972427, 1.0) - data["lowerarm_twist_01_r"] = makexyzrotvis(-47.324, -5.903, 118.782, 33.187271, -30.848154, 137.974152, 1.0) - data["upperarm_twist_01_r"] = makexyzrotvis(-18.023, -9.748, 149.150, 49.541218, 6.413617, 163.344009, 1.0) - data["head"] = makexyzrotvis(0., -5.876, 156.421, 75.972702, 89.999969, 89.999969, 1.0) - data["head_0"] = makexyzrotvis(0., -3.979, 165.516, 88.678833, -90.000290, -90.000290, 1.0) - data["hip_l"] = makexyzrotvis(9.006, -0.530, 95.300, 82.760597, 166.295837, 174.753387, 1.0) - data["knee_l"] = makexyzrotvis(14.218, -1.801, 53.067, 80.127579, 114.503563, 117.834335, 1.0) - data["calf_twist_01_l"] = makexyzrotvis(15.674, -4.996, 32.894, 79.251228, 113.356789, 117.027946, 1.0) - data["ankle_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.206955, 141.820786, 1.0) - data["ball_l"] = makexyzrotvis(17.909, 8.357, 2.812, -2.576805, 87.342842, 90.887283, 1.0) - data["thigh_twist_01_l"] = makexyzrotvis(11.711, -1.190, 73.382, 82.754990, 165.851181, 168.873581, 1.0) - data["hip_r"] = makexyzrotvis(-9.006, -0.530, 95.300, -82.760597, -166.295837, -5.246624, 1.0) - data["knee_r"] = makexyzrotvis(-14.218, -1.801, 53.067, -80.127579, -114.503563, -62.165585, 1.0) - data["calf_twist_01_r"] = makexyzrotvis(-15.674, -4.996, 32.893, -79.251190, -113.357056, -62.971889, 1.0) - data["ankle_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.878120, -139.207230, -38.179173, 1.0) - data["ball_r"] = makexyzrotvis(-17.909, 8.357, 2.812, 2.576798, -87.342842, -89.112701, 1.0) - data["thigh_twist_01_r"] = makexyzrotvis(-11.711, -1.190, 73.382, -82.755020, -165.851059, -11.126723, 1.0) - data["ik_foot_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["ik_foot_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.207169, 141.820999, 1.0) - data["ik_foot_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.877769, -139.207169, -38.178883, 1.0) - data["ik_hand_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["ik_hand_gun"] = makexyzrotvis(-56.646, -0.335, 111.680, 35.172623, -32.751068, 74.068031, 1.0) - data["ik_hand_l"] = makexyzrotvis(56.646, -0.335, 111.680, -35.172630, 32.751068, -105.931976, 1.0) - -def bodyaposelocal(data): - data["root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["pelvis"] = makexyzrotvis(0., -1.056, 96.751, 89.787849, 89.995300, 89.995300, 1.0) - data["spine_02"] = makexyzrotvis(10.809, 0.851, 0., 0., -14.063557, 0., 1.0) - data["spine_04"] = makexyzrotvis(18.875, -3.801, 0., 0., -14.063557, 0., 1.0) - data["spine_05"] = makexyzrotvis(13.407, -0.420, 0., 0., -2.779418, 0., 1.0) - data["clavicle_l"] = makexyzrotvis(11.884, 2.732, -3.782, -61.853577, -101.540916, 108.719162, 1.0) - data["shoulder_l"] = makexyzrotvis(15.785, 0., 0., -40.300545, 17.021019, 7.673903, 1.0) - data["elbow_l"] = makexyzrotvis(30.340, 0., 0., 10.397350, 30.360876, -3.613283, 1.0) - data["hand_l"] = makexyzrotvis(26.975, 0., 0., -2.499808, 0.412571, -76.356194, 1.0) - data["index_02_l"] = makexyzrotvis(12.068, -1.763, -2.109, 3.763789, -25.536919, 14.866977, 1.0) - data["index_03_l"] = makexyzrotvis(4.288, 0., 0., 0.475286, -11.986160, 1.337821, 1.0) - data["index_04_l"] = makexyzrotvis(3.394, 0., 0., -0.997269, 9.496333, 1.137367, 1.0) - data["middle_02_l"] = makexyzrotvis(12.244, -1.294, 0.571, 7.040565, -22.825857, 1.917856, 1.0) - data["middle_03_l"] = makexyzrotvis(4.640, 0., 0., -1.136837, -12.280714, -2.024954, 1.0) - data["middle_04_l"] = makexyzrotvis(3.649, 0., 0., 4.389954, 15.399755, 0.781444, 1.0) - data["pinky_02_l"] = makexyzrotvis(10.141, -2.263, 4.643, 18.933966, -20.185858, -18.724598, 1.0) - data["pinky_03_l"] = makexyzrotvis(3.571, 0., 0., 1.315686, -11.208060, 1.063832, 1.0) - data["pinky_04_l"] = makexyzrotvis(2.986, 0., 0., -3.869664, -1.038998, 0.445698, 1.0) - data["ring_02_l"] = makexyzrotvis(11.498, -1.754, 2.847, 10.989255, -23.292091, -13.510273, 1.0) - data["ring_03_l"] = makexyzrotvis(4.430, 0., 0., 1.669749, -13.315456, 0.301359, 1.0) - data["ring_04_l"] = makexyzrotvis(3.477, 0., 0., -2.987661, 12.899673, -0.360762, 1.0) - data["thumb_02_l"] = makexyzrotvis(4.762, -2.375, -2.538, -36.918968, -27.056177, 95.069138, 1.0) - data["thumb_03_l"] = makexyzrotvis(3.870, 0., 0., -9.833239, -15.151319, 1.613141, 1.0) - data["thumb_04_l"] = makexyzrotvis(4.062, 0., 0., -0.479192, 12.385657, 2.414767, 1.0) - data["lowerarm_twist_01_l"] = makexyzrotvis(14., 0., 0., 0., 0., 0., 1.0) - data["None"] = makexyzrotvis(77.885, 69.602, 43.869, 32.168755, 93.709030, -145.800354, 1.0) - data["upperarm_twist_01_l"] = makexyzrotvis(0.5, 0., 0., 0., 0., 0., 1.0) - data["clavicle_r"] = makexyzrotvis(11.884, 2.732, 3.782, -61.853588, 78.459053, 108.719177, 1.0) - data["shoulder_r"] = makexyzrotvis(-15.785, 0., 0., -40.300556, 17.021015, 7.673907, 1.0) - data["elbow_r"] = makexyzrotvis(-30.340, 0., 0., 10.397350, 30.360876, -3.613281, 1.0) - data["hand_r"] = makexyzrotvis(-26.975, 0., 0., -2.499808, 0.412573, -76.356194, 1.0) - data["index_02_r"] = makexyzrotvis(-12.068, 1.764, 2.109, 3.763789, -25.536919, 14.866971, 1.0) - data["index_03_r"] = makexyzrotvis(-4.288, 0., 0., 0.475299, -11.986152, 1.337820, 1.0) - data["index_04_r"] = makexyzrotvis(-3.394, 0., 0., -0.997269, 9.496332, 1.137365, 1.0) - data["middle_02_r"] = makexyzrotvis(-12.244, 1.294, -0.571, 7.040559, -22.825850, 1.917846, 1.0) - data["middle_03_r"] = makexyzrotvis(-4.641, 0., 0., -1.136837, -12.280720, -2.024957, 1.0) - data["middle_04_r"] = makexyzrotvis(-3.649, 0., 0., 4.389954, 15.399755, 0.781455, 1.0) - data["pinky_02_r"] = makexyzrotvis(-10.141, 2.263, -4.643, 18.933966, -20.185869, -18.724598, 1.0) - data["pinky_03_r"] = makexyzrotvis(-3.571, 0., 0., 1.315692, -11.208064, 1.063835, 1.0) - data["pinky_04_r"] = makexyzrotvis(-2.985, 0., 0., -3.869664, -1.038998, 0.445703, 1.0) - data["ring_02_r"] = makexyzrotvis(-11.498, 1.754, -2.847, 10.989241, -1.038998, -23.292084, 1.0) - data["ring_03_r"] = makexyzrotvis(-4.430, 0., 0., 1.669749, -13.315456, 0.301358, 1.0) - data["ring_04_r"] = makexyzrotvis(-3.477, 0., 0., -2.987661, 12.899678, -0.360764, 1.0) - data["thumb_02_r"] = makexyzrotvis(-4.762, 2.375, 2.538, -36.918968, -27.056177, 95.069130, 1.0) - data["thumb_03_r"] = makexyzrotvis(-3.870, 0., 0., -9.833239, -15.151324, 1.613143, 1.0) - data["thumb_04_r"] = makexyzrotvis(-4.062, 0., 0., -0.479199, 12.385653, 2.414763, 1.0) - data["lowerarm_twist_01_r"] = makexyzrotvis(-14., 0., 0., 0., 0., -13.510374, 1.0) - data["upperarm_twist_01_r"] = makexyzrotvis(-0.5, 0., 0., 0., 0., -19.951906, 1.0) - data["head"] = makexyzrotvis(16.559, 0.355, 0., 0., 23.508049, 0., 1.0) - data["head_0"] = makexyzrotvis(9.284, -0.364, 0., 0., -15.348654, 0., 1.0) - data["hip_l"] = makexyzrotvis(-1.449, 0.531, -9.006, 7.032287, 1.515470, 8.563468, 1.0) - data["knee_l"] = makexyzrotvis(-42.572, 0., 0., -1.787276, 7.613586, -5.735975, 1.0) - data["calf_twist_01_l"] = makexyzrotvis(-20.477, 0., 0., 0.219085, 0.872982, 0.323560, 1.0) - data["ankle_l"] = makexyzrotvis(-40.197, 0., 0., -3.704933, -8.059578, -0.415387, 1.0) - data["ball_l"] = makexyzrotvis(-10.454, 16.578, 0., -0.008954, 91.883591, 0.003945, 1.0) - data["thigh_twist_01_l"] = makexyzrotvis(-22.094, 0., 0., 0.000212, 0.056331, -5.438678, 1.0) - data["hip_r"] = makexyzrotvis(-1.449, 0.531, 9.006, 7.032294, -178.484528, 8.563469, 1.0) - data["knee_r"] = makexyzrotvis(42.572, 0., 0., -1.787276, 7.613586, -5.735975, 1.0) - data["calf_twist_01_r"] = makexyzrotvis(20.477, 0., 0., 0.219126, 0.872964, 0.323369, 1.0) - data["ankle_r"] = makexyzrotvis(40.197, 0., 0., -3.704927, -8.059580, -0.415387, 1.0) - data["ball_r"] = makexyzrotvis(10.454, -16.578, -0.08, -0.008948, 91.883591, 0.003944, 1.0) - data["thigh_twist_01_r"] = makexyzrotvis(22.094, 0., 0., 0.000164, 0.056341, -5.438870, 1.0) - data["ik_foot_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["ik_foot_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.207169, 141.820999, 1.0) - data["ik_foot_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.877769, -139.207169, -38.178883, 1.0) - data["ik_hand_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - data["ik_hand_gun"] = makexyzrotvis(-56.64, -0.335, 111.680, 35.172623, -32.751068, 74.068031, 1.0) - data["ik_hand_l"] = makexyzrotvis(77.885, 69.602, 43.869, 32.168755, 93.709030, -145.800354, 1.0) - data["Non"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) - -def bodyconvertlocal(poseslms, data, coef, maxy): - dataxyz = {} - - rootx = poseslms[24].x * coef - rooty = -poseslms[24].z * coef - rootz = -poseslms[24].y * coef - rootv = poseslms[24].visibility - dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[23].x * coef - rooty = -poseslms[23].z * coef - rootz = -poseslms[23].y * coef - rootv = poseslms[23].visibility - dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = -maxy * coef - rootv = 1.0 - dataxyz["root"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) - rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) - dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[12].x * coef - rooty = -poseslms[12].z * coef - rootz = -poseslms[12].y * coef - rootv = poseslms[12].visibility - dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[11].x * coef - rooty = -poseslms[11].z * coef - rootz = -poseslms[11].y * coef - rootv = poseslms[11].visibility - dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) - rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) - rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) - rootv = poseslms[0].visibility - dataxyz["head"] = [rootx, rooty, rootz, rootv] - - rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) - rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) - rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) - rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) - data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] - - rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) - rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) - rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) - rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) - dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] - - rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) - rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) - rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) - rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) - data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] - - rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) - rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) - rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) - rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) - dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] - - rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) - rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) - rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) - rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) - dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) - rooty = 0.5 * ( - 0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * - dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) - dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) - rooty = 0.5 * ( - 0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * - dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) - dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[14].x * coef - rooty = -poseslms[14].z * coef - rootz = -poseslms[14].y * coef - rootv = poseslms[14].visibility - dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[13].x * coef - rooty = -poseslms[13].z * coef - rootz = -poseslms[13].y * coef - rootv = poseslms[13].visibility - dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[26].x * coef - rooty = -poseslms[26].z * coef - rootz = -poseslms[26].y * coef - rootv = poseslms[26].visibility - dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[25].x * coef - rooty = -poseslms[25].z * coef - rootz = -poseslms[25].y * coef - rootv = poseslms[25].visibility - dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[28].x * coef - rooty = -poseslms[28].z * coef - rootz = -poseslms[28].y * coef - rootv = poseslms[28].visibility - dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[27].x * coef - rooty = -poseslms[27].z * coef - rootz = -poseslms[27].y * coef - rootv = poseslms[27].visibility - dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[32].x * coef - rooty = -poseslms[32].z * coef - rootz = -poseslms[32].y * coef - rootv = poseslms[32].visibility - dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[31].x * coef - rooty = -poseslms[31].z * coef - rootz = -poseslms[31].y * coef - rootv = poseslms[31].visibility - dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[30].x * coef - rooty = -poseslms[30].z * coef - rootz = -poseslms[30].y * coef - rootv = poseslms[30].visibility - data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[29].x * coef - rooty = -poseslms[29].z * coef - rootz = -poseslms[29].y * coef - rootv = poseslms[29].visibility - data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] - - data["elbow_r"]["translation"]["x"] = dataxyz["elbow_r"][0] - dataxyz["shoulder_r"][0] - data["elbow_r"]["translation"]["y"] = dataxyz["elbow_r"][1] - dataxyz["shoulder_r"][1] - data["elbow_r"]["translation"]["z"] = dataxyz["elbow_r"][2] - dataxyz["shoulder_r"][2] - - data["elbow_l"]["translation"]["x"] = dataxyz["elbow_l"][0] - dataxyz["shoulder_l"][0] - data["elbow_l"]["translation"]["y"] = dataxyz["elbow_l"][1] - dataxyz["shoulder_l"][1] - data["elbow_l"]["translation"]["z"] = dataxyz["elbow_l"][2] - dataxyz["shoulder_l"][2] - - data["shoulder_r"]["translation"]["x"] = dataxyz["shoulder_r"][0] - dataxyz["clavicle_r"][0] - data["shoulder_r"]["translation"]["y"] = dataxyz["shoulder_r"][1] - dataxyz["clavicle_r"][1] - data["shoulder_r"]["translation"]["z"] = dataxyz["shoulder_r"][2] - dataxyz["clavicle_r"][2] - - data["shoulder_l"]["translation"]["x"] = dataxyz["shoulder_l"][0] - dataxyz["clavicle_l"][0] - data["shoulder_l"]["translation"]["y"] = dataxyz["shoulder_l"][1] - dataxyz["clavicle_l"][1] - data["shoulder_l"]["translation"]["z"] = dataxyz["shoulder_l"][2] - dataxyz["clavicle_l"][2] - - data["clavicle_r"]["translation"]["x"] = dataxyz["clavicle_r"][0] - dataxyz["spine_05"][0] - data["clavicle_r"]["translation"]["y"] = dataxyz["clavicle_r"][1] - dataxyz["spine_05"][1] - data["clavicle_r"]["translation"]["z"] = dataxyz["clavicle_r"][2] - dataxyz["spine_05"][2] - - data["clavicle_l"]["translation"]["x"] = dataxyz["clavicle_l"][0] - dataxyz["spine_05"][0] - data["clavicle_l"]["translation"]["y"] = dataxyz["clavicle_l"][1] - dataxyz["spine_05"][1] - data["clavicle_l"]["translation"]["z"] = dataxyz["clavicle_l"][2] - dataxyz["spine_05"][2] - - data["head"]["translation"]["x"] = dataxyz["head"][0] - dataxyz["spine_05"][0] - data["head"]["translation"]["y"] = dataxyz["head"][1] - dataxyz["spine_05"][1] - data["head"]["translation"]["z"] = dataxyz["head"][2] - dataxyz["spine_05"][2] - - data["spine_05"]["translation"]["x"] = dataxyz["spine_05"][0] - dataxyz["spine_04"][0] - data["spine_05"]["translation"]["y"] = dataxyz["spine_05"][1] - dataxyz["spine_04"][1] - data["spine_05"]["translation"]["z"] = dataxyz["spine_05"][2] - dataxyz["spine_04"][2] - - data["spine_04"]["translation"]["x"] = dataxyz["spine_04"][0] - dataxyz["spine_03"][0] - data["spine_04"]["translation"]["y"] = dataxyz["spine_04"][1] - dataxyz["spine_03"][1] - data["spine_04"]["translation"]["z"] = dataxyz["spine_04"][2] - dataxyz["spine_03"][2] - - data["spine_03"]["translation"]["x"] = dataxyz["spine_03"][0] - dataxyz["spine_02"][0] - data["spine_03"]["translation"]["y"] = dataxyz["spine_03"][1] - dataxyz["spine_02"][1] - data["spine_03"]["translation"]["z"] = dataxyz["spine_03"][2] - dataxyz["spine_02"][2] - - data["spine_02"]["translation"]["x"] = dataxyz["spine_02"][0] - dataxyz["spine_01"][0] - data["spine_02"]["translation"]["y"] = dataxyz["spine_02"][1] - dataxyz["spine_01"][1] - data["spine_02"]["translation"]["z"] = dataxyz["spine_02"][2] - dataxyz["spine_01"][2] - - data["spine_01"]["translation"]["x"] = dataxyz["spine_01"][0] - dataxyz["pelvis"][0] - data["spine_01"]["translation"]["y"] = dataxyz["spine_01"][1] - dataxyz["pelvis"][1] - data["spine_01"]["translation"]["z"] = dataxyz["spine_01"][2] - dataxyz["pelvis"][2] - - data["ball_l"]["translation"]["x"] = dataxyz["ball_l"][0] - dataxyz["ankle_l"][0] - data["ball_l"]["translation"]["y"] = dataxyz["ball_l"][1] - dataxyz["ankle_l"][1] - data["ball_l"]["translation"]["z"] = dataxyz["ball_l"][2] - dataxyz["ankle_l"][2] - - data["ball_r"]["translation"]["x"] = dataxyz["ball_r"][0] - dataxyz["ankle_r"][0] - data["ball_r"]["translation"]["y"] = dataxyz["ball_r"][1] - dataxyz["ankle_r"][1] - data["ball_r"]["translation"]["z"] = dataxyz["ball_r"][2] - dataxyz["ankle_r"][2] - - data["heel_l"]["translation"]["x"] = dataxyz["heel_l"][0] - dataxyz["ankle_l"][0] - data["heel_l"]["translation"]["y"] = dataxyz["heel_l"][1] - dataxyz["ankle_l"][1] - data["heel_l"]["translation"]["z"] = dataxyz["heel_l"][2] - dataxyz["ankle_l"][2] - - data["heel_r"]["translation"]["x"] = dataxyz["heel_r"][0] - dataxyz["ankle_r"][0] - data["heel_r"]["translation"]["y"] = dataxyz["heel_r"][1] - dataxyz["ankle_r"][1] - data["heel_r"]["translation"]["z"] = dataxyz["heel_r"][2] - dataxyz["ankle_r"][2] - - data["ankle_l"]["translation"]["x"] = dataxyz["ankle_l"][0] - dataxyz["knee_l"][0] - data["ankle_l"]["translation"]["y"] = dataxyz["ankle_l"][1] - dataxyz["knee_l"][1] - data["ankle_l"]["translation"]["z"] = dataxyz["ankle_l"][2] - dataxyz["knee_l"][2] - - data["ankle_r"]["translation"]["x"] = dataxyz["ankle_r"][0] - dataxyz["knee_r"][0] - data["ankle_r"]["translation"]["y"] = dataxyz["ankle_r"][1] - dataxyz["knee_r"][1] - data["ankle_r"]["translation"]["z"] = dataxyz["ankle_r"][2] - dataxyz["knee_r"][2] - - data["knee_l"]["translation"]["x"] = dataxyz["knee_l"][0] - dataxyz["hip_l"][0] - data["knee_l"]["translation"]["y"] = dataxyz["knee_l"][1] - dataxyz["hip_l"][1] - data["knee_l"]["translation"]["z"] = dataxyz["knee_l"][2] - dataxyz["hip_l"][2] - - data["knee_r"]["translation"]["x"] = dataxyz["knee_r"][0] - dataxyz["hip_r"][0] - data["knee_r"]["translation"]["y"] = dataxyz["knee_r"][1] - dataxyz["hip_r"][1] - data["knee_r"]["translation"]["z"] = dataxyz["knee_r"][2] - dataxyz["hip_r"][2] - - data["hip_l"]["translation"]["x"] = dataxyz["hip_l"][0] - dataxyz["pelvis"][0] - data["hip_l"]["translation"]["y"] = dataxyz["hip_l"][1] - dataxyz["pelvis"][1] - data["hip_l"]["translation"]["z"] = dataxyz["hip_l"][2] - dataxyz["pelvis"][2] - - data["hip_r"]["translation"]["x"] = dataxyz["hip_r"][0] - dataxyz["pelvis"][0] - data["hip_r"]["translation"]["y"] = dataxyz["hip_r"][1] - dataxyz["pelvis"][1] - data["hip_r"]["translation"]["z"] = dataxyz["hip_r"][2] - dataxyz["pelvis"][2] - - data["pelvis"]["translation"]["x"] = 0. - data["pelvis"]["translation"]["y"] = 0. - data["pelvis"]["translation"]["z"] = dataxyz["pelvis"][2] - dataxyz["root"][2] - -def updateValueAPoseWorld(data, dataxyz, parent_name, current_name): - tvec0 = [dataxyz[parent_name][0], dataxyz[parent_name][1], dataxyz[parent_name][2]] - tvec1 = [dataxyz[current_name][0], dataxyz[current_name][1], dataxyz[current_name][2]] - tvec0_apose = [data[parent_name]["translation"]["x"], data[parent_name]["translation"]["y"], data[parent_name]["translation"]["z"]] - tvec1_apose = [data[current_name]["translation"]["x"], data[current_name]["translation"]["y"], data[current_name]["translation"]["z"]] - rvec_apose = [data[current_name]["rotation"]["rotx"], data[current_name]["rotation"]["roty"], data[current_name]["rotation"]["rotz"]] - rvec = checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose) - data[current_name]["translation"]["x"] = dataxyz[current_name][0] - data[current_name]["translation"]["y"] = dataxyz[current_name][1] - data[current_name]["translation"]["z"] = dataxyz[current_name][2] - # data[current_name]["rotation"]["rotx"] = rvec[0] - # data[current_name]["rotation"]["roty"] = rvec[1] - # data[current_name]["rotation"]["rotz"] = rvec[2] - data[current_name]["visible"] = dataxyz[current_name][3] - -def bodyconvertwithrot(poseslms, data, coef, maxy): - dataxyz = {} - - rootx = poseslms[24].x * coef - rooty = -poseslms[24].z * coef - rootz = -poseslms[24].y * coef - rootv = poseslms[24].visibility - dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[23].x * coef - rooty = -poseslms[23].z * coef - rootz = -poseslms[23].y * coef - rootv = poseslms[23].visibility - dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = -maxy * coef - rootv = 1.0 - dataxyz["root"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) - rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) - dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[12].x * coef - rooty = -poseslms[12].z * coef - rootz = -poseslms[12].y * coef - rootv = poseslms[12].visibility - dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[11].x * coef - rooty = -poseslms[11].z * coef - rootz = -poseslms[11].y * coef - rootv = poseslms[11].visibility - dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) - rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) - rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) - rootv = poseslms[0].visibility - dataxyz["head"] = [rootx, rooty, rootz, rootv] - - rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) - rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) - rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) - rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) - data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] - - rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) - rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) - rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) - rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) - dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] - - rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) - rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) - rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) - rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) - data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] - - rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) - rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) - rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) - rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) - dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] - - rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) - rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) - rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) - rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) - dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) - rooty = 0.5 * ( - 0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * - dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) - dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) - rooty = 0.5 * ( - 0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * - dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) - dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[16].x * coef - rooty = -poseslms[16].z * coef - rootz = -poseslms[16].y * coef - rootv = poseslms[16].visibility - dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[15].x * coef - rooty = -poseslms[15].z * coef - rootz = -poseslms[15].y * coef - rootv = poseslms[15].visibility - dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[14].x * coef - rooty = -poseslms[14].z * coef - rootz = -poseslms[14].y * coef - rootv = poseslms[14].visibility - dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[13].x * coef - rooty = -poseslms[13].z * coef - rootz = -poseslms[13].y * coef - rootv = poseslms[13].visibility - dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[26].x * coef - rooty = -poseslms[26].z * coef - rootz = -poseslms[26].y * coef - rootv = poseslms[26].visibility - dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[25].x * coef - rooty = -poseslms[25].z * coef - rootz = -poseslms[25].y * coef - rootv = poseslms[25].visibility - dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[28].x * coef - rooty = -poseslms[28].z * coef - rootz = -poseslms[28].y * coef - rootv = poseslms[28].visibility - dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[27].x * coef - rooty = -poseslms[27].z * coef - rootz = -poseslms[27].y * coef - rootv = poseslms[27].visibility - dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[32].x * coef - rooty = -poseslms[32].z * coef - rootz = -poseslms[32].y * coef - rootv = poseslms[32].visibility - dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[31].x * coef - rooty = -poseslms[31].z * coef - rootz = -poseslms[31].y * coef - rootv = poseslms[31].visibility - dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[30].x * coef - rooty = -poseslms[30].z * coef - rootz = -poseslms[30].y * coef - rootv = poseslms[30].visibility - data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[29].x * coef - rooty = -poseslms[29].z * coef - rootz = -poseslms[29].y * coef - rootv = poseslms[29].visibility - data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] - - updateValueAPoseWorld(data, dataxyz, "elbow_r", "hand_r") - rvecHandR = HandRRot(poseslms, coef) - data["hand_r"]["rotation"]["rotx"] = rvecHandR[0] - data["hand_r"]["rotation"]["roty"] = rvecHandR[1] - # data["hand_r"]["rotation"]["rotz"] = rvecHandR[2] - updateValueAPoseWorld(data, dataxyz, "elbow_l", "hand_l") - rvecHandL = HandLRot(poseslms, coef) - data["hand_l"]["rotation"]["rotx"] = rvecHandL[0] - data["hand_l"]["rotation"]["roty"] = rvecHandL[1] - # data["hand_l"]["rotation"]["rotz"] = rvecHandL[2] - updateValueAPoseWorld(data, dataxyz, "shoulder_r", "elbow_r") - rvecElbowR = ShoulderRRot(poseslms, coef) - data["elbow_r"]["rotation"]["rotx"] = rvecElbowR[0] - data["elbow_r"]["rotation"]["roty"] = rvecElbowR[1] - # data["elbow_r"]["rotation"]["rotz"] = rvecElbowR[2] - updateValueAPoseWorld(data, dataxyz, "shoulder_l", "elbow_l") - rvecElbowL = ShoulderLRot(poseslms, coef) - data["elbow_l"]["rotation"]["rotx"] = rvecElbowL[0] - data["elbow_l"]["rotation"]["roty"] = rvecElbowL[1] - # data["elbow_l"]["rotation"]["rotz"] = rvecElbowL[2] - updateValueAPoseWorld(data, dataxyz, "clavicle_r", "shoulder_r") - rvecShoulderR = ShoulderRRot(poseslms, coef) - data["shoulder_r"]["rotation"]["rotx"] = rvecShoulderR[0] - data["shoulder_r"]["rotation"]["roty"] = rvecShoulderR[1] - # data["shoulder_r"]["rotation"]["rotz"] = rvecShoulderR[2] - updateValueAPoseWorld(data, dataxyz, "clavicle_l", "shoulder_l") - rvecShoulderL = ShoulderLRot(poseslms, coef) - data["shoulder_l"]["rotation"]["rotx"] = rvecShoulderL[0] - data["shoulder_l"]["rotation"]["roty"] = rvecShoulderL[1] - # data["shoulder_l"]["rotation"]["rotz"] = rvecShoulderL[2] - updateValueAPoseWorld(data, dataxyz, "spine_05", "clavicle_r") - updateValueAPoseWorld(data, dataxyz, "spine_05", "clavicle_l") - updateValueAPoseWorld(data, dataxyz, "spine_05", "head") - rvecHead = HeadRot(poseslms, coef) - data["head"]["rotation"]["rotx"] = rvecHead[0] - data["head"]["rotation"]["roty"] = rvecHead[1] - # data["head"]["rotation"]["rotz"] = rvecHead[2] - updateValueAPoseWorld(data, dataxyz, "spine_04", "spine_05") - updateValueAPoseWorld(data, dataxyz, "spine_02", "spine_04") - updateValueAPoseWorld(data, dataxyz, "pelvis", "spine_02") - updateValueAPoseWorld(data, dataxyz, "ankle_l", "ball_l") - updateValueAPoseWorld(data, dataxyz, "ankle_r", "ball_r") - updateValueAPoseWorld(data, dataxyz, "ankle_l", "heel_l") - updateValueAPoseWorld(data, dataxyz, "ankle_r", "heel_r") - updateValueAPoseWorld(data, dataxyz, "knee_l", "ankle_l") - updateValueAPoseWorld(data, dataxyz, "knee_r", "ankle_r") - updateValueAPoseWorld(data, dataxyz, "hip_l", "knee_l") - updateValueAPoseWorld(data, dataxyz, "hip_r", "knee_r") - updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_l") - rvecHipL = HipLRot(poseslms, coef) - # data["hip_l"]["rotation"]["rotx"] = rvecHipL[0] - # data["hip_l"]["rotation"]["roty"] = rvecHipL[1] - # data["hip_l"]["rotation"]["rotz"] = rvecHipL[2] - updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_r") - rvecHipR = HipRRot(poseslms, coef) - # data["hip_r"]["rotation"]["rotx"] = rvecHipR[0] - # data["hip_r"]["rotation"]["roty"] = rvecHipR[1] - # data["hip_r"]["rotation"]["rotz"] = rvecHipR[2] - updateValueAPoseWorld(data, dataxyz, "root", "pelvis") - - data["root"]["translation"]["x"] = dataxyz["root"][0] - data["root"]["translation"]["y"] = dataxyz["root"][1] - data["root"]["translation"]["z"] = dataxyz["root"][2] - - data["spine_01"]["rotation"]["rotx"] = data["pelvis"]["rotation"]["rotx"] - data["spine_01"]["rotation"]["roty"] = data["pelvis"]["rotation"]["roty"] - data["spine_01"]["rotation"]["rotz"] = data["pelvis"]["rotation"]["rotz"] - - data["spine_03"]["rotation"]["rotx"] = data["spine_02"]["rotation"]["rotx"] - data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"] - data["spine_03"]["rotation"]["rotz"] = data["spine_02"]["rotation"]["rotz"] - - data["spine_03"]["rotation"]["rotx"] = data["spine_02"]["rotation"]["rotx"] - data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"] - data["spine_03"]["rotation"]["rotz"] = data["spine_02"]["rotation"]["rotz"] - - rvecSpine5 = Spine5Rot(poseslms, coef) - data["spine_05"]["rotation"]["rotx"] = rvecSpine5[0] - data["spine_05"]["rotation"]["roty"] = rvecSpine5[1] - data["spine_05"]["rotation"]["rotz"] = rvecSpine5[2] - - rvecPelvis = PelvisRot(poseslms, coef) - data["pelvis"]["rotation"]["rotx"] = rvecPelvis[0] - data["pelvis"]["rotation"]["roty"] = rvecPelvis[1] - data["pelvis"]["rotation"]["rotz"] = rvecPelvis[2] - - data["spine_04"]["rotation"]["rotx"] = 0.4*rvecSpine5[0] + 0.6*rvecPelvis[0] - data["spine_04"]["rotation"]["roty"] = 0.4*rvecSpine5[1] + 0.6*rvecPelvis[1] - data["spine_04"]["rotation"]["rotz"] = 0.4*rvecSpine5[2] + 0.6*rvecPelvis[2] - - data["spine_03"]["rotation"]["rotx"] = 0.25*rvecSpine5[0] + 0.75*rvecPelvis[0] - data["spine_03"]["rotation"]["roty"] = 0.25*rvecSpine5[1] + 0.75*rvecPelvis[1] - data["spine_03"]["rotation"]["rotz"] = 0.25*rvecSpine5[2] + 0.75*rvecPelvis[2] - - data["spine_02"]["rotation"]["rotx"] = 0.12*rvecSpine5[0] + 0.88*rvecPelvis[0] - data["spine_02"]["rotation"]["roty"] = 0.12*rvecSpine5[1] + 0.88*rvecPelvis[1] - data["spine_02"]["rotation"]["rotz"] = 0.12*rvecSpine5[2] + 0.88*rvecPelvis[2] - - data["spine_01"]["rotation"]["rotx"] = 0.05*rvecSpine5[0] + 0.95*rvecPelvis[0] - data["spine_01"]["rotation"]["roty"] = 0.05*rvecSpine5[1] + 0.95*rvecPelvis[1] - data["spine_01"]["rotation"]["rotz"] = 0.05*rvecSpine5[2] + 0.95*rvecPelvis[2] - -def bodyconvert(poseslms, data, coef, maxy): - dataxyz = {} - - rootx = poseslms[24].x * coef - rooty = -poseslms[24].z * coef - rootz = -poseslms[24].y * coef - rootv = poseslms[24].visibility - data["hip_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[23].x * coef - rooty = -poseslms[23].z * coef - rootz = -poseslms[23].y * coef - rootv = poseslms[23].visibility - data["hip_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = -maxy * coef - rootv = 1.0 - data["root"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["root"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) - rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) - rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) - rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) - data["pelvis"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[12].x * coef - rooty = -poseslms[12].z * coef - rootz = -poseslms[12].y * coef - rootv = poseslms[12].visibility - data["shoulder_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[11].x * coef - rooty = -poseslms[11].z * coef - rootz = -poseslms[11].y * coef - rootv = poseslms[11].visibility - data["shoulder_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] - - rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) - rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) - rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) - rootv = poseslms[0].visibility - data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["head"] = [rootx, rooty, rootz, rootv] - - rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) - rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) - rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) - rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) - data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] - - rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) - rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) - rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) - rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) - data["spine_02"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] - - rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) - rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) - rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) - rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) - data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] - - rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) - rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) - rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) - rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) - data["spine_04"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] - - rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) - rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) - rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) - rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) - data["spine_05"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[26].x * coef - rooty = -poseslms[26].z * coef - rootz = -poseslms[26].y * coef - rootv = poseslms[26].visibility - data["knee_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[25].x * coef - rooty = -poseslms[25].z * coef - rootz = -poseslms[25].y * coef - rootv = poseslms[25].visibility - data["knee_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[28].x * coef - rooty = -poseslms[28].z * coef - rootz = -poseslms[28].y * coef - rootv = poseslms[28].visibility - data["ankle_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[27].x * coef - rooty = -poseslms[27].z * coef - rootz = -poseslms[27].y * coef - rootv = poseslms[27].visibility - data["ankle_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[32].x * coef - rooty = -poseslms[32].z * coef - rootz = -poseslms[32].y * coef - rootv = poseslms[32].visibility - data["ball_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[31].x * coef - rooty = -poseslms[31].z * coef - rootz = -poseslms[31].y * coef - rootv = poseslms[31].visibility - data["ball_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[30].x * coef - rooty = -poseslms[30].z * coef - rootz = -poseslms[30].y * coef - rootv = poseslms[30].visibility - data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[29].x * coef - rooty = -poseslms[29].z * coef - rootz = -poseslms[29].y * coef - rootv = poseslms[29].visibility - data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) - rooty = 0.5 * (0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) - data["clavicle_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) - rooty = 0.5 * (0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * dataxyz["spine_05"][1]) - rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) - rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) - data["clavicle_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[14].x * coef - rooty = -poseslms[14].z * coef - rootz = -poseslms[14].y * coef - rootv = poseslms[14].visibility - data["elbow_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] - - rootx = poseslms[13].x * coef - rooty = -poseslms[13].z * coef - rootz = -poseslms[13].y * coef - rootv = poseslms[13].visibility - data["elbow_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] - -def bonetranslation(data, bone_name, tvec): - data[bone_name]["translation"]["x"] += tvec[0] - data[bone_name]["translation"]["y"] += tvec[1] - data[bone_name]["translation"]["z"] += tvec[2] - -def rhandconverttranslation(data): - tvec = [data["hand_r"]["translation"]["x"], data["hand_r"]["translation"]["y"], data["hand_r"]["translation"]["z"]] - data_apose = {} - bodyaposeworld(data_apose) - tvec_pose = [data_apose["hand_r"]["translation"]["x"], data_apose["hand_r"]["translation"]["y"], data_apose["hand_r"]["translation"]["z"]] - tvec[0] = tvec[0] - tvec_pose[0] - tvec[1] = -(tvec[1] - tvec_pose[1]) - tvec[2] = tvec[2] - tvec_pose[2] - - bonetranslation(data, "pinky_4_r", tvec) - bonetranslation(data, "pinky_3_r", tvec) - bonetranslation(data, "pinky_2_r", tvec) - bonetranslation(data, "middle_4_r", tvec) - bonetranslation(data, "middle_3_r", tvec) - bonetranslation(data, "middle_2_r", tvec) - bonetranslation(data, "index_4_r", tvec) - bonetranslation(data, "index_3_r", tvec) - bonetranslation(data, "index_2_r", tvec) - bonetranslation(data, "thumb_3_r", tvec) - bonetranslation(data, "thumb_2_r", tvec) - # bonetranslation(data, "thumb_1_r", tvec) - bonetranslation(data, "ring_4_r", tvec) - bonetranslation(data, "ring_3_r", tvec) - bonetranslation(data, "ring_2_r", tvec) - # bonetranslation(data, "hand_r", tvec) - -def lhandconverttranslation(data): - tvec = [data["hand_l"]["translation"]["x"], data["hand_l"]["translation"]["y"], data["hand_l"]["translation"]["z"]] - data_apose = {} - bodyaposeworld(data_apose) - tvec_pose = [data_apose["hand_l"]["translation"]["x"], data_apose["hand_l"]["translation"]["y"], data_apose["hand_l"]["translation"]["z"]] - tvec[0] = tvec[0] - tvec_pose[0] - tvec[1] = -(tvec[1] - tvec_pose[1]) - tvec[2] = tvec[2] - tvec_pose[2] - - bonetranslation(data, "pinky_4_l", tvec) - bonetranslation(data, "pinky_3_l", tvec) - bonetranslation(data, "pinky_2_l", tvec) - bonetranslation(data, "middle_4_l", tvec) - bonetranslation(data, "middle_3_l", tvec) - bonetranslation(data, "middle_2_l", tvec) - bonetranslation(data, "index_4_l", tvec) - bonetranslation(data, "index_3_l", tvec) - bonetranslation(data, "index_2_l", tvec) - bonetranslation(data, "thumb_3_l", tvec) - bonetranslation(data, "thumb_2_l", tvec) - # bonetranslation(data, "thumb_1_l", tvec) - bonetranslation(data, "ring_4_l", tvec) - bonetranslation(data, "ring_3_l", tvec) - bonetranslation(data, "ring_2_l", tvec) - # bonetranslation(data, "hand_l", tvec) - -def updateValueAPoseWorldForHands(data, dataxyz, data_apose, parent_name, current_name): - tvec0 = [dataxyz[parent_name][0], dataxyz[parent_name][1], dataxyz[parent_name][2]] - tvec1 = [dataxyz[current_name][0], dataxyz[current_name][1], dataxyz[current_name][2]] - tvec0_apose = [data_apose[parent_name]["translation"]["x"], data_apose[parent_name]["translation"]["y"], data_apose[parent_name]["translation"]["z"]] - tvec1_apose = [data[current_name]["translation"]["x"], data[current_name]["translation"]["y"], data[current_name]["translation"]["z"]] - rvec_apose = [data[current_name]["rotation"]["rotx"], data[current_name]["rotation"]["roty"], data[current_name]["rotation"]["rotz"]] - rvec = checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose) - data[current_name]["translation"]["x"] = dataxyz[current_name][0] - data[current_name]["translation"]["y"] = dataxyz[current_name][1] - data[current_name]["translation"]["z"] = dataxyz[current_name][2] - data[current_name]["rotation"]["rotx"] = rvec[0] - data[current_name]["rotation"]["roty"] = rvec[1] - data[current_name]["rotation"]["rotz"] = rvec[2] - data[current_name]["visible"] = dataxyz[current_name] - -def rhandconvertwithrot(rhandlms, data, coef): - dataxyz = {} - data_apose = {} - bodyaposeworld(data_apose) - - rootx = rhandlms[0].x * coef - rooty = -rhandlms[0].z * coef - rootz = -rhandlms[0].y * coef - rootv = 1.0 - dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[5].x * coef - rooty = -rhandlms[5].z * coef - rootz = -rhandlms[5].y * coef - rootv = 1.0 - dataxyz["index_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["index_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["index_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["index_2_r"][2]) - rootv = 1.0 - data["index_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[9].x * coef - rooty = -rhandlms[9].z * coef - rootz = -rhandlms[9].y * coef - rootv = 1.0 - dataxyz["middle_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["middle_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["middle_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["middle_2_r"][2]) - rootv = 1.0 - data["middle_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[13].x * coef - rooty = -rhandlms[13].z * coef - rootz = -rhandlms[13].y * coef - rootv = 1.0 - dataxyz["ring_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["ring_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["ring_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["ring_2_r"][2]) - rootv = 1.0 - data["ring_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[17].x * coef - rooty = -rhandlms[17].z * coef - rootz = -rhandlms[17].y * coef - rootv = 1.0 - dataxyz["pinky_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["pinky_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["pinky_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["pinky_2_r"][2]) - rootv = 1.0 - data["pinky_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[1].x * coef - rooty = -rhandlms[1].z * coef - rootz = -rhandlms[1].y * coef - rootv = 1.0 - data["thumb_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[2].x * coef - rooty = -rhandlms[2].z * coef - rootz = -rhandlms[2].y * coef - rootv = 1.0 - dataxyz["thumb_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[3].x * coef - rooty = -rhandlms[3].z * coef - rootz = -rhandlms[3].y * coef - rootv = 1.0 - dataxyz["thumb_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[6].x * coef - rooty = -rhandlms[6].z * coef - rootz = -rhandlms[6].y * coef - rootv = 1.0 - dataxyz["index_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[7].x * coef - rooty = -rhandlms[7].z * coef - rootz = -rhandlms[7].y * coef - rootv = 1.0 - dataxyz["index_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[10].x * coef - rooty = -rhandlms[10].z * coef - rootz = -rhandlms[10].y * coef - rootv = 1.0 - dataxyz["middle_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[11].x * coef - rooty = -rhandlms[11].z * coef - rootz = -rhandlms[11].y * coef - rootv = 1.0 - dataxyz["middle_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[14].x * coef - rooty = -rhandlms[14].z * coef - rootz = -rhandlms[14].y * coef - rootv = 1.0 - dataxyz["ring_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[15].x * coef - rooty = -rhandlms[15].z * coef - rootz = -rhandlms[15].y * coef - rootv = 1.0 - dataxyz["ring_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[18].x * coef - rooty = -rhandlms[18].z * coef - rootz = -rhandlms[18].y * coef - rootv = 1.0 - dataxyz["pinky_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[19].x * coef - rooty = -rhandlms[19].z * coef - rootz = -rhandlms[19].y * coef - rootv = 1.0 - dataxyz["pinky_4_r"] = [rootx, rooty, rootz, rootv] - - updateValueAPoseWorld(data, dataxyz, "pinky_3_r", "pinky_4_r") - updateValueAPoseWorld(data, dataxyz, "pinky_2_r", "pinky_3_r") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "pinky_2_r") - updateValueAPoseWorld(data, dataxyz, "middle_3_r", "middle_4_r") - updateValueAPoseWorld(data, dataxyz, "middle_2_r", "middle_3_r") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "middle_2_r") - updateValueAPoseWorld(data, dataxyz, "index_3_r", "index_4_r") - updateValueAPoseWorld(data, dataxyz, "index_2_r", "index_3_r") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "index_2_r") - updateValueAPoseWorld(data, dataxyz, "thumb_2_r", "thumb_3_r") - updateValueAPoseWorld(data, dataxyz, "thumb_1_r", "thumb_2_r") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "thumb_1_r") - updateValueAPoseWorld(data, dataxyz, "ring_3_r", "ring_4_r") - updateValueAPoseWorld(data, dataxyz, "ring_2_r", "ring_3_r") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "ring_2_r") - - data["hand_r"]["translation"]["x"] = dataxyz["hand_r"][0] - data["hand_r"]["translation"]["y"] = dataxyz["hand_r"][1] - data["hand_r"]["translation"]["z"] = dataxyz["hand_r"][2] - - data["pinky_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] - data["pinky_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] - data["pinky_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] - - data["ring_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] - data["ring_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] - data["ring_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] - - data["middle_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] - data["middle_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] - data["middle_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] - - data["index_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] - data["index_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] - data["index_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] - -def lhandconvertwithrot(rhandlms, data, coef): - dataxyz = {} - data_apose = {} - bodyaposeworld(data_apose) - - rootx = rhandlms[0].x * coef - rooty = -rhandlms[0].z * coef - rootz = -rhandlms[0].y * coef - rootv = 1.0 - dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[5].x * coef - rooty = -rhandlms[5].z * coef - rootz = -rhandlms[5].y * coef - rootv = 1.0 - dataxyz["index_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["index_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["index_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["index_2_l"][2]) - rootv = 1.0 - data["index_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[9].x * coef - rooty = -rhandlms[9].z * coef - rootz = -rhandlms[9].y * coef - rootv = 1.0 - dataxyz["middle_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["middle_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["middle_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["middle_2_l"][2]) - rootv = 1.0 - data["middle_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[13].x * coef - rooty = -rhandlms[13].z * coef - rootz = -rhandlms[13].y * coef - rootv = 1.0 - dataxyz["ring_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["ring_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["ring_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["ring_2_l"][2]) - rootv = 1.0 - data["ring_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[17].x * coef - rooty = -rhandlms[17].z * coef - rootz = -rhandlms[17].y * coef - rootv = 1.0 - dataxyz["pinky_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["pinky_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["pinky_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["pinky_2_l"][2]) - rootv = 1.0 - data["pinky_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[1].x * coef - rooty = -rhandlms[1].z * coef - rootz = -rhandlms[1].y * coef - rootv = 1.0 - data["thumb_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[2].x * coef - rooty = -rhandlms[2].z * coef - rootz = -rhandlms[2].y * coef - rootv = 1.0 - dataxyz["thumb_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[3].x * coef - rooty = -rhandlms[3].z * coef - rootz = -rhandlms[3].y * coef - rootv = 1.0 - dataxyz["thumb_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[6].x * coef - rooty = -rhandlms[6].z * coef - rootz = -rhandlms[6].y * coef - rootv = 1.0 - dataxyz["index_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[7].x * coef - rooty = -rhandlms[7].z * coef - rootz = -rhandlms[7].y * coef - rootv = 1.0 - dataxyz["index_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[10].x * coef - rooty = -rhandlms[10].z * coef - rootz = -rhandlms[10].y * coef - rootv = 1.0 - dataxyz["middle_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[11].x * coef - rooty = -rhandlms[11].z * coef - rootz = -rhandlms[11].y * coef - rootv = 1.0 - dataxyz["middle_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[14].x * coef - rooty = -rhandlms[14].z * coef - rootz = -rhandlms[14].y * coef - rootv = 1.0 - dataxyz["ring_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[15].x * coef - rooty = -rhandlms[15].z * coef - rootz = -rhandlms[15].y * coef - rootv = 1.0 - dataxyz["ring_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[18].x * coef - rooty = -rhandlms[18].z * coef - rootz = -rhandlms[18].y * coef - rootv = 1.0 - dataxyz["pinky_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[19].x * coef - rooty = -rhandlms[19].z * coef - rootz = -rhandlms[19].y * coef - rootv = 1.0 - dataxyz["pinky_4_l"] = [rootx, rooty, rootz, rootv] - - updateValueAPoseWorld(data, dataxyz, "pinky_3_l", "pinky_4_l") - updateValueAPoseWorld(data, dataxyz, "pinky_2_l", "pinky_3_l") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "pinky_2_l") - updateValueAPoseWorld(data, dataxyz, "middle_3_l", "middle_4_l") - updateValueAPoseWorld(data, dataxyz, "middle_2_l", "middle_3_l") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "middle_2_l") - updateValueAPoseWorld(data, dataxyz, "index_3_l", "index_4_l") - updateValueAPoseWorld(data, dataxyz, "index_2_l", "index_3_l") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "index_2_l") - updateValueAPoseWorld(data, dataxyz, "thumb_2_l", "thumb_3_l") - updateValueAPoseWorld(data, dataxyz, "thumb_1_l", "thumb_2_l") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "thumb_1_l") - updateValueAPoseWorld(data, dataxyz, "ring_3_l", "ring_4_l") - updateValueAPoseWorld(data, dataxyz, "ring_2_l", "ring_3_l") - updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "ring_2_l") - - data["hand_l"]["translation"]["x"] = dataxyz["hand_l"][0] - data["hand_l"]["translation"]["y"] = dataxyz["hand_l"][1] - data["hand_l"]["translation"]["z"] = dataxyz["hand_l"][2] - -def rhandconvert(rhandlms, data, coef): - dataxyz = {} - - rootx = rhandlms[0].x * coef - rooty = -rhandlms[0].z * coef - rootz = -rhandlms[0].y * coef - rootv = 1.0 - data["hand_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[5].x * coef - rooty = -rhandlms[5].z * coef - rootz = -rhandlms[5].y * coef - rootv = 1.0 - data["index_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["index_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["index_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["index_2_r"][2]) - rootv = 1.0 - data["index_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[9].x * coef - rooty = -rhandlms[9].z * coef - rootz = -rhandlms[9].y * coef - rootv = 1.0 - data["middle_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["middle_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["middle_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["middle_2_r"][2]) - rootv = 1.0 - data["middle_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[13].x * coef - rooty = -rhandlms[13].z * coef - rootz = -rhandlms[13].y * coef - rootv = 1.0 - data["ring_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["ring_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["ring_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["ring_2_r"][2]) - rootv = 1.0 - data["ring_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[17].x * coef - rooty = -rhandlms[17].z * coef - rootz = -rhandlms[17].y * coef - rootv = 1.0 - data["pinky_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["pinky_2_r"][0]) - rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["pinky_2_r"][1]) - rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["pinky_2_r"][2]) - rootv = 1.0 - data["pinky_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[1].x * coef - rooty = -rhandlms[1].z * coef - rootz = -rhandlms[1].y * coef - rootv = 1.0 - data["thumb_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_1_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[2].x * coef - rooty = -rhandlms[2].z * coef - rootz = -rhandlms[2].y * coef - rootv = 1.0 - data["thumb_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_2_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[3].x * coef - rooty = -rhandlms[3].z * coef - rootz = -rhandlms[3].y * coef - rootv = 1.0 - data["thumb_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[6].x * coef - rooty = -rhandlms[6].z * coef - rootz = -rhandlms[6].y * coef - rootv = 1.0 - data["index_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[7].x * coef - rooty = -rhandlms[7].z * coef - rootz = -rhandlms[7].y * coef - rootv = 1.0 - data["index_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[10].x * coef - rooty = -rhandlms[10].z * coef - rootz = -rhandlms[10].y * coef - rootv = 1.0 - data["middle_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[11].x * coef - rooty = -rhandlms[11].z * coef - rootz = -rhandlms[11].y * coef - rootv = 1.0 - data["middle_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[14].x * coef - rooty = -rhandlms[14].z * coef - rootz = -rhandlms[14].y * coef - rootv = 1.0 - data["ring_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[15].x * coef - rooty = -rhandlms[15].z * coef - rootz = -rhandlms[15].y * coef - rootv = 1.0 - data["ring_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_4_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[18].x * coef - rooty = -rhandlms[18].z * coef - rootz = -rhandlms[18].y * coef - rootv = 1.0 - data["pinky_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_3_r"] = [rootx, rooty, rootz, rootv] - - rootx = rhandlms[19].x * coef - rooty = -rhandlms[19].z * coef - rootz = -rhandlms[19].y * coef - rootv = 1.0 - data["pinky_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_4_r"] = [rootx, rooty, rootz, rootv] - -def lhandconvert(lhandlms, data, coef): - dataxyz = {} - - rootx = lhandlms[0].x * coef - rooty = -lhandlms[0].z * coef - rootz = -lhandlms[0].y * coef - rootv = 1.0 - data["hand_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[5].x * coef - rooty = -lhandlms[5].z * coef - rootz = -lhandlms[5].y * coef - rootv = 1.0 - data["index_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["index_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["index_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["index_2_l"][2]) - rootv = 1.0 - data["index_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[9].x * coef - rooty = -lhandlms[9].z * coef - rootz = -lhandlms[9].y * coef - rootv = 1.0 - data["middle_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["middle_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["middle_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["middle_2_l"][2]) - rootv = 1.0 - data["middle_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[13].x * coef - rooty = -lhandlms[13].z * coef - rootz = -lhandlms[13].y * coef - rootv = 1.0 - data["ring_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["ring_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["ring_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["ring_2_l"][2]) - rootv = 1.0 - data["ring_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[17].x * coef - rooty = -lhandlms[17].z * coef - rootz = -lhandlms[17].y * coef - rootv = 1.0 - data["pinky_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["pinky_2_l"][0]) - rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["pinky_2_l"][1]) - rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["pinky_2_l"][2]) - rootv = 1.0 - data["pinky_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[1].x * coef - rooty = -lhandlms[1].z * coef - rootz = -lhandlms[1].y * coef - rootv = 1.0 - data["thumb_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_1_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[2].x * coef - rooty = -lhandlms[2].z * coef - rootz = -lhandlms[2].y * coef - rootv = 1.0 - data["thumb_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_2_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[3].x * coef - rooty = -lhandlms[3].z * coef - rootz = -lhandlms[3].y * coef - rootv = 1.0 - data["thumb_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["thumb_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[6].x * coef - rooty = -lhandlms[6].z * coef - rootz = -lhandlms[6].y * coef - rootv = 1.0 - data["index_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[7].x * coef - rooty = -lhandlms[7].z * coef - rootz = -lhandlms[7].y * coef - rootv = 1.0 - data["index_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["index_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[10].x * coef - rooty = -lhandlms[10].z * coef - rootz = -lhandlms[10].y * coef - rootv = 1.0 - data["middle_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[11].x * coef - rooty = -lhandlms[11].z * coef - rootz = -lhandlms[11].y * coef - rootv = 1.0 - data["middle_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["middle_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[14].x * coef - rooty = -lhandlms[14].z * coef - rootz = -lhandlms[14].y * coef - rootv = 1.0 - data["ring_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[15].x * coef - rooty = -lhandlms[15].z * coef - rootz = -lhandlms[15].y * coef - rootv = 1.0 - data["ring_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["ring_4_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[18].x * coef - rooty = -lhandlms[18].z * coef - rootz = -lhandlms[18].y * coef - rootv = 1.0 - data["pinky_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_3_l"] = [rootx, rooty, rootz, rootv] - - rootx = lhandlms[19].x * coef - rooty = -lhandlms[19].z * coef - rootz = -lhandlms[19].y * coef - rootv = 1.0 - data["pinky_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) - dataxyz["pinky_4_l"] = [rootx, rooty, rootz, rootv] - - data["pinky_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] - data["pinky_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] - data["pinky_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] - - data["ring_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] - data["ring_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] - data["ring_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] - - data["middle_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] - data["middle_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] - data["middle_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] - - data["index_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] - data["index_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] - data["index_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] - def getVecNorm(vec): length = np.sqrt(pow(vec[0],2)+pow(vec[1],2)+pow(vec[2],2)) vec_norm = [vec[0]/length, @@ -2003,13 +113,13 @@ def lhandRot(current, child, data, dataxyz, support1, support2): rotsup = getRotaionVect(sup1_norm, sup2_norm) euler_sup = toEuler(rotsup[0], rotsup[1], rotsup[2], rotsup[3]) - print(euler_sup) + # print(euler_sup) data[current]["rotation"]["rotx"] = -euler[0] data[current]["rotation"]["roty"] = euler[1] data[current]["rotation"]["rotz"] = -euler_sup[2] -def lhandrot(lhandlms, data, coef): +def lhandeuler(lhandlms, data, coef): dataxyz = {} rootx = lhandlms[17].x * coef @@ -2183,7 +293,7 @@ def rhandRot(current, child, data, dataxyz, support1, support2): rotsup = getRotaionVect(sup1_norm, sup2_norm) euler_sup = toEuler(rotsup[0], rotsup[1], rotsup[2], rotsup[3]) - print(euler_sup) + # print(euler_sup) data[current]["rotation"]["rotx"] = -euler[0] data[current]["rotation"]["roty"] = euler[1] @@ -2202,7 +312,7 @@ def rfingerRot(current, child, data, dataxyz): data[current]["rotation"]["roty"] = euler[1] data[current]["rotation"]["rotz"] = 90 -def rhandrot(rhandlms, data, coef): +def rhandeuler(rhandlms, data, coef): dataxyz = {} rootx = rhandlms[17].x * coef @@ -2352,3 +462,346 @@ def rhandrot(rhandlms, data, coef): dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] rhandRot("hand_r", "middle_2_r", data, dataxyz, "pinky_2_r", "index_2_r") + +def boneRot(current, child, data, dataxyz, vec1, zangle): + vec2 = [dataxyz[child][0] - dataxyz[current][0], + dataxyz[child][1] - dataxyz[current][1], + dataxyz[child][2] - dataxyz[current][2]] + # vec1 = [-1, 0, 0] + + rotvec = getRotaionVect(vec1, vec2) + euler = toEuler(rotvec[0], rotvec[1], rotvec[2], rotvec[3]) + + data[current]["rotation"]["rotx"] = -euler[0] + data[current]["rotation"]["roty"] = euler[1] + data[current]["rotation"]["rotz"] = zangle + + if np.fabs(data[current]["rotation"]["rotx"])>90: + data[current]["rotation"]["roty"] *= -1 + +def spineRot(current, child0, child, data, dataxyz, support1, support2): + vec2 = [dataxyz[child][0] - dataxyz[child0][0], + dataxyz[child][1] - dataxyz[child0][1], + dataxyz[child][2] - dataxyz[child0][2]] + vec1 = [1, 0, 0] + + rotvec = getRotaionVect(vec1, vec2) + euler = toEuler(rotvec[0],rotvec[1],rotvec[2],rotvec[3]) + # print(euler) + + vec3 = [dataxyz[support2][0] - dataxyz[support1][0], + dataxyz[support2][1] - dataxyz[support1][1], + dataxyz[support2][2] - dataxyz[support1][2]] + + vec2_norm = getVecNorm(vec2) + vec3_norm = getVecNorm(vec3) + sup2 = np.cross(vec2_norm, vec3_norm) + sup2_norm = getVecNorm(sup2) + sup1 = [0, -1, 0] + sup1_norm = getVecNorm(sup1) + + rotsup = getRotaionVect(sup1_norm, sup2_norm) + euler_sup = toEuler(rotsup[0], rotsup[1], rotsup[2], rotsup[3]) + # print(euler_sup) + + # print(euler_sup) + # data[current]["rotation"]["rotz"] = 0 + data[current]["rotation"]["rotx"] = 90#-euler_sup[2]+45 + data[current]["rotation"]["roty"] = euler_sup[1]-90 + if data[current]["rotation"]["roty"] <= -180: + data[current]["rotation"]["roty"] += 180 + data[current]["rotation"]["rotz"] = euler[0] + +def headRot(current, pp1_0, pp1_1, pp2_0, pp2_1, data, dataxyz): + vec2 = [dataxyz[pp1_1][0] - dataxyz[pp1_0][0], + 0, + dataxyz[pp1_1][2] - dataxyz[pp1_0][2]] + vec1 = [1, 0, 0] + + vec2_norm = getVecNorm(vec2) + + rotvec = getRotaionVect(vec1, vec2_norm) + euler1 = toEuler(rotvec[0], rotvec[1], rotvec[2], rotvec[3]) + + vec2 = [dataxyz[pp2_1][0] - dataxyz[pp2_0][0], + dataxyz[pp2_1][1] - dataxyz[pp2_0][1], + dataxyz[pp2_1][2] - dataxyz[pp2_0][2]] + vec1 = [0, 1, 0] + + vec2_norm = getVecNorm(vec2) + rotvec = getRotaionVect(vec1, vec2_norm) + euler2 = toEuler(rotvec[0], rotvec[1], rotvec[2], rotvec[3]) + + # print(euler1) + # print(euler) + data[current]["rotation"]["rotx"] = euler2[2] + 90 + if data[current]["rotation"]["rotx"] > 180: + data[current]["rotation"]["rotx"] -= 180 + data[current]["rotation"]["roty"] = -euler1[0] + data[current]["rotation"]["rotz"] = -euler2[1] + 90 + if data[current]["rotation"]["rotz"] > 180: + data[current]["rotation"]["rotz"] -= 180 + +def bodyeuler(poselms, data, coef): + dataxyz = {} + + rootx = poselms[24].x * coef + rooty = -poselms[24].z * coef + rootz = -poselms[24].y * coef + rootv = poselms[24].visibility + # data["hip_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[23].x * coef + rooty = -poselms[23].z * coef + rootz = -poselms[23].y * coef + rootv = poselms[23].visibility + # data["hip_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[26].x * coef + rooty = -poselms[26].z * coef + rootz = -poselms[26].y * coef + rootv = poselms[26].visibility + dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[25].x * coef + rooty = -poselms[25].z * coef + rootz = -poselms[25].y * coef + rootv = poselms[25].visibility + dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[28].x * coef + rooty = -poselms[28].z * coef + rootz = -poselms[28].y * coef + rootv = poselms[28].visibility + dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[27].x * coef + rooty = -poselms[27].z * coef + rootz = -poselms[27].y * coef + rootv = poselms[27].visibility + dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[32].x * coef + rooty = -poselms[32].z * coef + rootz = -poselms[32].y * coef + rootv = poselms[32].visibility + dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[31].x * coef + rooty = -poselms[31].z * coef + rootz = -poselms[31].y * coef + rootv = poselms[31].visibility + dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[30].x * coef + rooty = -poselms[30].z * coef + rootz = -poselms[30].y * coef + rootv = poselms[30].visibility + data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[29].x * coef + rooty = -poselms[29].z * coef + rootz = -poselms[29].y * coef + rootv = poselms[29].visibility + data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) + rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) + # data["pelvis"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[12].x * coef + rooty = -poselms[12].z * coef + rootz = -poselms[12].y * coef + rootv = 1.0 + dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[14].x * coef + rooty = -poselms[14].z * coef + rootz = -poselms[14].y * coef + rootv = 1.0 + dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[16].x * coef + rooty = -poselms[16].z * coef + rootz = -poselms[16].y * coef + rootv = 1.0 + dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[11].x * coef + rooty = -poselms[11].z * coef + rootz = -poselms[11].y * coef + rootv = 1.0 + dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[13].x * coef + rooty = -poselms[13].z * coef + rootz = -poselms[13].y * coef + rootv = 1.0 + dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[15].x * coef + rooty = -poselms[15].z * coef + rootz = -poselms[15].y * coef + rootv = 1.0 + dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[7].x * coef + rooty = -poselms[7].z * coef + rootz = -poselms[7].y * coef + rootv = 1.0 + dataxyz["ear_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[8].x * coef + rooty = -poselms[8].z * coef + rootz = -poselms[8].y * coef + rootv = 1.0 + dataxyz["ear_r"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[2].x * coef + rooty = -poselms[2].z * coef + rootz = -poselms[2].y * coef + rootv = 1.0 + dataxyz["eye_l"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[5].x * coef + rooty = -poselms[5].z * coef + rootz = -poselms[5].y * coef + rootv = 1.0 + dataxyz["eye_r"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["ear_l"][0] + dataxyz["ear_r"][0]) + rooty = 0.5 * (dataxyz["ear_l"][1] + dataxyz["ear_r"][1]) + rootz = 0.5 * (dataxyz["ear_l"][2] + dataxyz["ear_r"][2]) + rootv = 1.0 + # data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["mid_ears"] = [rootx, rooty, rootz, rootv] + + rootx = poselms[0].x * coef + rooty = -poselms[0].z * coef + rootz = -poselms[0].y * coef + rootv = 1.0 + dataxyz["nose"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) + rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) + rootz = -poselms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) + rootv = poselms[0].visibility + # data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["head"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) + rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) + rootz = 0.5 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) + rootv = 1.0 + # data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["mid_shoulders"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["ear_l"][0] + dataxyz["ear_r"][0]) + rooty = 0.5 * (dataxyz["ear_l"][1] + dataxyz["ear_r"][1]) + rootz = dataxyz["nose"][2] + rootv = poselms[0].visibility + # data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["head_nose"] = [rootx, rooty, rootz, rootv] + + rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) + rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) + rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) + rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) + data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] + + rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) + rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) + rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) + rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) + # data["spine_02"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] + + rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) + rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) + rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) + rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) + data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] + + rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) + rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) + rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) + rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) + # data["spine_04"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] + + rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) + rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) + rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) + rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) + # data["spine_05"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) + dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) + dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] + + + boneRot("shoulder_r", "elbow_r", data, dataxyz, [-1, 0, 0], 180) + boneRot("elbow_r", "hand_r", data, dataxyz, [-1, 0, 0], 180) + boneRot("hip_r", "knee_r", data, dataxyz, [1, 0, 0], 180) + boneRot("knee_r", "ankle_r", data, dataxyz, [1, 0, 0], 180) + # boneRot("ankle_r", "ball_r", data, dataxyz, [1, 0, 0], 180) + + boneRot("shoulder_l", "elbow_l", data, dataxyz, [1, 0, 0], 0) + boneRot("elbow_l", "hand_l", data, dataxyz, [1, 0, 0], 0) + boneRot("hip_l", "knee_l", data, dataxyz, [-1, 0, 0], 0) + boneRot("knee_l", "ankle_l", data, dataxyz, [-1, 0, 0], 0) + # boneRot("ankle_l", "ball_l", data, dataxyz, [-1, 0, 0], 0) + + spineRot("spine_05", "pelvis", "spine_05", data, dataxyz, "shoulder_l", "shoulder_r") + spineRot("pelvis", "pelvis", "spine_05", data, dataxyz, "hip_l", "hip_r") + rvecSpine5 = [0, 0, 0] + rvecSpine5[0] = data["spine_05"]["rotation"]["rotx"] + rvecSpine5[1] = data["spine_05"]["rotation"]["roty"] + rvecSpine5[2] = data["spine_05"]["rotation"]["rotz"] + rvecPelvis = [0, 0, 0] + rvecPelvis[0] = data["pelvis"]["rotation"]["rotx"] + rvecPelvis[1] = data["pelvis"]["rotation"]["roty"] + rvecPelvis[2] = data["pelvis"]["rotation"]["rotz"] + data["spine_04"]["rotation"]["rotx"] = 0.4 * rvecSpine5[0] + 0.6 * rvecPelvis[0] + data["spine_04"]["rotation"]["roty"] = 0.4 * rvecSpine5[1] + 0.6 * rvecPelvis[1] + data["spine_04"]["rotation"]["rotz"] = 0.4 * rvecSpine5[2] + 0.6 * rvecPelvis[2] + data["spine_03"]["rotation"]["rotx"] = 0.25 * rvecSpine5[0] + 0.75 * rvecPelvis[0] + data["spine_03"]["rotation"]["roty"] = 0.25 * rvecSpine5[1] + 0.75 * rvecPelvis[1] + data["spine_03"]["rotation"]["rotz"] = 0.25 * rvecSpine5[2] + 0.75 * rvecPelvis[2] + data["spine_02"]["rotation"]["rotx"] = 0.12 * rvecSpine5[0] + 0.88 * rvecPelvis[0] + data["spine_02"]["rotation"]["roty"] = 0.12 * rvecSpine5[1] + 0.88 * rvecPelvis[1] + data["spine_02"]["rotation"]["rotz"] = 0.12 * rvecSpine5[2] + 0.88 * rvecPelvis[2] + data["spine_01"]["rotation"]["rotx"] = 0.05 * rvecSpine5[0] + 0.95 * rvecPelvis[0] + data["spine_01"]["rotation"]["roty"] = 0.05 * rvecSpine5[1] + 0.95 * rvecPelvis[1] + data["spine_01"]["rotation"]["rotz"] = 0.05 * rvecSpine5[2] + 0.95 * rvecPelvis[2] + headRot("head", "mid_shoulders", "nose", "mid_ears", "nose", data, dataxyz) + + # data["shoulder_l"]["rotation"]["rotz"] = data["spine_05"]["rotation"]["rotz"] + 90 + # if data["shoulder_l"]["rotation"]["rotz"] > 180: + # data["shoulder_l"]["rotation"]["rotz"] -= 180 + # data["shoulder_r"]["rotation"]["rotz"] = data["spine_05"]["rotation"]["rotz"] - 90 + # if data["shoulder_r"]["rotation"]["rotz"] <= -180: + # data["shoulder_r"]["rotation"]["rotz"] += 180 + diff --git a/ModelUE4_apose.py b/ModelUE4_apose.py new file mode 100644 index 0000000..08c08c3 --- /dev/null +++ b/ModelUE4_apose.py @@ -0,0 +1,159 @@ +def makexyzrotvis(x,y,z,rotx,roty,rotz,visible): + ret = {} + translation = {} + rotation = {} + scale = {} + translation["x"] = x + translation["y"] = y + translation["z"] = z + rotation["rotx"] = rotx + rotation["roty"] = roty + rotation["rotz"] = rotz + scale["x"] = 1.0 + scale["y"] = 1.0 + scale["z"] = 1.0 + ret["visible"] = visible + ret["translation"] = translation + ret["rotation"] = rotation + ret["scale"] = scale + return ret + +def bodyaposeworld(data): + data["root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["pelvis"] = makexyzrotvis(0., -1.056, 96.751, 89.790634, 89.998116, 89.998116, 1.0) + data["spine_02"] = makexyzrotvis(0., -0.165, 107.556, 82.637939, 90.000107, 90.000107, 1.0) + data["spine_04"] = makexyzrotvis(0., -1.517, 126.763, 83.298508, -89.999939, -89.999939, 1.0) + data["spine_05"] = makexyzrotvis(0., -3.499, 140.030, 80.519157, -90., -90., 1.0) + data["clavicle_l"] = makexyzrotvis(3.782, -2.761, 152.201, -9.742390, -26.536825, -0.000003, 1.0) + data["shoulder_l"] = makexyzrotvis(17.700, -9.712, 149.530, -49.541229, -6.413618, 3.295939, 1.0) + data["elbow_l"] = makexyzrotvis(37.265, -11.911, 126.445, -33.187275, 30.848158, -28.515471, 1.0) + data["hand_l"] = makexyzrotvis(56.646, -0.335, 111.680, -35.172615, 32.751072, -105.931961, 1.0) + data["index_2_l"] = makexyzrotvis(63.042, 6.766, 103.815, -60.632530, 39.185219, -95.108459, 1.0) + data["index_3_l"] = makexyzrotvis(64.672, 8.095, 100.079, -72.604263, 41.145889, -95.530258, 1.0) + data["index_4_l"] = makexyzrotvis(65.436, 8.762, 96.840, -63.056412, 41.326263, -94.477684, 1.0) + data["middle_2_l"] = makexyzrotvis(64.490, 4.479, 103.481, -58.987339, 31.396336, -101.577202, 1.0) + data["middle_3_l"] = makexyzrotvis(66.531, 5.725, 99.504, -70.486740, 42.113358, -113.470406, 1.0) + data["middle_4_l"] = makexyzrotvis(67.435, 6.542, 96.065, -56.627937, 23.489927, -96.457565, 1.0) + data["pinky_2_l"] = makexyzrotvis(64.025, -0.159, 103.018, -57.221210, 8.494291, -103.297714, 1.0) + data["pinky_3_l"] = makexyzrotvis(65.937, 0.127, 100.015, -68.397072, 11.974680, -105.215523, 1.0) + data["pinky_4_l"] = makexyzrotvis(67.012, 0.355, 97.239, -68.031853, 22.739058, -114.804611, 1.0) + data["ring_2_l"] = makexyzrotvis(64.576, 2.083, 103.039, -60.143337, 23.882196, -110.450768, 1.0) + data["ring_3_l"] = makexyzrotvis(66.592, 2.975, 99.197, -72.950729, 34.323620, -119.597374, 1.0) + data["ring_4_l"] = makexyzrotvis(67.434, 3.550, 95.873, -60.028549, 26.871693, -112.741859, 1.0) + data["thumb_2_l"] = makexyzrotvis(57.478, 3.876, 107.639, -34.138702, 87.683189, -52.981850, 1.0) + data["thumb_3_l"] = makexyzrotvis(57.607, 7.077, 105.468, -52.094620, 85.939804, -51.473255, 1.0) + data["thumb_4_l"] = makexyzrotvis(57.784, 9.566, 102.262, -42.125023, 96.831261, -57.027554, 1.0) + data["lowerarm_twist_01_l"] = makexyzrotvis(47.323, -5.903, 118.782, -33.187275, 30.848158, -28.515471, 1.0) + data["upperarm_twist_01_l"] = makexyzrotvis(18.023, -9.748, 149.150, -49.541203, -6.413616, 3.295938, 1.0) + data["clavicle_r"] = makexyzrotvis(-3.782, -2.761, 152.201, 9.742397, 26.536829, 180., 1.0) + data["shoulder_r"] = makexyzrotvis(-17.700, -9.712, 149.530, 49.541229, 6.413619, -176.704056, 1.0) + data["elbow_r"] = makexyzrotvis(-37.265, -11.911, 126.445, 33.187275, -30.848154, 151.484512, 1.0) + data["hand_r"] = makexyzrotvis(-56.646, -0.335, 111.680, 35.172619, -32.751076, 74.068016, 1.0) + data["index_2_r"] = makexyzrotvis(-63.042, 6.766, 103.815, 60.632515, -39.185219, 84.891525, 1.0) + data["index_3_r"] = makexyzrotvis(-64.672, 8.095, 100.078, 72.604263, -41.145885, 84.469742, 1.0) + data["index_4_r"] = makexyzrotvis(-65.436, 8.762, 96.840, 63.056419, -41.326252, 85.522316, 1.0) + data["middle_2_r"] = makexyzrotvis(-64.490, 4.479, 103.482, 58.987339, -31.396345, 78.422768, 1.0) + data["middle_3_r"] = makexyzrotvis(-66.531, 5.725, 99.504, 70.486748, -42.113411, 66.529549, 1.0) + data["middle_4_r"] = makexyzrotvis(-67.435, 6.542, 96.065, 56.627953, -23.489948, 83.542404, 1.0) + data["pinky_2_r"] = makexyzrotvis(-64.025, -0.159, 103.017, 57.221222, -8.494291, 76.702271, 1.0) + data["pinky_3_r"] = makexyzrotvis(-65.937, 0.127, 100.015, 68.397110, -11.974666, 74.784508, 1.0) + data["pinky_4_r"] = makexyzrotvis(-67.013, 0.355, 97.239, 68.031822, -22.739044, 65.195419, 1.0) + data["ring_2_r"] = makexyzrotvis(-64.576, 2.083, 103.039, 60.143322, -23.882204, 69.549194, 1.0) + data["ring_3_r"] = makexyzrotvis(-66.592, 2.975, 99.197, 72.950775, -34.323681, 60.402596, 1.0) + data["ring_4_r"] = makexyzrotvis(-67.434, 3.550, 95.873, 60.028561, -26.871723, 67.258072, 1.0) + data["thumb_2_r"] = makexyzrotvis(-57.478, 3.877, 107.639, 34.138699, -87.683189, 127.018127, 1.0) + data["thumb_3_r"] = makexyzrotvis(-57.607, 7.077, 105.467, 52.094624, -85.939819, 128.526718, 1.0) + data["thumb_4_r"] = makexyzrotvis(-57.784, 9.566, 102.262, 42.125004, -96.831261, 122.972427, 1.0) + data["lowerarm_twist_01_r"] = makexyzrotvis(-47.324, -5.903, 118.782, 33.187271, -30.848154, 137.974152, 1.0) + data["upperarm_twist_01_r"] = makexyzrotvis(-18.023, -9.748, 149.150, 49.541218, 6.413617, 163.344009, 1.0) + data["head"] = makexyzrotvis(0., -5.876, 156.421, 75.972702, 89.999969, 89.999969, 1.0) + data["head_0"] = makexyzrotvis(0., -3.979, 165.516, 88.678833, -90.000290, -90.000290, 1.0) + data["hip_l"] = makexyzrotvis(9.006, -0.530, 95.300, 82.760597, 166.295837, 174.753387, 1.0) + data["knee_l"] = makexyzrotvis(14.218, -1.801, 53.067, 80.127579, 114.503563, 117.834335, 1.0) + data["calf_twist_01_l"] = makexyzrotvis(15.674, -4.996, 32.894, 79.251228, 113.356789, 117.027946, 1.0) + data["ankle_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.206955, 141.820786, 1.0) + data["ball_l"] = makexyzrotvis(17.909, 8.357, 2.812, -2.576805, 87.342842, 90.887283, 1.0) + data["thigh_twist_01_l"] = makexyzrotvis(11.711, -1.190, 73.382, 82.754990, 165.851181, 168.873581, 1.0) + data["hip_r"] = makexyzrotvis(-9.006, -0.530, 95.300, -82.760597, -166.295837, -5.246624, 1.0) + data["knee_r"] = makexyzrotvis(-14.218, -1.801, 53.067, -80.127579, -114.503563, -62.165585, 1.0) + data["calf_twist_01_r"] = makexyzrotvis(-15.674, -4.996, 32.893, -79.251190, -113.357056, -62.971889, 1.0) + data["ankle_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.878120, -139.207230, -38.179173, 1.0) + data["ball_r"] = makexyzrotvis(-17.909, 8.357, 2.812, 2.576798, -87.342842, -89.112701, 1.0) + data["thigh_twist_01_r"] = makexyzrotvis(-11.711, -1.190, 73.382, -82.755020, -165.851059, -11.126723, 1.0) + data["ik_foot_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["ik_foot_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.207169, 141.820999, 1.0) + data["ik_foot_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.877769, -139.207169, -38.178883, 1.0) + data["ik_hand_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["ik_hand_gun"] = makexyzrotvis(-56.646, -0.335, 111.680, 35.172623, -32.751068, 74.068031, 1.0) + data["ik_hand_l"] = makexyzrotvis(56.646, -0.335, 111.680, -35.172630, 32.751068, -105.931976, 1.0) + +def bodyaposelocal(data): + data["root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["pelvis"] = makexyzrotvis(0., -1.056, 96.751, 89.787849, 89.995300, 89.995300, 1.0) + data["spine_02"] = makexyzrotvis(10.809, 0.851, 0., 0., -14.063557, 0., 1.0) + data["spine_04"] = makexyzrotvis(18.875, -3.801, 0., 0., -14.063557, 0., 1.0) + data["spine_05"] = makexyzrotvis(13.407, -0.420, 0., 0., -2.779418, 0., 1.0) + data["clavicle_l"] = makexyzrotvis(11.884, 2.732, -3.782, -61.853577, -101.540916, 108.719162, 1.0) + data["shoulder_l"] = makexyzrotvis(15.785, 0., 0., -40.300545, 17.021019, 7.673903, 1.0) + data["elbow_l"] = makexyzrotvis(30.340, 0., 0., 10.397350, 30.360876, -3.613283, 1.0) + data["hand_l"] = makexyzrotvis(26.975, 0., 0., -2.499808, 0.412571, -76.356194, 1.0) + data["index_02_l"] = makexyzrotvis(12.068, -1.763, -2.109, 3.763789, -25.536919, 14.866977, 1.0) + data["index_03_l"] = makexyzrotvis(4.288, 0., 0., 0.475286, -11.986160, 1.337821, 1.0) + data["index_04_l"] = makexyzrotvis(3.394, 0., 0., -0.997269, 9.496333, 1.137367, 1.0) + data["middle_02_l"] = makexyzrotvis(12.244, -1.294, 0.571, 7.040565, -22.825857, 1.917856, 1.0) + data["middle_03_l"] = makexyzrotvis(4.640, 0., 0., -1.136837, -12.280714, -2.024954, 1.0) + data["middle_04_l"] = makexyzrotvis(3.649, 0., 0., 4.389954, 15.399755, 0.781444, 1.0) + data["pinky_02_l"] = makexyzrotvis(10.141, -2.263, 4.643, 18.933966, -20.185858, -18.724598, 1.0) + data["pinky_03_l"] = makexyzrotvis(3.571, 0., 0., 1.315686, -11.208060, 1.063832, 1.0) + data["pinky_04_l"] = makexyzrotvis(2.986, 0., 0., -3.869664, -1.038998, 0.445698, 1.0) + data["ring_02_l"] = makexyzrotvis(11.498, -1.754, 2.847, 10.989255, -23.292091, -13.510273, 1.0) + data["ring_03_l"] = makexyzrotvis(4.430, 0., 0., 1.669749, -13.315456, 0.301359, 1.0) + data["ring_04_l"] = makexyzrotvis(3.477, 0., 0., -2.987661, 12.899673, -0.360762, 1.0) + data["thumb_02_l"] = makexyzrotvis(4.762, -2.375, -2.538, -36.918968, -27.056177, 95.069138, 1.0) + data["thumb_03_l"] = makexyzrotvis(3.870, 0., 0., -9.833239, -15.151319, 1.613141, 1.0) + data["thumb_04_l"] = makexyzrotvis(4.062, 0., 0., -0.479192, 12.385657, 2.414767, 1.0) + data["lowerarm_twist_01_l"] = makexyzrotvis(14., 0., 0., 0., 0., 0., 1.0) + data["None"] = makexyzrotvis(77.885, 69.602, 43.869, 32.168755, 93.709030, -145.800354, 1.0) + data["upperarm_twist_01_l"] = makexyzrotvis(0.5, 0., 0., 0., 0., 0., 1.0) + data["clavicle_r"] = makexyzrotvis(11.884, 2.732, 3.782, -61.853588, 78.459053, 108.719177, 1.0) + data["shoulder_r"] = makexyzrotvis(-15.785, 0., 0., -40.300556, 17.021015, 7.673907, 1.0) + data["elbow_r"] = makexyzrotvis(-30.340, 0., 0., 10.397350, 30.360876, -3.613281, 1.0) + data["hand_r"] = makexyzrotvis(-26.975, 0., 0., -2.499808, 0.412573, -76.356194, 1.0) + data["index_02_r"] = makexyzrotvis(-12.068, 1.764, 2.109, 3.763789, -25.536919, 14.866971, 1.0) + data["index_03_r"] = makexyzrotvis(-4.288, 0., 0., 0.475299, -11.986152, 1.337820, 1.0) + data["index_04_r"] = makexyzrotvis(-3.394, 0., 0., -0.997269, 9.496332, 1.137365, 1.0) + data["middle_02_r"] = makexyzrotvis(-12.244, 1.294, -0.571, 7.040559, -22.825850, 1.917846, 1.0) + data["middle_03_r"] = makexyzrotvis(-4.641, 0., 0., -1.136837, -12.280720, -2.024957, 1.0) + data["middle_04_r"] = makexyzrotvis(-3.649, 0., 0., 4.389954, 15.399755, 0.781455, 1.0) + data["pinky_02_r"] = makexyzrotvis(-10.141, 2.263, -4.643, 18.933966, -20.185869, -18.724598, 1.0) + data["pinky_03_r"] = makexyzrotvis(-3.571, 0., 0., 1.315692, -11.208064, 1.063835, 1.0) + data["pinky_04_r"] = makexyzrotvis(-2.985, 0., 0., -3.869664, -1.038998, 0.445703, 1.0) + data["ring_02_r"] = makexyzrotvis(-11.498, 1.754, -2.847, 10.989241, -1.038998, -23.292084, 1.0) + data["ring_03_r"] = makexyzrotvis(-4.430, 0., 0., 1.669749, -13.315456, 0.301358, 1.0) + data["ring_04_r"] = makexyzrotvis(-3.477, 0., 0., -2.987661, 12.899678, -0.360764, 1.0) + data["thumb_02_r"] = makexyzrotvis(-4.762, 2.375, 2.538, -36.918968, -27.056177, 95.069130, 1.0) + data["thumb_03_r"] = makexyzrotvis(-3.870, 0., 0., -9.833239, -15.151324, 1.613143, 1.0) + data["thumb_04_r"] = makexyzrotvis(-4.062, 0., 0., -0.479199, 12.385653, 2.414763, 1.0) + data["lowerarm_twist_01_r"] = makexyzrotvis(-14., 0., 0., 0., 0., -13.510374, 1.0) + data["upperarm_twist_01_r"] = makexyzrotvis(-0.5, 0., 0., 0., 0., -19.951906, 1.0) + data["head"] = makexyzrotvis(16.559, 0.355, 0., 0., 23.508049, 0., 1.0) + data["head_0"] = makexyzrotvis(9.284, -0.364, 0., 0., -15.348654, 0., 1.0) + data["hip_l"] = makexyzrotvis(-1.449, 0.531, -9.006, 7.032287, 1.515470, 8.563468, 1.0) + data["knee_l"] = makexyzrotvis(-42.572, 0., 0., -1.787276, 7.613586, -5.735975, 1.0) + data["calf_twist_01_l"] = makexyzrotvis(-20.477, 0., 0., 0.219085, 0.872982, 0.323560, 1.0) + data["ankle_l"] = makexyzrotvis(-40.197, 0., 0., -3.704933, -8.059578, -0.415387, 1.0) + data["ball_l"] = makexyzrotvis(-10.454, 16.578, 0., -0.008954, 91.883591, 0.003945, 1.0) + data["thigh_twist_01_l"] = makexyzrotvis(-22.094, 0., 0., 0.000212, 0.056331, -5.438678, 1.0) + data["hip_r"] = makexyzrotvis(-1.449, 0.531, 9.006, 7.032294, -178.484528, 8.563469, 1.0) + data["knee_r"] = makexyzrotvis(42.572, 0., 0., -1.787276, 7.613586, -5.735975, 1.0) + data["calf_twist_01_r"] = makexyzrotvis(20.477, 0., 0., 0.219126, 0.872964, 0.323369, 1.0) + data["ankle_r"] = makexyzrotvis(40.197, 0., 0., -3.704927, -8.059580, -0.415387, 1.0) + data["ball_r"] = makexyzrotvis(10.454, -16.578, -0.08, -0.008948, 91.883591, 0.003944, 1.0) + data["thigh_twist_01_r"] = makexyzrotvis(22.094, 0., 0., 0.000164, 0.056341, -5.438870, 1.0) + data["ik_foot_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["ik_foot_l"] = makexyzrotvis(17.076, -8.072, 13.466, 88.877769, 139.207169, 141.820999, 1.0) + data["ik_foot_r"] = makexyzrotvis(-17.076, -8.072, 13.466, -88.877769, -139.207169, -38.178883, 1.0) + data["ik_hand_root"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) + data["ik_hand_gun"] = makexyzrotvis(-56.64, -0.335, 111.680, 35.172623, -32.751068, 74.068031, 1.0) + data["ik_hand_l"] = makexyzrotvis(77.885, 69.602, 43.869, 32.168755, 93.709030, -145.800354, 1.0) + data["Non"] = makexyzrotvis(0., 0., 0., 0., 0., 0., 1.0) \ No newline at end of file diff --git a/ModelUE4_old.py b/ModelUE4_old.py new file mode 100644 index 0000000..055ad38 --- /dev/null +++ b/ModelUE4_old.py @@ -0,0 +1,1763 @@ +import numpy as np + +def makexyzrotvis(x,y,z,rotx,roty,rotz,visible): + ret = {} + translation = {} + rotation = {} + scale = {} + translation["x"] = x + translation["y"] = y + translation["z"] = z + rotation["rotx"] = rotx + rotation["roty"] = roty + rotation["rotz"] = rotz + scale["x"] = 1.0 + scale["y"] = 1.0 + scale["z"] = 1.0 + ret["visible"] = visible + ret["translation"] = translation + ret["rotation"] = rotation + ret["scale"] = scale + return ret + +def getAngle(avec0, avec1, bvec0, bvec1): + chis = float(avec0*bvec0 + avec1*bvec1) + znam1 = float(np.sqrt(pow(avec0, 2) + pow(avec1, 2))) + znam2 = float(np.sqrt(pow(bvec0, 2) + pow(bvec1, 2))) + if (znam1*znam2) == 0 or np.fabs(chis) > np.fabs(znam1*znam2): + return None + return np.arccos(chis / (znam1 * znam2)) * 180. / np.pi + +def HeadRot(poselms, coef): + head0x = poselms[0].x * coef + head0y = -poselms[0].z * coef + head0z = -poselms[0].y * coef + head7x = poselms[7].x * coef + head7y = -poselms[7].z * coef + head7z = -poselms[7].y * coef + head8x = poselms[8].x * coef + head8y = -poselms[8].z * coef + head8z = -poselms[8].y * coef + + rotx = 90.0 + p78x = 0.5*(head7x + head8x) + p78y = 0.5*(head7y + head8y) + p78z = 0.5*(head7z + head8z) + vec_head_x = [head0y - p78y, head0z - p78z] + alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) + rotx += (alpha_x) * 180. / np.pi + + roty = 90.0 + vec_head_y = [head8x - head7x, head8z - head7z] + alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 90.0 + vec_head_z = [head8x - head7x, head8y - head7y] + alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) + rotz += (alpha_z) * 180. / np.pi + + + rvec = [rotx, rotz, roty] + return rvec + +def ShoulderLRot(poselms, coef): + sh11x = poselms[11].x * coef + sh11y = -poselms[11].z * coef + sh11z = -poselms[11].y * coef + sh13x = poselms[13].x * coef + sh13y = -poselms[13].z * coef + sh13z = -poselms[13].y * coef + + rotx = 0. + + roty = 0. + vec_sh_y = [sh13x - sh11x, sh13z - sh11z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh13x - sh11x, sh13y - sh11y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def ShoulderRRot(poselms, coef): + sh12x = poselms[12].x * coef + sh12y = -poselms[12].z * coef + sh12z = -poselms[12].y * coef + sh14x = poselms[14].x * coef + sh14y = -poselms[14].z * coef + sh14z = -poselms[14].y * coef + + rotx = 0. + + roty = 0. + vec_sh_y = [sh14x - sh12x, sh14z - sh12z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh14x - sh12x, sh14y - sh12y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def ElbowLRot(poselms, coef): + sh13x = poselms[13].x * coef + sh13y = -poselms[13].z * coef + sh13z = -poselms[13].y * coef + sh15x = poselms[15].x * coef + sh15y = -poselms[15].z * coef + sh15z = -poselms[15].y * coef + + rotx = 0. + + roty = 0. + vec_sh_y = [sh15x - sh13x, sh15z - sh13z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh15x - sh13x, sh15y - sh13y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def ElbowRRot(poselms, coef): + sh14x = poselms[14].x * coef + sh14y = -poselms[14].z * coef + sh14z = -poselms[14].y * coef + sh16x = poselms[16].x * coef + sh16y = -poselms[16].z * coef + sh16z = -poselms[16].y * coef + + rotx = 0. + + roty = 0. + vec_sh_y = [sh16x - sh14x, sh16z - sh14z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh16x - sh14x, sh16y - sh14y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def HandLRot(poselms, coef): + sh16x = poselms[16].x * coef + sh16y = -poselms[16].z * coef + sh16z = -poselms[16].y * coef + sh18x = poselms[18].x * coef + sh18y = -poselms[18].z * coef + sh18z = -poselms[18].y * coef + sh20x = poselms[20].x * coef + sh20y = -poselms[20].z * coef + sh20z = -poselms[20].y * coef + + hand_vec_x = 0.5 * (sh18x + sh20x) + hand_vec_y = 0.5 * (sh18y + sh20y) + hand_vec_z = 0.5 * (sh18z + sh20z) + + rotx = 0. + + roty = 0. + vec_sh_y = [hand_vec_x - sh16x, hand_vec_z - sh16z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [hand_vec_x - sh16x, hand_vec_y - sh16y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def HandRRot(poselms, coef): + sh15x = poselms[15].x * coef + sh15y = -poselms[15].z * coef + sh15z = -poselms[15].y * coef + sh17x = poselms[17].x * coef + sh17y = -poselms[17].z * coef + sh17z = -poselms[17].y * coef + sh19x = poselms[19].x * coef + sh19y = -poselms[19].z * coef + sh19z = -poselms[19].y * coef + + hand_vec_x = 0.5 * (sh17x + sh19x) + hand_vec_y = 0.5 * (sh17y + sh19y) + hand_vec_z = 0.5 * (sh17z + sh19z) + + rotx = 0. + + roty = 0. + vec_sh_y = [hand_vec_x - sh15x, hand_vec_z - sh15z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [hand_vec_x - sh15x, hand_vec_y - sh15y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def Spine5Rot(poselms, coef): + sh11x = poselms[11].x * coef + sh11y = -poselms[11].z * coef + sh11z = -poselms[11].y * coef + sh12x = poselms[12].x * coef + sh12y = -poselms[12].z * coef + sh12z = -poselms[12].y * coef + + rotx = 90.0 + # p78x = 0.5*(head7x + head8x) + # p78y = 0.5*(head7y + head8y) + # p78z = 0.5*(head7z + head8z) + # vec_head_x = [head0y - p78y, head0z - p78z] + # alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) + # rotx += (alpha_x) * 180. / np.pi + + roty = -90.0 + # vec_head_y = [head8x - head7x, head8z - head7z] + # alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) + # roty += (alpha_y) * 180. / np.pi + + rotz = -90.0 + # vec_head_z = [head8x - head7x, head8y - head7y] + # alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) + # rotz += (alpha_z) * 180. / np.pi + + vec_spine_z = [sh12x - sh11x, sh12y - sh11y] + alpha_z = np.arctan(vec_spine_z[1]/vec_spine_z[0]) + roty += (alpha_z) * 180. / np.pi + + + rvec = [rotx, roty, rotz] + return rvec + +def PelvisRot(poselms, coef): + sh23x = poselms[23].x * coef + sh23y = -poselms[23].z * coef + sh23z = -poselms[23].y * coef + sh24x = poselms[24].x * coef + sh24y = -poselms[24].z * coef + sh24z = -poselms[24].y * coef + + rotx = 90.0 + # p78x = 0.5*(head7x + head8x) + # p78y = 0.5*(head7y + head8y) + # p78z = 0.5*(head7z + head8z) + # vec_head_x = [head0y - p78y, head0z - p78z] + # alpha_x = np.arctan(vec_head_x[1]/vec_head_x[0]) + # rotx += (alpha_x) * 180. / np.pi + + roty = -90.0 + # vec_head_y = [head8x - head7x, head8z - head7z] + # alpha_y = np.arctan(vec_head_y[1] / vec_head_y[0]) + # roty += (alpha_y) * 180. / np.pi + + rotz = -90.0 + # vec_head_z = [head8x - head7x, head8y - head7y] + # alpha_z = np.arctan(vec_head_z[1] / vec_head_z[0]) + # rotz += (alpha_z) * 180. / np.pi + + vec_spine_z = [sh24x - sh23x, sh24y - sh23y] + alpha_z = np.arctan(vec_spine_z[1]/vec_spine_z[0]) + roty += (alpha_z) * 180. / np.pi + + + rvec = [rotx, roty, rotz] + return rvec + +def HipLRot(poselms, coef): + sh23x = poselms[23].x * coef + sh23y = -poselms[23].z * coef + sh23z = -poselms[23].y * coef + sh25x = poselms[25].x * coef + sh25y = -poselms[25].z * coef + sh25z = -poselms[25].y * coef + + rotx = 90. + + roty = 0. + vec_sh_y = [sh25x - sh23x, sh25z - sh23z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh25x - sh23x, sh25y - sh23y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def HipRRot(poselms, coef): + sh24x = poselms[24].x * coef + sh24y = -poselms[24].z * coef + sh24z = -poselms[24].y * coef + sh26x = poselms[26].x * coef + sh26y = -poselms[26].z * coef + sh26z = -poselms[26].y * coef + + rotx = 90. + + roty = 0. + vec_sh_y = [sh26x - sh24x, sh26z - sh24z] + alpha_y = np.arctan(vec_sh_y[1] / vec_sh_y[0]) + roty += (alpha_y) * 180. / np.pi + + rotz = 0. + vec_sh_z = [sh26x - sh24x, sh26y - sh24y] + alpha_z = np.arctan(vec_sh_z[1] / vec_sh_z[0]) + rotz += (alpha_z) * 180. / np.pi + + rvec = [roty, rotz, rotx] + return rvec + +def checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose): + # tvec0 - parent bone by root + # tvec1 - current bone by root + rvec = [0, 0, 0] + + # rotX + var_angle_apose = getAngle(tvec0_apose[1], tvec0_apose[2], tvec1_apose[1], tvec1_apose[2]) + var_angle = getAngle(tvec0[1], tvec0[2], tvec1[1], tvec1[2]) + if var_angle == None or var_angle_apose == None: + rvec[0] = rvec_apose[0] + else: + rvec[0] = var_angle - var_angle_apose + rvec_apose[0] + if rvec[0] > 180: + rvec[0] -= 180 + if rvec[0] < -180: + rvec[0] += 180 + + # rotY + var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[2], tvec1_apose[0], tvec1_apose[2]) + var_angle = getAngle(tvec0[0], tvec0[2], tvec1[0], tvec1[2]) + if var_angle == None or var_angle_apose == None: + rvec[1] = rvec_apose[1] + else: + rvec[1] = var_angle - var_angle_apose + rvec_apose[1] + if rvec[1] > 180: + rvec[1] -= 180 + if rvec[1] < -180: + rvec[1] += 180 + + # rotZ + var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[1], tvec1_apose[0], tvec1_apose[1]) + var_angle = getAngle(tvec0[0], tvec0[1], tvec1[0], tvec1[1]) + if var_angle == None or var_angle_apose == None: + rvec[2] = rvec_apose[2] + else: + rvec[2] = var_angle - var_angle_apose + rvec_apose[2] + if rvec[2] > 180: + rvec[2] -= 180 + if rvec[2] < -180: + rvec[2] += 180 + + return rvec + +def bodyconvertlocal(poseslms, data, coef, maxy): + dataxyz = {} + + rootx = poseslms[24].x * coef + rooty = -poseslms[24].z * coef + rootz = -poseslms[24].y * coef + rootv = poseslms[24].visibility + dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[23].x * coef + rooty = -poseslms[23].z * coef + rootz = -poseslms[23].y * coef + rootv = poseslms[23].visibility + dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = -maxy * coef + rootv = 1.0 + dataxyz["root"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) + rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) + dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[12].x * coef + rooty = -poseslms[12].z * coef + rootz = -poseslms[12].y * coef + rootv = poseslms[12].visibility + dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[11].x * coef + rooty = -poseslms[11].z * coef + rootz = -poseslms[11].y * coef + rootv = poseslms[11].visibility + dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) + rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) + rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) + rootv = poseslms[0].visibility + dataxyz["head"] = [rootx, rooty, rootz, rootv] + + rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) + rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) + rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) + rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) + data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] + + rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) + rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) + rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) + rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) + dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] + + rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) + rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) + rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) + rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) + data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] + + rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) + rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) + rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) + rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) + dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] + + rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) + rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) + rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) + rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) + dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) + dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) + dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[14].x * coef + rooty = -poseslms[14].z * coef + rootz = -poseslms[14].y * coef + rootv = poseslms[14].visibility + dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[13].x * coef + rooty = -poseslms[13].z * coef + rootz = -poseslms[13].y * coef + rootv = poseslms[13].visibility + dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[26].x * coef + rooty = -poseslms[26].z * coef + rootz = -poseslms[26].y * coef + rootv = poseslms[26].visibility + dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[25].x * coef + rooty = -poseslms[25].z * coef + rootz = -poseslms[25].y * coef + rootv = poseslms[25].visibility + dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[28].x * coef + rooty = -poseslms[28].z * coef + rootz = -poseslms[28].y * coef + rootv = poseslms[28].visibility + dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[27].x * coef + rooty = -poseslms[27].z * coef + rootz = -poseslms[27].y * coef + rootv = poseslms[27].visibility + dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[32].x * coef + rooty = -poseslms[32].z * coef + rootz = -poseslms[32].y * coef + rootv = poseslms[32].visibility + dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[31].x * coef + rooty = -poseslms[31].z * coef + rootz = -poseslms[31].y * coef + rootv = poseslms[31].visibility + dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[30].x * coef + rooty = -poseslms[30].z * coef + rootz = -poseslms[30].y * coef + rootv = poseslms[30].visibility + data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[29].x * coef + rooty = -poseslms[29].z * coef + rootz = -poseslms[29].y * coef + rootv = poseslms[29].visibility + data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] + + data["elbow_r"]["translation"]["x"] = dataxyz["elbow_r"][0] - dataxyz["shoulder_r"][0] + data["elbow_r"]["translation"]["y"] = dataxyz["elbow_r"][1] - dataxyz["shoulder_r"][1] + data["elbow_r"]["translation"]["z"] = dataxyz["elbow_r"][2] - dataxyz["shoulder_r"][2] + + data["elbow_l"]["translation"]["x"] = dataxyz["elbow_l"][0] - dataxyz["shoulder_l"][0] + data["elbow_l"]["translation"]["y"] = dataxyz["elbow_l"][1] - dataxyz["shoulder_l"][1] + data["elbow_l"]["translation"]["z"] = dataxyz["elbow_l"][2] - dataxyz["shoulder_l"][2] + + data["shoulder_r"]["translation"]["x"] = dataxyz["shoulder_r"][0] - dataxyz["clavicle_r"][0] + data["shoulder_r"]["translation"]["y"] = dataxyz["shoulder_r"][1] - dataxyz["clavicle_r"][1] + data["shoulder_r"]["translation"]["z"] = dataxyz["shoulder_r"][2] - dataxyz["clavicle_r"][2] + + data["shoulder_l"]["translation"]["x"] = dataxyz["shoulder_l"][0] - dataxyz["clavicle_l"][0] + data["shoulder_l"]["translation"]["y"] = dataxyz["shoulder_l"][1] - dataxyz["clavicle_l"][1] + data["shoulder_l"]["translation"]["z"] = dataxyz["shoulder_l"][2] - dataxyz["clavicle_l"][2] + + data["clavicle_r"]["translation"]["x"] = dataxyz["clavicle_r"][0] - dataxyz["spine_05"][0] + data["clavicle_r"]["translation"]["y"] = dataxyz["clavicle_r"][1] - dataxyz["spine_05"][1] + data["clavicle_r"]["translation"]["z"] = dataxyz["clavicle_r"][2] - dataxyz["spine_05"][2] + + data["clavicle_l"]["translation"]["x"] = dataxyz["clavicle_l"][0] - dataxyz["spine_05"][0] + data["clavicle_l"]["translation"]["y"] = dataxyz["clavicle_l"][1] - dataxyz["spine_05"][1] + data["clavicle_l"]["translation"]["z"] = dataxyz["clavicle_l"][2] - dataxyz["spine_05"][2] + + data["head"]["translation"]["x"] = dataxyz["head"][0] - dataxyz["spine_05"][0] + data["head"]["translation"]["y"] = dataxyz["head"][1] - dataxyz["spine_05"][1] + data["head"]["translation"]["z"] = dataxyz["head"][2] - dataxyz["spine_05"][2] + + data["spine_05"]["translation"]["x"] = dataxyz["spine_05"][0] - dataxyz["spine_04"][0] + data["spine_05"]["translation"]["y"] = dataxyz["spine_05"][1] - dataxyz["spine_04"][1] + data["spine_05"]["translation"]["z"] = dataxyz["spine_05"][2] - dataxyz["spine_04"][2] + + data["spine_04"]["translation"]["x"] = dataxyz["spine_04"][0] - dataxyz["spine_03"][0] + data["spine_04"]["translation"]["y"] = dataxyz["spine_04"][1] - dataxyz["spine_03"][1] + data["spine_04"]["translation"]["z"] = dataxyz["spine_04"][2] - dataxyz["spine_03"][2] + + data["spine_03"]["translation"]["x"] = dataxyz["spine_03"][0] - dataxyz["spine_02"][0] + data["spine_03"]["translation"]["y"] = dataxyz["spine_03"][1] - dataxyz["spine_02"][1] + data["spine_03"]["translation"]["z"] = dataxyz["spine_03"][2] - dataxyz["spine_02"][2] + + data["spine_02"]["translation"]["x"] = dataxyz["spine_02"][0] - dataxyz["spine_01"][0] + data["spine_02"]["translation"]["y"] = dataxyz["spine_02"][1] - dataxyz["spine_01"][1] + data["spine_02"]["translation"]["z"] = dataxyz["spine_02"][2] - dataxyz["spine_01"][2] + + data["spine_01"]["translation"]["x"] = dataxyz["spine_01"][0] - dataxyz["pelvis"][0] + data["spine_01"]["translation"]["y"] = dataxyz["spine_01"][1] - dataxyz["pelvis"][1] + data["spine_01"]["translation"]["z"] = dataxyz["spine_01"][2] - dataxyz["pelvis"][2] + + data["ball_l"]["translation"]["x"] = dataxyz["ball_l"][0] - dataxyz["ankle_l"][0] + data["ball_l"]["translation"]["y"] = dataxyz["ball_l"][1] - dataxyz["ankle_l"][1] + data["ball_l"]["translation"]["z"] = dataxyz["ball_l"][2] - dataxyz["ankle_l"][2] + + data["ball_r"]["translation"]["x"] = dataxyz["ball_r"][0] - dataxyz["ankle_r"][0] + data["ball_r"]["translation"]["y"] = dataxyz["ball_r"][1] - dataxyz["ankle_r"][1] + data["ball_r"]["translation"]["z"] = dataxyz["ball_r"][2] - dataxyz["ankle_r"][2] + + data["heel_l"]["translation"]["x"] = dataxyz["heel_l"][0] - dataxyz["ankle_l"][0] + data["heel_l"]["translation"]["y"] = dataxyz["heel_l"][1] - dataxyz["ankle_l"][1] + data["heel_l"]["translation"]["z"] = dataxyz["heel_l"][2] - dataxyz["ankle_l"][2] + + data["heel_r"]["translation"]["x"] = dataxyz["heel_r"][0] - dataxyz["ankle_r"][0] + data["heel_r"]["translation"]["y"] = dataxyz["heel_r"][1] - dataxyz["ankle_r"][1] + data["heel_r"]["translation"]["z"] = dataxyz["heel_r"][2] - dataxyz["ankle_r"][2] + + data["ankle_l"]["translation"]["x"] = dataxyz["ankle_l"][0] - dataxyz["knee_l"][0] + data["ankle_l"]["translation"]["y"] = dataxyz["ankle_l"][1] - dataxyz["knee_l"][1] + data["ankle_l"]["translation"]["z"] = dataxyz["ankle_l"][2] - dataxyz["knee_l"][2] + + data["ankle_r"]["translation"]["x"] = dataxyz["ankle_r"][0] - dataxyz["knee_r"][0] + data["ankle_r"]["translation"]["y"] = dataxyz["ankle_r"][1] - dataxyz["knee_r"][1] + data["ankle_r"]["translation"]["z"] = dataxyz["ankle_r"][2] - dataxyz["knee_r"][2] + + data["knee_l"]["translation"]["x"] = dataxyz["knee_l"][0] - dataxyz["hip_l"][0] + data["knee_l"]["translation"]["y"] = dataxyz["knee_l"][1] - dataxyz["hip_l"][1] + data["knee_l"]["translation"]["z"] = dataxyz["knee_l"][2] - dataxyz["hip_l"][2] + + data["knee_r"]["translation"]["x"] = dataxyz["knee_r"][0] - dataxyz["hip_r"][0] + data["knee_r"]["translation"]["y"] = dataxyz["knee_r"][1] - dataxyz["hip_r"][1] + data["knee_r"]["translation"]["z"] = dataxyz["knee_r"][2] - dataxyz["hip_r"][2] + + data["hip_l"]["translation"]["x"] = dataxyz["hip_l"][0] - dataxyz["pelvis"][0] + data["hip_l"]["translation"]["y"] = dataxyz["hip_l"][1] - dataxyz["pelvis"][1] + data["hip_l"]["translation"]["z"] = dataxyz["hip_l"][2] - dataxyz["pelvis"][2] + + data["hip_r"]["translation"]["x"] = dataxyz["hip_r"][0] - dataxyz["pelvis"][0] + data["hip_r"]["translation"]["y"] = dataxyz["hip_r"][1] - dataxyz["pelvis"][1] + data["hip_r"]["translation"]["z"] = dataxyz["hip_r"][2] - dataxyz["pelvis"][2] + + data["pelvis"]["translation"]["x"] = 0. + data["pelvis"]["translation"]["y"] = 0. + data["pelvis"]["translation"]["z"] = dataxyz["pelvis"][2] - dataxyz["root"][2] + +def updateValueAPoseWorld(data, dataxyz, parent_name, current_name): + tvec0 = [dataxyz[parent_name][0], dataxyz[parent_name][1], dataxyz[parent_name][2]] + tvec1 = [dataxyz[current_name][0], dataxyz[current_name][1], dataxyz[current_name][2]] + tvec0_apose = [data[parent_name]["translation"]["x"], data[parent_name]["translation"]["y"], data[parent_name]["translation"]["z"]] + tvec1_apose = [data[current_name]["translation"]["x"], data[current_name]["translation"]["y"], data[current_name]["translation"]["z"]] + rvec_apose = [data[current_name]["rotation"]["rotx"], data[current_name]["rotation"]["roty"], data[current_name]["rotation"]["rotz"]] + rvec = checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose) + data[current_name]["translation"]["x"] = dataxyz[current_name][0] + data[current_name]["translation"]["y"] = dataxyz[current_name][1] + data[current_name]["translation"]["z"] = dataxyz[current_name][2] + # data[current_name]["rotation"]["rotx"] = rvec[0] + # data[current_name]["rotation"]["roty"] = rvec[1] + # data[current_name]["rotation"]["rotz"] = rvec[2] + data[current_name]["visible"] = dataxyz[current_name][3] + +def bodyconvertwithrot(poseslms, data, coef, maxy): + dataxyz = {} + + rootx = poseslms[24].x * coef + rooty = -poseslms[24].z * coef + rootz = -poseslms[24].y * coef + rootv = poseslms[24].visibility + dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[23].x * coef + rooty = -poseslms[23].z * coef + rootz = -poseslms[23].y * coef + rootv = poseslms[23].visibility + dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = -maxy * coef + rootv = 1.0 + dataxyz["root"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) + rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) + dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[12].x * coef + rooty = -poseslms[12].z * coef + rootz = -poseslms[12].y * coef + rootv = poseslms[12].visibility + dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[11].x * coef + rooty = -poseslms[11].z * coef + rootz = -poseslms[11].y * coef + rootv = poseslms[11].visibility + dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) + rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) + rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) + rootv = poseslms[0].visibility + dataxyz["head"] = [rootx, rooty, rootz, rootv] + + rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) + rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) + rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) + rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) + data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] + + rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) + rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) + rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) + rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) + dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] + + rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) + rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) + rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) + rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) + data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] + + rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) + rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) + rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) + rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) + dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] + + rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) + rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) + rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) + rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) + dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) + dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) + rooty = 0.5 * ( + 0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * + dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) + dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[16].x * coef + rooty = -poseslms[16].z * coef + rootz = -poseslms[16].y * coef + rootv = poseslms[16].visibility + dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[15].x * coef + rooty = -poseslms[15].z * coef + rootz = -poseslms[15].y * coef + rootv = poseslms[15].visibility + dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[14].x * coef + rooty = -poseslms[14].z * coef + rootz = -poseslms[14].y * coef + rootv = poseslms[14].visibility + dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[13].x * coef + rooty = -poseslms[13].z * coef + rootz = -poseslms[13].y * coef + rootv = poseslms[13].visibility + dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[26].x * coef + rooty = -poseslms[26].z * coef + rootz = -poseslms[26].y * coef + rootv = poseslms[26].visibility + dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[25].x * coef + rooty = -poseslms[25].z * coef + rootz = -poseslms[25].y * coef + rootv = poseslms[25].visibility + dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[28].x * coef + rooty = -poseslms[28].z * coef + rootz = -poseslms[28].y * coef + rootv = poseslms[28].visibility + dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[27].x * coef + rooty = -poseslms[27].z * coef + rootz = -poseslms[27].y * coef + rootv = poseslms[27].visibility + dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[32].x * coef + rooty = -poseslms[32].z * coef + rootz = -poseslms[32].y * coef + rootv = poseslms[32].visibility + dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[31].x * coef + rooty = -poseslms[31].z * coef + rootz = -poseslms[31].y * coef + rootv = poseslms[31].visibility + dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[30].x * coef + rooty = -poseslms[30].z * coef + rootz = -poseslms[30].y * coef + rootv = poseslms[30].visibility + data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[29].x * coef + rooty = -poseslms[29].z * coef + rootz = -poseslms[29].y * coef + rootv = poseslms[29].visibility + data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] + + updateValueAPoseWorld(data, dataxyz, "elbow_r", "hand_r") + rvecHandR = HandRRot(poseslms, coef) + data["hand_r"]["rotation"]["rotx"] = rvecHandR[0] + data["hand_r"]["rotation"]["roty"] = rvecHandR[1] + # data["hand_r"]["rotation"]["rotz"] = rvecHandR[2] + updateValueAPoseWorld(data, dataxyz, "elbow_l", "hand_l") + rvecHandL = HandLRot(poseslms, coef) + data["hand_l"]["rotation"]["rotx"] = rvecHandL[0] + data["hand_l"]["rotation"]["roty"] = rvecHandL[1] + # data["hand_l"]["rotation"]["rotz"] = rvecHandL[2] + updateValueAPoseWorld(data, dataxyz, "shoulder_r", "elbow_r") + rvecElbowR = ShoulderRRot(poseslms, coef) + data["elbow_r"]["rotation"]["rotx"] = rvecElbowR[0] + data["elbow_r"]["rotation"]["roty"] = rvecElbowR[1] + # data["elbow_r"]["rotation"]["rotz"] = rvecElbowR[2] + updateValueAPoseWorld(data, dataxyz, "shoulder_l", "elbow_l") + rvecElbowL = ShoulderLRot(poseslms, coef) + data["elbow_l"]["rotation"]["rotx"] = rvecElbowL[0] + data["elbow_l"]["rotation"]["roty"] = rvecElbowL[1] + # data["elbow_l"]["rotation"]["rotz"] = rvecElbowL[2] + updateValueAPoseWorld(data, dataxyz, "clavicle_r", "shoulder_r") + rvecShoulderR = ShoulderRRot(poseslms, coef) + data["shoulder_r"]["rotation"]["rotx"] = rvecShoulderR[0] + data["shoulder_r"]["rotation"]["roty"] = rvecShoulderR[1] + # data["shoulder_r"]["rotation"]["rotz"] = rvecShoulderR[2] + updateValueAPoseWorld(data, dataxyz, "clavicle_l", "shoulder_l") + rvecShoulderL = ShoulderLRot(poseslms, coef) + data["shoulder_l"]["rotation"]["rotx"] = rvecShoulderL[0] + data["shoulder_l"]["rotation"]["roty"] = rvecShoulderL[1] + # data["shoulder_l"]["rotation"]["rotz"] = rvecShoulderL[2] + updateValueAPoseWorld(data, dataxyz, "spine_05", "clavicle_r") + updateValueAPoseWorld(data, dataxyz, "spine_05", "clavicle_l") + updateValueAPoseWorld(data, dataxyz, "spine_05", "head") + rvecHead = HeadRot(poseslms, coef) + data["head"]["rotation"]["rotx"] = rvecHead[0] + data["head"]["rotation"]["roty"] = rvecHead[1] + # data["head"]["rotation"]["rotz"] = rvecHead[2] + updateValueAPoseWorld(data, dataxyz, "spine_04", "spine_05") + updateValueAPoseWorld(data, dataxyz, "spine_02", "spine_04") + updateValueAPoseWorld(data, dataxyz, "pelvis", "spine_02") + updateValueAPoseWorld(data, dataxyz, "ankle_l", "ball_l") + updateValueAPoseWorld(data, dataxyz, "ankle_r", "ball_r") + updateValueAPoseWorld(data, dataxyz, "ankle_l", "heel_l") + updateValueAPoseWorld(data, dataxyz, "ankle_r", "heel_r") + updateValueAPoseWorld(data, dataxyz, "knee_l", "ankle_l") + updateValueAPoseWorld(data, dataxyz, "knee_r", "ankle_r") + updateValueAPoseWorld(data, dataxyz, "hip_l", "knee_l") + updateValueAPoseWorld(data, dataxyz, "hip_r", "knee_r") + updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_l") + rvecHipL = HipLRot(poseslms, coef) + # data["hip_l"]["rotation"]["rotx"] = rvecHipL[0] + # data["hip_l"]["rotation"]["roty"] = rvecHipL[1] + # data["hip_l"]["rotation"]["rotz"] = rvecHipL[2] + updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_r") + rvecHipR = HipRRot(poseslms, coef) + # data["hip_r"]["rotation"]["rotx"] = rvecHipR[0] + # data["hip_r"]["rotation"]["roty"] = rvecHipR[1] + # data["hip_r"]["rotation"]["rotz"] = rvecHipR[2] + updateValueAPoseWorld(data, dataxyz, "root", "pelvis") + + data["root"]["translation"]["x"] = dataxyz["root"][0] + data["root"]["translation"]["y"] = dataxyz["root"][1] + data["root"]["translation"]["z"] = dataxyz["root"][2] + + data["spine_01"]["rotation"]["rotx"] = data["pelvis"]["rotation"]["rotx"] + data["spine_01"]["rotation"]["roty"] = data["pelvis"]["rotation"]["roty"] + data["spine_01"]["rotation"]["rotz"] = data["pelvis"]["rotation"]["rotz"] + + data["spine_03"]["rotation"]["rotx"] = data["spine_02"]["rotation"]["rotx"] + data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"] + data["spine_03"]["rotation"]["rotz"] = data["spine_02"]["rotation"]["rotz"] + + data["spine_03"]["rotation"]["rotx"] = data["spine_02"]["rotation"]["rotx"] + data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"] + data["spine_03"]["rotation"]["rotz"] = data["spine_02"]["rotation"]["rotz"] + + rvecSpine5 = Spine5Rot(poseslms, coef) + data["spine_05"]["rotation"]["rotx"] = rvecSpine5[0] + data["spine_05"]["rotation"]["roty"] = rvecSpine5[1] + data["spine_05"]["rotation"]["rotz"] = rvecSpine5[2] + + rvecPelvis = PelvisRot(poseslms, coef) + data["pelvis"]["rotation"]["rotx"] = rvecPelvis[0] + data["pelvis"]["rotation"]["roty"] = rvecPelvis[1] + data["pelvis"]["rotation"]["rotz"] = rvecPelvis[2] + + data["spine_04"]["rotation"]["rotx"] = 0.4*rvecSpine5[0] + 0.6*rvecPelvis[0] + data["spine_04"]["rotation"]["roty"] = 0.4*rvecSpine5[1] + 0.6*rvecPelvis[1] + data["spine_04"]["rotation"]["rotz"] = 0.4*rvecSpine5[2] + 0.6*rvecPelvis[2] + + data["spine_03"]["rotation"]["rotx"] = 0.25*rvecSpine5[0] + 0.75*rvecPelvis[0] + data["spine_03"]["rotation"]["roty"] = 0.25*rvecSpine5[1] + 0.75*rvecPelvis[1] + data["spine_03"]["rotation"]["rotz"] = 0.25*rvecSpine5[2] + 0.75*rvecPelvis[2] + + data["spine_02"]["rotation"]["rotx"] = 0.12*rvecSpine5[0] + 0.88*rvecPelvis[0] + data["spine_02"]["rotation"]["roty"] = 0.12*rvecSpine5[1] + 0.88*rvecPelvis[1] + data["spine_02"]["rotation"]["rotz"] = 0.12*rvecSpine5[2] + 0.88*rvecPelvis[2] + + data["spine_01"]["rotation"]["rotx"] = 0.05*rvecSpine5[0] + 0.95*rvecPelvis[0] + data["spine_01"]["rotation"]["roty"] = 0.05*rvecSpine5[1] + 0.95*rvecPelvis[1] + data["spine_01"]["rotation"]["rotz"] = 0.05*rvecSpine5[2] + 0.95*rvecPelvis[2] + +def bodyconvert(poseslms, data, coef, maxy): + dataxyz = {} + + rootx = poseslms[24].x * coef + rooty = -poseslms[24].z * coef + rootz = -poseslms[24].y * coef + rootv = poseslms[24].visibility + data["hip_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hip_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[23].x * coef + rooty = -poseslms[23].z * coef + rootz = -poseslms[23].y * coef + rootv = poseslms[23].visibility + data["hip_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hip_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = -maxy * coef + rootv = 1.0 + data["root"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["root"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["hip_l"][0] + dataxyz["hip_r"][0]) + rooty = 0.5 * (dataxyz["hip_l"][1] + dataxyz["hip_r"][1]) + rootz = 0.5 * (dataxyz["hip_l"][2] + dataxyz["hip_r"][2]) + rootv = 0.5 * (dataxyz["hip_l"][3] + dataxyz["hip_r"][3]) + data["pelvis"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pelvis"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[12].x * coef + rooty = -poseslms[12].z * coef + rootz = -poseslms[12].y * coef + rootv = poseslms[12].visibility + data["shoulder_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["shoulder_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[11].x * coef + rooty = -poseslms[11].z * coef + rootz = -poseslms[11].y * coef + rootv = poseslms[11].visibility + data["shoulder_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["shoulder_l"] = [rootx, rooty, rootz, rootv] + + rootx = 0.5 * (dataxyz["shoulder_l"][0] + dataxyz["shoulder_r"][0]) + rooty = 0.5 * (dataxyz["shoulder_l"][1] + dataxyz["shoulder_r"][1]) + rootz = -poseslms[0].y * coef * 0.3 + 0.35 * (dataxyz["shoulder_l"][2] + dataxyz["shoulder_r"][2]) + rootv = poseslms[0].visibility + data["head"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["head"] = [rootx, rooty, rootz, rootv] + + rootx = (0.044113 * dataxyz["head"][0] + 0.955887 * dataxyz["pelvis"][0]) + rooty = (0.044113 * dataxyz["head"][1] + 0.955887 * dataxyz["pelvis"][1]) + rootz = (0.044113 * dataxyz["head"][2] + 0.955887 * dataxyz["pelvis"][2]) + rootv = (0.044113 * dataxyz["head"][3] + 0.955887 * dataxyz["pelvis"][3]) + data["spine_01"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_01"] = [rootx, rooty, rootz, rootv] + + rootx = (0.135799 * dataxyz["head"][0] + 0.864201 * dataxyz["pelvis"][0]) + rooty = (0.135799 * dataxyz["head"][1] + 0.864201 * dataxyz["pelvis"][1]) + rootz = (0.135799 * dataxyz["head"][2] + 0.864201 * dataxyz["pelvis"][2]) + rootv = (0.135799 * dataxyz["head"][3] + 0.864201 * dataxyz["pelvis"][3]) + data["spine_02"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_02"] = [rootx, rooty, rootz, rootv] + + rootx = (0.282213 * dataxyz["head"][0] + 0.717787 * dataxyz["pelvis"][0]) + rooty = (0.282213 * dataxyz["head"][1] + 0.717787 * dataxyz["pelvis"][1]) + rootz = (0.282213 * dataxyz["head"][2] + 0.717787 * dataxyz["pelvis"][2]) + rootv = (0.282213 * dataxyz["head"][3] + 0.717787 * dataxyz["pelvis"][3]) + data["spine_03"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_03"] = [rootx, rooty, rootz, rootv] + + rootx = (0.451594 * dataxyz["head"][0] + 0.548406 * dataxyz["pelvis"][0]) + rooty = (0.451594 * dataxyz["head"][1] + 0.548406 * dataxyz["pelvis"][1]) + rootz = (0.451594 * dataxyz["head"][2] + 0.548406 * dataxyz["pelvis"][2]) + rootv = (0.451594 * dataxyz["head"][3] + 0.548406 * dataxyz["pelvis"][3]) + data["spine_04"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_04"] = [rootx, rooty, rootz, rootv] + + rootx = (0.771025 * dataxyz["head"][0] + 0.228975 * dataxyz["pelvis"][0]) + rooty = (0.771025 * dataxyz["head"][1] + 0.228975 * dataxyz["pelvis"][1]) + rootz = (0.771025 * dataxyz["head"][2] + 0.228975 * dataxyz["pelvis"][2]) + rootv = (0.771025 * dataxyz["head"][3] + 0.228975 * dataxyz["pelvis"][3]) + data["spine_05"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["spine_05"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[26].x * coef + rooty = -poseslms[26].z * coef + rootz = -poseslms[26].y * coef + rootv = poseslms[26].visibility + data["knee_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["knee_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[25].x * coef + rooty = -poseslms[25].z * coef + rootz = -poseslms[25].y * coef + rootv = poseslms[25].visibility + data["knee_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["knee_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[28].x * coef + rooty = -poseslms[28].z * coef + rootz = -poseslms[28].y * coef + rootv = poseslms[28].visibility + data["ankle_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ankle_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[27].x * coef + rooty = -poseslms[27].z * coef + rootz = -poseslms[27].y * coef + rootv = poseslms[27].visibility + data["ankle_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ankle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[32].x * coef + rooty = -poseslms[32].z * coef + rootz = -poseslms[32].y * coef + rootv = poseslms[32].visibility + data["ball_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ball_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[31].x * coef + rooty = -poseslms[31].z * coef + rootz = -poseslms[31].y * coef + rootv = poseslms[31].visibility + data["ball_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ball_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[30].x * coef + rooty = -poseslms[30].z * coef + rootz = -poseslms[30].y * coef + rootv = poseslms[30].visibility + data["heel_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[29].x * coef + rooty = -poseslms[29].z * coef + rootz = -poseslms[29].y * coef + rootv = poseslms[29].visibility + data["heel_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["heel_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_r"][0] + 0.365 * dataxyz["shoulder_l"][0]) + rooty = 0.5 * (0.635 * dataxyz["shoulder_r"][1] + 0.365 * dataxyz["shoulder_l"][1] + 0.31 * dataxyz["head"][1] + 0.69 * dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_r"][2] + 0.0365 * dataxyz["shoulder_l"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_r"][3] + 0.451594 * dataxyz["shoulder_l"][3]) + data["clavicle_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["clavicle_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.635 * dataxyz["shoulder_l"][0] + 0.365 * dataxyz["shoulder_r"][0]) + rooty = 0.5 * (0.635 * dataxyz["shoulder_l"][1] + 0.365 * dataxyz["shoulder_r"][1] + 0.31 * dataxyz["head"][1] + 0.69 * dataxyz["spine_05"][1]) + rootz = (0.0635 * dataxyz["shoulder_l"][2] + 0.0365 * dataxyz["shoulder_r"][2] + 0.9 * dataxyz["spine_05"][2]) + rootv = (0.635 * dataxyz["shoulder_l"][3] + 0.365 * dataxyz["shoulder_r"][3]) + data["clavicle_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["clavicle_l"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[14].x * coef + rooty = -poseslms[14].z * coef + rootz = -poseslms[14].y * coef + rootv = poseslms[14].visibility + data["elbow_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["elbow_r"] = [rootx, rooty, rootz, rootv] + + rootx = poseslms[13].x * coef + rooty = -poseslms[13].z * coef + rootz = -poseslms[13].y * coef + rootv = poseslms[13].visibility + data["elbow_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["elbow_l"] = [rootx, rooty, rootz, rootv] + +def bonetranslation(data, bone_name, tvec): + data[bone_name]["translation"]["x"] += tvec[0] + data[bone_name]["translation"]["y"] += tvec[1] + data[bone_name]["translation"]["z"] += tvec[2] + +def rhandconverttranslation(data): + tvec = [data["hand_r"]["translation"]["x"], data["hand_r"]["translation"]["y"], data["hand_r"]["translation"]["z"]] + data_apose = {} + bodyaposeworld(data_apose) + tvec_pose = [data_apose["hand_r"]["translation"]["x"], data_apose["hand_r"]["translation"]["y"], data_apose["hand_r"]["translation"]["z"]] + tvec[0] = tvec[0] - tvec_pose[0] + tvec[1] = -(tvec[1] - tvec_pose[1]) + tvec[2] = tvec[2] - tvec_pose[2] + + bonetranslation(data, "pinky_4_r", tvec) + bonetranslation(data, "pinky_3_r", tvec) + bonetranslation(data, "pinky_2_r", tvec) + bonetranslation(data, "middle_4_r", tvec) + bonetranslation(data, "middle_3_r", tvec) + bonetranslation(data, "middle_2_r", tvec) + bonetranslation(data, "index_4_r", tvec) + bonetranslation(data, "index_3_r", tvec) + bonetranslation(data, "index_2_r", tvec) + bonetranslation(data, "thumb_3_r", tvec) + bonetranslation(data, "thumb_2_r", tvec) + # bonetranslation(data, "thumb_1_r", tvec) + bonetranslation(data, "ring_4_r", tvec) + bonetranslation(data, "ring_3_r", tvec) + bonetranslation(data, "ring_2_r", tvec) + # bonetranslation(data, "hand_r", tvec) + +def lhandconverttranslation(data): + tvec = [data["hand_l"]["translation"]["x"], data["hand_l"]["translation"]["y"], data["hand_l"]["translation"]["z"]] + data_apose = {} + bodyaposeworld(data_apose) + tvec_pose = [data_apose["hand_l"]["translation"]["x"], data_apose["hand_l"]["translation"]["y"], data_apose["hand_l"]["translation"]["z"]] + tvec[0] = tvec[0] - tvec_pose[0] + tvec[1] = -(tvec[1] - tvec_pose[1]) + tvec[2] = tvec[2] - tvec_pose[2] + + bonetranslation(data, "pinky_4_l", tvec) + bonetranslation(data, "pinky_3_l", tvec) + bonetranslation(data, "pinky_2_l", tvec) + bonetranslation(data, "middle_4_l", tvec) + bonetranslation(data, "middle_3_l", tvec) + bonetranslation(data, "middle_2_l", tvec) + bonetranslation(data, "index_4_l", tvec) + bonetranslation(data, "index_3_l", tvec) + bonetranslation(data, "index_2_l", tvec) + bonetranslation(data, "thumb_3_l", tvec) + bonetranslation(data, "thumb_2_l", tvec) + # bonetranslation(data, "thumb_1_l", tvec) + bonetranslation(data, "ring_4_l", tvec) + bonetranslation(data, "ring_3_l", tvec) + bonetranslation(data, "ring_2_l", tvec) + # bonetranslation(data, "hand_l", tvec) + +def updateValueAPoseWorldForHands(data, dataxyz, data_apose, parent_name, current_name): + tvec0 = [dataxyz[parent_name][0], dataxyz[parent_name][1], dataxyz[parent_name][2]] + tvec1 = [dataxyz[current_name][0], dataxyz[current_name][1], dataxyz[current_name][2]] + tvec0_apose = [data_apose[parent_name]["translation"]["x"], data_apose[parent_name]["translation"]["y"], data_apose[parent_name]["translation"]["z"]] + tvec1_apose = [data[current_name]["translation"]["x"], data[current_name]["translation"]["y"], data[current_name]["translation"]["z"]] + rvec_apose = [data[current_name]["rotation"]["rotx"], data[current_name]["rotation"]["roty"], data[current_name]["rotation"]["rotz"]] + rvec = checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose) + data[current_name]["translation"]["x"] = dataxyz[current_name][0] + data[current_name]["translation"]["y"] = dataxyz[current_name][1] + data[current_name]["translation"]["z"] = dataxyz[current_name][2] + data[current_name]["rotation"]["rotx"] = rvec[0] + data[current_name]["rotation"]["roty"] = rvec[1] + data[current_name]["rotation"]["rotz"] = rvec[2] + data[current_name]["visible"] = dataxyz[current_name] + +def rhandconvertwithrot(rhandlms, data, coef): + dataxyz = {} + data_apose = {} + bodyaposeworld(data_apose) + + rootx = rhandlms[0].x * coef + rooty = -rhandlms[0].z * coef + rootz = -rhandlms[0].y * coef + rootv = 1.0 + dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[5].x * coef + rooty = -rhandlms[5].z * coef + rootz = -rhandlms[5].y * coef + rootv = 1.0 + dataxyz["index_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["index_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["index_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["index_2_r"][2]) + rootv = 1.0 + data["index_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[9].x * coef + rooty = -rhandlms[9].z * coef + rootz = -rhandlms[9].y * coef + rootv = 1.0 + dataxyz["middle_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["middle_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["middle_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["middle_2_r"][2]) + rootv = 1.0 + data["middle_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[13].x * coef + rooty = -rhandlms[13].z * coef + rootz = -rhandlms[13].y * coef + rootv = 1.0 + dataxyz["ring_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["ring_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["ring_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["ring_2_r"][2]) + rootv = 1.0 + data["ring_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[17].x * coef + rooty = -rhandlms[17].z * coef + rootz = -rhandlms[17].y * coef + rootv = 1.0 + dataxyz["pinky_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["pinky_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["pinky_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["pinky_2_r"][2]) + rootv = 1.0 + data["pinky_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[1].x * coef + rooty = -rhandlms[1].z * coef + rootz = -rhandlms[1].y * coef + rootv = 1.0 + data["thumb_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[2].x * coef + rooty = -rhandlms[2].z * coef + rootz = -rhandlms[2].y * coef + rootv = 1.0 + dataxyz["thumb_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[3].x * coef + rooty = -rhandlms[3].z * coef + rootz = -rhandlms[3].y * coef + rootv = 1.0 + dataxyz["thumb_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[6].x * coef + rooty = -rhandlms[6].z * coef + rootz = -rhandlms[6].y * coef + rootv = 1.0 + dataxyz["index_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[7].x * coef + rooty = -rhandlms[7].z * coef + rootz = -rhandlms[7].y * coef + rootv = 1.0 + dataxyz["index_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[10].x * coef + rooty = -rhandlms[10].z * coef + rootz = -rhandlms[10].y * coef + rootv = 1.0 + dataxyz["middle_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[11].x * coef + rooty = -rhandlms[11].z * coef + rootz = -rhandlms[11].y * coef + rootv = 1.0 + dataxyz["middle_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[14].x * coef + rooty = -rhandlms[14].z * coef + rootz = -rhandlms[14].y * coef + rootv = 1.0 + dataxyz["ring_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[15].x * coef + rooty = -rhandlms[15].z * coef + rootz = -rhandlms[15].y * coef + rootv = 1.0 + dataxyz["ring_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[18].x * coef + rooty = -rhandlms[18].z * coef + rootz = -rhandlms[18].y * coef + rootv = 1.0 + dataxyz["pinky_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[19].x * coef + rooty = -rhandlms[19].z * coef + rootz = -rhandlms[19].y * coef + rootv = 1.0 + dataxyz["pinky_4_r"] = [rootx, rooty, rootz, rootv] + + updateValueAPoseWorld(data, dataxyz, "pinky_3_r", "pinky_4_r") + updateValueAPoseWorld(data, dataxyz, "pinky_2_r", "pinky_3_r") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "pinky_2_r") + updateValueAPoseWorld(data, dataxyz, "middle_3_r", "middle_4_r") + updateValueAPoseWorld(data, dataxyz, "middle_2_r", "middle_3_r") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "middle_2_r") + updateValueAPoseWorld(data, dataxyz, "index_3_r", "index_4_r") + updateValueAPoseWorld(data, dataxyz, "index_2_r", "index_3_r") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "index_2_r") + updateValueAPoseWorld(data, dataxyz, "thumb_2_r", "thumb_3_r") + updateValueAPoseWorld(data, dataxyz, "thumb_1_r", "thumb_2_r") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "thumb_1_r") + updateValueAPoseWorld(data, dataxyz, "ring_3_r", "ring_4_r") + updateValueAPoseWorld(data, dataxyz, "ring_2_r", "ring_3_r") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_r", "ring_2_r") + + data["hand_r"]["translation"]["x"] = dataxyz["hand_r"][0] + data["hand_r"]["translation"]["y"] = dataxyz["hand_r"][1] + data["hand_r"]["translation"]["z"] = dataxyz["hand_r"][2] + + data["pinky_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] + data["pinky_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] + data["pinky_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] + + data["ring_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] + data["ring_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] + data["ring_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] + + data["middle_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] + data["middle_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] + data["middle_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] + + data["index_1_r"]["rotation"]["rotx"] = data["hand_r"]["rotation"]["rotx"] + data["index_1_r"]["rotation"]["roty"] = data["hand_r"]["rotation"]["roty"] + data["index_1_r"]["rotation"]["rotz"] = data["hand_r"]["rotation"]["rotz"] + +def lhandconvertwithrot(rhandlms, data, coef): + dataxyz = {} + data_apose = {} + bodyaposeworld(data_apose) + + rootx = rhandlms[0].x * coef + rooty = -rhandlms[0].z * coef + rootz = -rhandlms[0].y * coef + rootv = 1.0 + dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[5].x * coef + rooty = -rhandlms[5].z * coef + rootz = -rhandlms[5].y * coef + rootv = 1.0 + dataxyz["index_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["index_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["index_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["index_2_l"][2]) + rootv = 1.0 + data["index_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[9].x * coef + rooty = -rhandlms[9].z * coef + rootz = -rhandlms[9].y * coef + rootv = 1.0 + dataxyz["middle_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["middle_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["middle_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["middle_2_l"][2]) + rootv = 1.0 + data["middle_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[13].x * coef + rooty = -rhandlms[13].z * coef + rootz = -rhandlms[13].y * coef + rootv = 1.0 + dataxyz["ring_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["ring_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["ring_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["ring_2_l"][2]) + rootv = 1.0 + data["ring_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[17].x * coef + rooty = -rhandlms[17].z * coef + rootz = -rhandlms[17].y * coef + rootv = 1.0 + dataxyz["pinky_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["pinky_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["pinky_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["pinky_2_l"][2]) + rootv = 1.0 + data["pinky_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[1].x * coef + rooty = -rhandlms[1].z * coef + rootz = -rhandlms[1].y * coef + rootv = 1.0 + data["thumb_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[2].x * coef + rooty = -rhandlms[2].z * coef + rootz = -rhandlms[2].y * coef + rootv = 1.0 + dataxyz["thumb_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[3].x * coef + rooty = -rhandlms[3].z * coef + rootz = -rhandlms[3].y * coef + rootv = 1.0 + dataxyz["thumb_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[6].x * coef + rooty = -rhandlms[6].z * coef + rootz = -rhandlms[6].y * coef + rootv = 1.0 + dataxyz["index_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[7].x * coef + rooty = -rhandlms[7].z * coef + rootz = -rhandlms[7].y * coef + rootv = 1.0 + dataxyz["index_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[10].x * coef + rooty = -rhandlms[10].z * coef + rootz = -rhandlms[10].y * coef + rootv = 1.0 + dataxyz["middle_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[11].x * coef + rooty = -rhandlms[11].z * coef + rootz = -rhandlms[11].y * coef + rootv = 1.0 + dataxyz["middle_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[14].x * coef + rooty = -rhandlms[14].z * coef + rootz = -rhandlms[14].y * coef + rootv = 1.0 + dataxyz["ring_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[15].x * coef + rooty = -rhandlms[15].z * coef + rootz = -rhandlms[15].y * coef + rootv = 1.0 + dataxyz["ring_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[18].x * coef + rooty = -rhandlms[18].z * coef + rootz = -rhandlms[18].y * coef + rootv = 1.0 + dataxyz["pinky_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[19].x * coef + rooty = -rhandlms[19].z * coef + rootz = -rhandlms[19].y * coef + rootv = 1.0 + dataxyz["pinky_4_l"] = [rootx, rooty, rootz, rootv] + + updateValueAPoseWorld(data, dataxyz, "pinky_3_l", "pinky_4_l") + updateValueAPoseWorld(data, dataxyz, "pinky_2_l", "pinky_3_l") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "pinky_2_l") + updateValueAPoseWorld(data, dataxyz, "middle_3_l", "middle_4_l") + updateValueAPoseWorld(data, dataxyz, "middle_2_l", "middle_3_l") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "middle_2_l") + updateValueAPoseWorld(data, dataxyz, "index_3_l", "index_4_l") + updateValueAPoseWorld(data, dataxyz, "index_2_l", "index_3_l") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "index_2_l") + updateValueAPoseWorld(data, dataxyz, "thumb_2_l", "thumb_3_l") + updateValueAPoseWorld(data, dataxyz, "thumb_1_l", "thumb_2_l") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "thumb_1_l") + updateValueAPoseWorld(data, dataxyz, "ring_3_l", "ring_4_l") + updateValueAPoseWorld(data, dataxyz, "ring_2_l", "ring_3_l") + updateValueAPoseWorldForHands(data, dataxyz, data_apose, "hand_l", "ring_2_l") + + data["hand_l"]["translation"]["x"] = dataxyz["hand_l"][0] + data["hand_l"]["translation"]["y"] = dataxyz["hand_l"][1] + data["hand_l"]["translation"]["z"] = dataxyz["hand_l"][2] + +def rhandconvert(rhandlms, data, coef): + dataxyz = {} + + rootx = rhandlms[0].x * coef + rooty = -rhandlms[0].z * coef + rootz = -rhandlms[0].y * coef + rootv = 1.0 + data["hand_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hand_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[5].x * coef + rooty = -rhandlms[5].z * coef + rootz = -rhandlms[5].y * coef + rootv = 1.0 + data["index_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["index_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["index_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["index_2_r"][2]) + rootv = 1.0 + data["index_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[9].x * coef + rooty = -rhandlms[9].z * coef + rootz = -rhandlms[9].y * coef + rootv = 1.0 + data["middle_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["middle_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["middle_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["middle_2_r"][2]) + rootv = 1.0 + data["middle_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[13].x * coef + rooty = -rhandlms[13].z * coef + rootz = -rhandlms[13].y * coef + rootv = 1.0 + data["ring_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["ring_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["ring_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["ring_2_r"][2]) + rootv = 1.0 + data["ring_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[17].x * coef + rooty = -rhandlms[17].z * coef + rootz = -rhandlms[17].y * coef + rootv = 1.0 + data["pinky_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_r"][0] + 0.25 * dataxyz["pinky_2_r"][0]) + rooty = (0.75 * dataxyz["hand_r"][1] + 0.25 * dataxyz["pinky_2_r"][1]) + rootz = (0.75 * dataxyz["hand_r"][2] + 0.25 * dataxyz["pinky_2_r"][2]) + rootv = 1.0 + data["pinky_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[1].x * coef + rooty = -rhandlms[1].z * coef + rootz = -rhandlms[1].y * coef + rootv = 1.0 + data["thumb_1_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_1_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[2].x * coef + rooty = -rhandlms[2].z * coef + rootz = -rhandlms[2].y * coef + rootv = 1.0 + data["thumb_2_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_2_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[3].x * coef + rooty = -rhandlms[3].z * coef + rootz = -rhandlms[3].y * coef + rootv = 1.0 + data["thumb_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[6].x * coef + rooty = -rhandlms[6].z * coef + rootz = -rhandlms[6].y * coef + rootv = 1.0 + data["index_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[7].x * coef + rooty = -rhandlms[7].z * coef + rootz = -rhandlms[7].y * coef + rootv = 1.0 + data["index_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[10].x * coef + rooty = -rhandlms[10].z * coef + rootz = -rhandlms[10].y * coef + rootv = 1.0 + data["middle_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[11].x * coef + rooty = -rhandlms[11].z * coef + rootz = -rhandlms[11].y * coef + rootv = 1.0 + data["middle_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[14].x * coef + rooty = -rhandlms[14].z * coef + rootz = -rhandlms[14].y * coef + rootv = 1.0 + data["ring_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[15].x * coef + rooty = -rhandlms[15].z * coef + rootz = -rhandlms[15].y * coef + rootv = 1.0 + data["ring_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_4_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[18].x * coef + rooty = -rhandlms[18].z * coef + rootz = -rhandlms[18].y * coef + rootv = 1.0 + data["pinky_3_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_3_r"] = [rootx, rooty, rootz, rootv] + + rootx = rhandlms[19].x * coef + rooty = -rhandlms[19].z * coef + rootz = -rhandlms[19].y * coef + rootv = 1.0 + data["pinky_4_r"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_4_r"] = [rootx, rooty, rootz, rootv] + +def lhandconvert(lhandlms, data, coef): + dataxyz = {} + + rootx = lhandlms[0].x * coef + rooty = -lhandlms[0].z * coef + rootz = -lhandlms[0].y * coef + rootv = 1.0 + data["hand_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["hand_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[5].x * coef + rooty = -lhandlms[5].z * coef + rootz = -lhandlms[5].y * coef + rootv = 1.0 + data["index_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["index_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["index_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["index_2_l"][2]) + rootv = 1.0 + data["index_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[9].x * coef + rooty = -lhandlms[9].z * coef + rootz = -lhandlms[9].y * coef + rootv = 1.0 + data["middle_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["middle_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["middle_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["middle_2_l"][2]) + rootv = 1.0 + data["middle_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[13].x * coef + rooty = -lhandlms[13].z * coef + rootz = -lhandlms[13].y * coef + rootv = 1.0 + data["ring_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["ring_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["ring_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["ring_2_l"][2]) + rootv = 1.0 + data["ring_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[17].x * coef + rooty = -lhandlms[17].z * coef + rootz = -lhandlms[17].y * coef + rootv = 1.0 + data["pinky_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = (0.75 * dataxyz["hand_l"][0] + 0.25 * dataxyz["pinky_2_l"][0]) + rooty = (0.75 * dataxyz["hand_l"][1] + 0.25 * dataxyz["pinky_2_l"][1]) + rootz = (0.75 * dataxyz["hand_l"][2] + 0.25 * dataxyz["pinky_2_l"][2]) + rootv = 1.0 + data["pinky_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[1].x * coef + rooty = -lhandlms[1].z * coef + rootz = -lhandlms[1].y * coef + rootv = 1.0 + data["thumb_1_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_1_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[2].x * coef + rooty = -lhandlms[2].z * coef + rootz = -lhandlms[2].y * coef + rootv = 1.0 + data["thumb_2_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_2_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[3].x * coef + rooty = -lhandlms[3].z * coef + rootz = -lhandlms[3].y * coef + rootv = 1.0 + data["thumb_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["thumb_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[6].x * coef + rooty = -lhandlms[6].z * coef + rootz = -lhandlms[6].y * coef + rootv = 1.0 + data["index_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[7].x * coef + rooty = -lhandlms[7].z * coef + rootz = -lhandlms[7].y * coef + rootv = 1.0 + data["index_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["index_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[10].x * coef + rooty = -lhandlms[10].z * coef + rootz = -lhandlms[10].y * coef + rootv = 1.0 + data["middle_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[11].x * coef + rooty = -lhandlms[11].z * coef + rootz = -lhandlms[11].y * coef + rootv = 1.0 + data["middle_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["middle_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[14].x * coef + rooty = -lhandlms[14].z * coef + rootz = -lhandlms[14].y * coef + rootv = 1.0 + data["ring_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[15].x * coef + rooty = -lhandlms[15].z * coef + rootz = -lhandlms[15].y * coef + rootv = 1.0 + data["ring_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["ring_4_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[18].x * coef + rooty = -lhandlms[18].z * coef + rootz = -lhandlms[18].y * coef + rootv = 1.0 + data["pinky_3_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_3_l"] = [rootx, rooty, rootz, rootv] + + rootx = lhandlms[19].x * coef + rooty = -lhandlms[19].z * coef + rootz = -lhandlms[19].y * coef + rootv = 1.0 + data["pinky_4_l"] = makexyzrotvis(rootx, rooty, rootz, 0, 0, 0, rootv) + dataxyz["pinky_4_l"] = [rootx, rooty, rootz, rootv] + + data["pinky_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] + data["pinky_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] + data["pinky_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] + + data["ring_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] + data["ring_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] + data["ring_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] + + data["middle_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] + data["middle_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] + data["middle_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] + + data["index_1_l"]["rotation"]["rotx"] = data["hand_l"]["rotation"]["rotx"] + data["index_1_l"]["rotation"]["roty"] = data["hand_l"]["rotation"]["roty"] + data["index_1_l"]["rotation"]["rotz"] = data["hand_l"]["rotation"]["rotz"] \ No newline at end of file diff --git a/hpe_mp_class.py b/hpe_mp_class.py index 7804253..7f4873b 100644 --- a/hpe_mp_class.py +++ b/hpe_mp_class.py @@ -13,6 +13,10 @@ logging.basicConfig(filename="hpe_mp_class.log", level=logging.INFO, format=FORM logger = logging.getLogger("hpe_mp_class_logger") from ModelUE4 import * +from ModelUE4_apose import bodyaposelocal +from ModelUE4_apose import bodyaposeworld +from ModelUE4_old import bodyconvert +from ModelUE4_old import bodyconvertlocal class hpe_mp_class(): @@ -172,25 +176,27 @@ class hpe_mp_class(): if world: bodyaposeworld(data) if self.holistic_use: - # poseslms = {} - # maxy = 0 - # if self.results_hol.pose_landmarks: - # for id, lm in enumerate(self.results_hol.pose_landmarks.landmark): - # poseslms[id] = lm - # if lm.y > maxy: - # maxy = lm.y - # - # if old_world: - # bodyconvert(poseslms, data, self.coef, maxy) - # else: - # bodyconvertwithrot(poseslms, data, self.coef, maxy) - # + poseslms = {} + maxy = 0 + if self.results_hol.pose_landmarks: + for id, lm in enumerate(self.results_hol.pose_landmarks.landmark): + poseslms[id] = lm + if lm.y > maxy: + maxy = lm.y + + bodyeuler(poseslms, data, self.coef) + + # if old_world: + # bodyconvert(poseslms, data, self.coef, maxy) + # else: + # bodyconvertwithrot(poseslms, data, self.coef, maxy) + rhandlms = {} if self.results_hol.right_hand_landmarks: for id, lm in enumerate(self.results_hol.right_hand_landmarks.landmark): rhandlms[id] = lm - rhandrot(rhandlms, data, self.coef) + rhandeuler(rhandlms, data, self.coef) # if old_world: # rhandconvert(rhandlms, data, self.coef) @@ -205,7 +211,7 @@ class hpe_mp_class(): for id, lm in enumerate(self.results_hol.left_hand_landmarks.landmark): lhandlms[id] = lm - lhandrot(lhandlms,data,self.coef) + lhandeuler(lhandlms,data,self.coef) # if old_world: # lhandconvert(lhandlms, data, self.coef)