445 lines
8.4 KiB
Python
445 lines
8.4 KiB
Python
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
|