mmm_joints = [ "root", "BP", "BT", "BLN", "BUN", "LS", "LE", "LW", "RS", "RE", "RW", "LH", "LK", "LA", "LMrot", "LF", "RH", "RK", "RA", "RMrot", "RF", ] humanml3d_joints = [ "root", "RH", "LH", "BP", "RK", "LK", "BT", "RMrot", "LMrot", "BLN", "RF", "LF", "BMN", "RSI", "LSI", "BUN", "RS", "LS", "RE", "LE", "RW", "LW", ] smplx_joints = [ "pelvis", "left_hip", "right_hip", "spine1", "left_knee", "right_knee", "spine2", "left_ankle", "right_ankle", "spine3", "left_foot", "right_foot", "neck", "left_collar", "right_collar", "head", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", "jaw", "left_eye_smplhf", "right_eye_smplhf", "left_index1", "left_index2", "left_index3", "left_middle1", "left_middle2", "left_middle3", "left_pinky1", "left_pinky2", "left_pinky3", "left_ring1", "left_ring2", "left_ring3", "left_thumb1", "left_thumb2", "left_thumb3", "right_index1", "right_index2", "right_index3", "right_middle1", "right_middle2", "right_middle3", "right_pinky1", "right_pinky2", "right_pinky3", "right_ring1", "right_ring2", "right_ring3", "right_thumb1", "right_thumb2", "right_thumb3", "nose", "right_eye", "left_eye", "right_ear", "left_ear", "left_big_toe", "left_small_toe", "left_heel", "right_big_toe", "right_small_toe", "right_heel", "left_thumb", "left_index", "left_middle", "left_ring", "left_pinky", "right_thumb", "right_index", "right_middle", "right_ring", "right_pinky", "right_eye_brow1", "right_eye_brow2", "right_eye_brow3", "right_eye_brow4", "right_eye_brow5", "left_eye_brow5", "left_eye_brow4", "left_eye_brow3", "left_eye_brow2", "left_eye_brow1", "nose1", "nose2", "nose3", "nose4", "right_nose_2", "right_nose_1", "nose_middle", "left_nose_1", "left_nose_2", "right_eye1", "right_eye2", "right_eye3", "right_eye4", "right_eye5", "right_eye6", "left_eye4", "left_eye3", "left_eye2", "left_eye1", "left_eye6", "left_eye5", "right_mouth_1", "right_mouth_2", "right_mouth_3", "mouth_top", "left_mouth_3", "left_mouth_2", "left_mouth_1", "left_mouth_5", # 59 in OpenPose output "left_mouth_4", # 58 in OpenPose output "mouth_bottom", "right_mouth_4", "right_mouth_5", "right_lip_1", "right_lip_2", "lip_top", "left_lip_2", "left_lip_1", "left_lip_3", "lip_bottom", "right_lip_3", # Face contour "right_contour_1", "right_contour_2", "right_contour_3", "right_contour_4", "right_contour_5", "right_contour_6", "right_contour_7", "right_contour_8", "contour_middle", "left_contour_8", "left_contour_7", "left_contour_6", "left_contour_5", "left_contour_4", "left_contour_3", "left_contour_2", "left_contour_1", ] smplxnh_joints = [ "pelvis", "left_hip", "right_hip", "spine1", "left_knee", "right_knee", "spine2", "left_ankle", "right_ankle", "spine3", "left_foot", "right_foot", "neck", "left_collar", "right_collar", "head", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", ] smplh_joints = [ "pelvis", "left_hip", "right_hip", "spine1", "left_knee", "right_knee", "spine2", "left_ankle", "right_ankle", "spine3", "left_foot", "right_foot", "neck", "left_collar", "right_collar", "head", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", "left_index1", "left_index2", "left_index3", "left_middle1", "left_middle2", "left_middle3", "left_pinky1", "left_pinky2", "left_pinky3", "left_ring1", "left_ring2", "left_ring3", "left_thumb1", "left_thumb2", "left_thumb3", "right_index1", "right_index2", "right_index3", "right_middle1", "right_middle2", "right_middle3", "right_pinky1", "right_pinky2", "right_pinky3", "right_ring1", "right_ring2", "right_ring3", "right_thumb1", "right_thumb2", "right_thumb3", "nose", "right_eye", "left_eye", "right_ear", "left_ear", "left_big_toe", "left_small_toe", "left_heel", "right_big_toe", "right_small_toe", "right_heel", "left_thumb", "left_index", "left_middle", "left_ring", "left_pinky", "right_thumb", "right_index", "right_middle", "right_ring", "right_pinky", ] smplnh_joints = [ "pelvis", "left_hip", "right_hip", "spine1", "left_knee", "right_knee", "spine2", "left_ankle", "right_ankle", "spine3", "left_foot", "right_foot", "neck", "left_collar", "right_collar", "head", "left_shoulder", "right_shoulder", "left_elbow", "right_elbow", "left_wrist", "right_wrist", ] mmm2smplh_correspondence = { "root": "pelvis", "BP": "spine1", "BT": "spine3", "BLN": "neck", "BUN": "head", "LS": "left_shoulder", "LE": "left_elbow", "LW": "left_wrist", "RS": "right_shoulder", "RE": "right_elbow", "RW": "right_wrist", "LH": "left_hip", "LK": "left_knee", "LA": "left_ankle", "LMrot": "left_heel", "LF": "left_foot", "RH": "right_hip", "RK": "right_knee", "RA": "right_ankle", "RMrot": "right_heel", "RF": "right_foot", } smplh2mmm_correspondence = { val: key for key, val in mmm2smplh_correspondence.items() } smplh2mmm_indexes = [ smplh_joints.index(mmm2smplh_correspondence[x]) for x in mmm_joints ] smplnh2smplh_correspondence = {key: key for key in smplnh_joints} smplh2smplnh_correspondence = { val: key for key, val in smplnh2smplh_correspondence.items() } smplh2smplnh_indexes = [ smplh_joints.index(smplnh2smplh_correspondence[x]) for x in smplnh_joints ] mmm_kinematic_tree = [ [0, 1, 2, 3, 4], # body [3, 5, 6, 7], # right arm [3, 8, 9, 10], # left arm [0, 11, 12, 13, 14, 15], # right leg [0, 16, 17, 18, 19, 20], ] # left leg humanml3d_kinematic_tree = [ [0, 3, 6, 9, 12, 15], # body [9, 14, 17, 19, 21], # right arm [9, 13, 16, 18, 20], # left arm [0, 2, 5, 8, 11], # right leg [0, 1, 4, 7, 10], ] # left leg smplh_to_mmm_scaling_factor = 480 / 0.75 mmm_to_smplh_scaling_factor = 0.75 / 480 mmm_joints_info = { "root": mmm_joints.index("root"), "feet": [ mmm_joints.index("LMrot"), mmm_joints.index("RMrot"), mmm_joints.index("LF"), mmm_joints.index("RF"), ], "shoulders": [mmm_joints.index("LS"), mmm_joints.index("RS")], "hips": [mmm_joints.index("LH"), mmm_joints.index("RH")], } smplnh_joints_info = { "root": smplnh_joints.index("pelvis"), "feet": [ smplnh_joints.index("left_ankle"), smplnh_joints.index("right_ankle"), smplnh_joints.index("left_foot"), smplnh_joints.index("right_foot"), ], "shoulders": [ smplnh_joints.index("left_shoulder"), smplnh_joints.index("right_shoulder"), ], "hips": [smplnh_joints.index("left_hip"), smplnh_joints.index("right_hip")], } infos = {"mmm": mmm_joints_info, "smplnh": smplnh_joints_info} smplh_indexes = {"mmm": smplh2mmm_indexes, "smplnh": smplh2smplnh_indexes} root_joints = { "mmm": mmm_joints_info["root"], "mmmns": mmm_joints_info["root"], "smplmmm": mmm_joints_info["root"], "smplnh": smplnh_joints_info["root"], "smplh": smplh_joints.index("pelvis"), } def get_root_idx(joinstype): return root_joints[joinstype] # def mmm2smpl(joints_mmm): # mmm2smplnh_indexes = [] # for x in smplnh_joints: # if x in smplh2mmm_correspondence: # mmm2smplnh_indexes.append(mmm_joints.index(smplh2mmm_correspondence[x])) # spine2 = 0.5*(joints[mmm_joints.index("spine1")] + joints[mmm_joints.index("spine3")]) # joints = joints_mmm[indexes] # return joints