1763 lines
74 KiB
Python
1763 lines
74 KiB
Python
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"] |