Solved errors for world with rots
This commit is contained in:
115
ModelUE4.py
115
ModelUE4.py
@@ -43,9 +43,11 @@ def getAngle(avec0, avec1, bvec0, bvec1):
|
|||||||
chis = float(avec0*bvec0 + avec1*bvec1)
|
chis = float(avec0*bvec0 + avec1*bvec1)
|
||||||
znam1 = float(np.sqrt(pow(avec0, 2) + pow(avec1, 2)))
|
znam1 = float(np.sqrt(pow(avec0, 2) + pow(avec1, 2)))
|
||||||
znam2 = float(np.sqrt(pow(bvec0, 2) + pow(bvec1, 2)))
|
znam2 = float(np.sqrt(pow(bvec0, 2) + pow(bvec1, 2)))
|
||||||
|
if (znam1*znam2) == 0:
|
||||||
|
return None
|
||||||
return np.arccos(chis / (znam1 * znam2))
|
return np.arccos(chis / (znam1 * znam2))
|
||||||
|
|
||||||
def checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose, vis):
|
def checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose):
|
||||||
# tvec0 - parent bone by root
|
# tvec0 - parent bone by root
|
||||||
# tvec1 - current bone by root
|
# tvec1 - current bone by root
|
||||||
rvec = [0, 0, 0]
|
rvec = [0, 0, 0]
|
||||||
@@ -53,29 +55,38 @@ def checkRot(tvec0, tvec1, tvec0_apose, tvec1_apose, rvec_apose, vis):
|
|||||||
# rotX
|
# rotX
|
||||||
var_angle_apose = getAngle(tvec0_apose[1], tvec0_apose[2], tvec1_apose[1], tvec1_apose[2])
|
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])
|
var_angle = getAngle(tvec0[1], tvec0[2], tvec1[1], tvec1[2])
|
||||||
rvec[0] = var_angle - var_angle_apose + rvec_apose[0]
|
if var_angle == None or var_angle_apose == None:
|
||||||
if rvec[0] > 180:
|
rvec[0] = rvec_apose[0]
|
||||||
rvec[0] -= 180
|
else:
|
||||||
if rvec[0] < -180:
|
rvec[0] = var_angle - var_angle_apose + rvec_apose[0]
|
||||||
rvec[0] += 180
|
if rvec[0] > 180:
|
||||||
|
rvec[0] -= 180
|
||||||
|
if rvec[0] < -180:
|
||||||
|
rvec[0] += 180
|
||||||
|
|
||||||
# rotY
|
# rotY
|
||||||
var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[2], tvec1_apose[0], tvec1_apose[2])
|
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])
|
var_angle = getAngle(tvec0[0], tvec0[2], tvec1[0], tvec1[2])
|
||||||
rvec[1] = var_angle - var_angle_apose + rvec_apose[1]
|
if var_angle == None or var_angle_apose == None:
|
||||||
if rvec[1] > 180:
|
rvec[1] = rvec_apose[1]
|
||||||
rvec[1] -= 180
|
else:
|
||||||
if rvec[1] < -180:
|
rvec[1] = var_angle - var_angle_apose + rvec_apose[1]
|
||||||
rvec[1] += 180
|
if rvec[1] > 180:
|
||||||
|
rvec[1] -= 180
|
||||||
|
if rvec[1] < -180:
|
||||||
|
rvec[1] += 180
|
||||||
|
|
||||||
# rotZ
|
# rotZ
|
||||||
var_angle_apose = getAngle(tvec0_apose[0], tvec0_apose[1], tvec1_apose[0], tvec1_apose[1])
|
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])
|
var_angle = getAngle(tvec0[0], tvec0[1], tvec1[0], tvec1[1])
|
||||||
rvec[2] = var_angle - var_angle_apose + rvec_apose[2]
|
if var_angle == None or var_angle_apose == None:
|
||||||
if rvec[2] > 180:
|
rvec[2] = rvec_apose[2]
|
||||||
rvec[2] -= 180
|
else:
|
||||||
if rvec[2] < -180:
|
rvec[2] = var_angle - var_angle_apose + rvec_apose[2]
|
||||||
rvec[2] += 180
|
if rvec[2] > 180:
|
||||||
|
rvec[2] -= 180
|
||||||
|
if rvec[2] < -180:
|
||||||
|
rvec[2] += 180
|
||||||
|
|
||||||
return rvec
|
return rvec
|
||||||
|
|
||||||
@@ -89,42 +100,42 @@ def bodyaposeworld(data):
|
|||||||
data["shoulder_l"] = makexyzrotvis(17.700, -9.712, 149.530, -49.541229, -6.413618, 3.295939, 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["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["hand_l"] = makexyzrotvis(56.646, -0.335, 111.680, -35.172615, 32.751072, -105.931961, 1.0)
|
||||||
data["index_02_l"] = makexyzrotvis(63.042, 6.766, 103.815, -60.632530, 39.185219, -95.108459, 1.0)
|
data["index_2_l"] = makexyzrotvis(63.042, 6.766, 103.815, -60.632530, 39.185219, -95.108459, 1.0)
|
||||||
data["index_03_l"] = makexyzrotvis(64.672, 8.095, 100.079, -72.604263, 41.145889, -95.530258, 1.0)
|
data["index_3_l"] = makexyzrotvis(64.672, 8.095, 100.079, -72.604263, 41.145889, -95.530258, 1.0)
|
||||||
data["index_04_l"] = makexyzrotvis(65.436, 8.762, 96.840, -63.056412, 41.326263, -94.477684, 1.0)
|
data["index_4_l"] = makexyzrotvis(65.436, 8.762, 96.840, -63.056412, 41.326263, -94.477684, 1.0)
|
||||||
data["middle_02_l"] = makexyzrotvis(64.490, 4.479, 103.481, -58.987339, 31.396336, -101.577202, 1.0)
|
data["middle_2_l"] = makexyzrotvis(64.490, 4.479, 103.481, -58.987339, 31.396336, -101.577202, 1.0)
|
||||||
data["middle_03_l"] = makexyzrotvis(66.531, 5.725, 99.504, -70.486740, 42.113358, -113.470406, 1.0)
|
data["middle_3_l"] = makexyzrotvis(66.531, 5.725, 99.504, -70.486740, 42.113358, -113.470406, 1.0)
|
||||||
data["middle_04_l"] = makexyzrotvis(67.435, 6.542, 96.065, -56.627937, 23.489927, -96.457565, 1.0)
|
data["middle_4_l"] = makexyzrotvis(67.435, 6.542, 96.065, -56.627937, 23.489927, -96.457565, 1.0)
|
||||||
data["pinky_02_l"] = makexyzrotvis(64.025, -0.159, 103.018, -57.221210, 8.494291, -103.297714, 1.0)
|
data["pinky_2_l"] = makexyzrotvis(64.025, -0.159, 103.018, -57.221210, 8.494291, -103.297714, 1.0)
|
||||||
data["pinky_03_l"] = makexyzrotvis(65.937, 0.127, 100.015, -68.397072, 11.974680, -105.215523, 1.0)
|
data["pinky_3_l"] = makexyzrotvis(65.937, 0.127, 100.015, -68.397072, 11.974680, -105.215523, 1.0)
|
||||||
data["pinky_04_l"] = makexyzrotvis(67.012, 0.355, 97.239, -68.031853, 22.739058, -114.804611, 1.0)
|
data["pinky_4_l"] = makexyzrotvis(67.012, 0.355, 97.239, -68.031853, 22.739058, -114.804611, 1.0)
|
||||||
data["ring_02_l"] = makexyzrotvis(64.576, 2.083, 103.039, -60.143337, 23.882196, -110.450768, 1.0)
|
data["ring_2_l"] = makexyzrotvis(64.576, 2.083, 103.039, -60.143337, 23.882196, -110.450768, 1.0)
|
||||||
data["ring_03_l"] = makexyzrotvis(66.592, 2.975, 99.197, -72.950729, 34.323620, -119.597374, 1.0)
|
data["ring_3_l"] = makexyzrotvis(66.592, 2.975, 99.197, -72.950729, 34.323620, -119.597374, 1.0)
|
||||||
data["ring_04_l"] = makexyzrotvis(67.434, 3.550, 95.873, -60.028549, 26.871693, -112.741859, 1.0)
|
data["ring_4_l"] = makexyzrotvis(67.434, 3.550, 95.873, -60.028549, 26.871693, -112.741859, 1.0)
|
||||||
data["thumb_02_l"] = makexyzrotvis(57.478, 3.876, 107.639, -34.138702, 87.683189, -52.981850, 1.0)
|
data["thumb_2_l"] = makexyzrotvis(57.478, 3.876, 107.639, -34.138702, 87.683189, -52.981850, 1.0)
|
||||||
data["thumb_03_l"] = makexyzrotvis(57.607, 7.077, 105.468, -52.094620, 85.939804, -51.473255, 1.0)
|
data["thumb_3_l"] = makexyzrotvis(57.607, 7.077, 105.468, -52.094620, 85.939804, -51.473255, 1.0)
|
||||||
data["thumb_04_l"] = makexyzrotvis(57.784, 9.566, 102.262, -42.125023, 96.831261, -57.027554, 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["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["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["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["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["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["hand_r"] = makexyzrotvis(-56.646, -0.335, 111.680, 35.172619, -32.751076, 74.068016, 1.0)
|
||||||
data["index_02_r"] = makexyzrotvis(-63.042, 6.766, 103.815, 60.632515, -39.185219, 84.891525, 1.0)
|
data["index_2_r"] = makexyzrotvis(-63.042, 6.766, 103.815, 60.632515, -39.185219, 84.891525, 1.0)
|
||||||
data["index_03_r"] = makexyzrotvis(-64.672, 8.095, 100.078, 72.604263, -41.145885, 84.469742, 1.0)
|
data["index_3_r"] = makexyzrotvis(-64.672, 8.095, 100.078, 72.604263, -41.145885, 84.469742, 1.0)
|
||||||
data["index_04_r"] = makexyzrotvis(-65.436, 8.762, 96.840, 63.056419, -41.326252, 85.522316, 1.0)
|
data["index_4_r"] = makexyzrotvis(-65.436, 8.762, 96.840, 63.056419, -41.326252, 85.522316, 1.0)
|
||||||
data["middle_02_r"] = makexyzrotvis(-64.490, 4.479, 103.482, 58.987339, -31.396345, 78.422768, 1.0)
|
data["middle_2_r"] = makexyzrotvis(-64.490, 4.479, 103.482, 58.987339, -31.396345, 78.422768, 1.0)
|
||||||
data["middle_03_r"] = makexyzrotvis(-66.531, 5.725, 99.504, 70.486748, -42.113411, 66.529549, 1.0)
|
data["middle_3_r"] = makexyzrotvis(-66.531, 5.725, 99.504, 70.486748, -42.113411, 66.529549, 1.0)
|
||||||
data["middle_04_r"] = makexyzrotvis(-67.435, 6.542, 96.065, 56.627953, -23.489948, 83.542404, 1.0)
|
data["middle_4_r"] = makexyzrotvis(-67.435, 6.542, 96.065, 56.627953, -23.489948, 83.542404, 1.0)
|
||||||
data["pinky_02_r"] = makexyzrotvis(-64.025, -0.159, 103.017, 57.221222, -8.494291, 76.702271, 1.0)
|
data["pinky_2_r"] = makexyzrotvis(-64.025, -0.159, 103.017, 57.221222, -8.494291, 76.702271, 1.0)
|
||||||
data["pinky_03_r"] = makexyzrotvis(-65.937, 0.127, 100.015, 68.397110, -11.974666, 74.784508, 1.0)
|
data["pinky_3_r"] = makexyzrotvis(-65.937, 0.127, 100.015, 68.397110, -11.974666, 74.784508, 1.0)
|
||||||
data["pinky_04_r"] = makexyzrotvis(-67.013, 0.355, 97.239, 68.031822, -22.739044, 65.195419, 1.0)
|
data["pinky_4_r"] = makexyzrotvis(-67.013, 0.355, 97.239, 68.031822, -22.739044, 65.195419, 1.0)
|
||||||
data["ring_02_r"] = makexyzrotvis(-64.576, 2.083, 103.039, 60.143322, -23.882204, 69.549194, 1.0)
|
data["ring_2_r"] = makexyzrotvis(-64.576, 2.083, 103.039, 60.143322, -23.882204, 69.549194, 1.0)
|
||||||
data["ring_03_r"] = makexyzrotvis(-66.592, 2.975, 99.197, 72.950775, -34.323681, 60.402596, 1.0)
|
data["ring_3_r"] = makexyzrotvis(-66.592, 2.975, 99.197, 72.950775, -34.323681, 60.402596, 1.0)
|
||||||
data["ring_04_r"] = makexyzrotvis(-67.434, 3.550, 95.873, 60.028561, -26.871723, 67.258072, 1.0)
|
data["ring_4_r"] = makexyzrotvis(-67.434, 3.550, 95.873, 60.028561, -26.871723, 67.258072, 1.0)
|
||||||
data["thumb_02_r"] = makexyzrotvis(-57.478, 3.877, 107.639, 34.138699, -87.683189, 127.018127, 1.0)
|
data["thumb_2_r"] = makexyzrotvis(-57.478, 3.877, 107.639, 34.138699, -87.683189, 127.018127, 1.0)
|
||||||
data["thumb_03_r"] = makexyzrotvis(-57.607, 7.077, 105.467, 52.094624, -85.939819, 128.526718, 1.0)
|
data["thumb_3_r"] = makexyzrotvis(-57.607, 7.077, 105.467, 52.094624, -85.939819, 128.526718, 1.0)
|
||||||
data["thumb_04_r"] = makexyzrotvis(-57.784, 9.566, 102.262, 42.125004, -96.831261, 122.972427, 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["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["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"] = makexyzrotvis(0., -5.876, 156.421, 75.972702, 89.999969, 89.999969, 1.0)
|
||||||
@@ -672,6 +683,10 @@ def bodyconvertwithrot(poseslms, data, coef, maxy):
|
|||||||
updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_r")
|
updateValueAPoseWorld(data, dataxyz, "pelvis", "hip_r")
|
||||||
updateValueAPoseWorld(data, dataxyz, "root", "pelvis")
|
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"]["rotx"] = data["pelvis"]["rotation"]["rotx"]
|
||||||
data["spine_01"]["rotation"]["roty"] = data["pelvis"]["rotation"]["roty"]
|
data["spine_01"]["rotation"]["roty"] = data["pelvis"]["rotation"]["roty"]
|
||||||
data["spine_01"]["rotation"]["rotz"] = data["pelvis"]["rotation"]["rotz"]
|
data["spine_01"]["rotation"]["rotz"] = data["pelvis"]["rotation"]["rotz"]
|
||||||
@@ -680,6 +695,10 @@ def bodyconvertwithrot(poseslms, data, coef, maxy):
|
|||||||
data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"]
|
data["spine_03"]["rotation"]["roty"] = data["spine_02"]["rotation"]["roty"]
|
||||||
data["spine_03"]["rotation"]["rotz"] = data["spine_02"]["rotation"]["rotz"]
|
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"]
|
||||||
|
|
||||||
def bodyconvert(poseslms, data, coef, maxy):
|
def bodyconvert(poseslms, data, coef, maxy):
|
||||||
dataxyz = {}
|
dataxyz = {}
|
||||||
|
|
||||||
@@ -870,7 +889,7 @@ def rhandconverttranslation(data):
|
|||||||
bonetranslation(data, "index_2_r", tvec)
|
bonetranslation(data, "index_2_r", tvec)
|
||||||
bonetranslation(data, "thumb_3_r", tvec)
|
bonetranslation(data, "thumb_3_r", tvec)
|
||||||
bonetranslation(data, "thumb_2_r", tvec)
|
bonetranslation(data, "thumb_2_r", tvec)
|
||||||
bonetranslation(data, "thumb_1_r", tvec)
|
# bonetranslation(data, "thumb_1_r", tvec)
|
||||||
bonetranslation(data, "ring_4_r", tvec)
|
bonetranslation(data, "ring_4_r", tvec)
|
||||||
bonetranslation(data, "ring_3_r", tvec)
|
bonetranslation(data, "ring_3_r", tvec)
|
||||||
bonetranslation(data, "ring_2_r", tvec)
|
bonetranslation(data, "ring_2_r", tvec)
|
||||||
@@ -890,7 +909,7 @@ def lhandconverttranslation(data):
|
|||||||
bonetranslation(data, "index_2_l", tvec)
|
bonetranslation(data, "index_2_l", tvec)
|
||||||
bonetranslation(data, "thumb_3_l", tvec)
|
bonetranslation(data, "thumb_3_l", tvec)
|
||||||
bonetranslation(data, "thumb_2_l", tvec)
|
bonetranslation(data, "thumb_2_l", tvec)
|
||||||
bonetranslation(data, "thumb_1_l", tvec)
|
# bonetranslation(data, "thumb_1_l", tvec)
|
||||||
bonetranslation(data, "ring_4_l", tvec)
|
bonetranslation(data, "ring_4_l", tvec)
|
||||||
bonetranslation(data, "ring_3_l", tvec)
|
bonetranslation(data, "ring_3_l", tvec)
|
||||||
bonetranslation(data, "ring_2_l", tvec)
|
bonetranslation(data, "ring_2_l", tvec)
|
||||||
|
|||||||
Reference in New Issue
Block a user