120 lines
2.6 KiB
Python
120 lines
2.6 KiB
Python
import numpy as np
|
|
from motiondiff_modules.mGPT.utils.joints import mmm_joints, smplh2mmm_indexes
|
|
|
|
# Map joints Name to SMPL joints idx
|
|
JOINT_MAP = {
|
|
'MidHip': 0,
|
|
'LHip': 1,
|
|
'LKnee': 4,
|
|
'LAnkle': 7,
|
|
'LFoot': 10,
|
|
'RHip': 2,
|
|
'RKnee': 5,
|
|
'RAnkle': 8,
|
|
'RFoot': 11,
|
|
'LShoulder': 16,
|
|
'LElbow': 18,
|
|
'LWrist': 20,
|
|
'LHand': 22,
|
|
'RShoulder': 17,
|
|
'RElbow': 19,
|
|
'RWrist': 21,
|
|
'RHand': 23,
|
|
'spine1': 3,
|
|
'spine2': 6,
|
|
'spine3': 9,
|
|
'Neck': 12,
|
|
'Head': 15,
|
|
'LCollar': 13,
|
|
'Rcollar': 14,
|
|
'Nose': 24,
|
|
'REye': 26,
|
|
'LEye': 26,
|
|
'REar': 27,
|
|
'LEar': 28,
|
|
'LHeel': 31,
|
|
'RHeel': 34,
|
|
'OP RShoulder': 17,
|
|
'OP LShoulder': 16,
|
|
'OP RHip': 2,
|
|
'OP LHip': 1,
|
|
'OP Neck': 12,
|
|
}
|
|
|
|
mmm2smpl_correspondence = {
|
|
"root": "MidHip",
|
|
"BP": "spine1",
|
|
"BT": "spine3",
|
|
"BLN": "Neck",
|
|
"BUN": "Head",
|
|
"LS": "LShoulder",
|
|
"LE": "LElbow",
|
|
"LW": "LWrist",
|
|
"RS": "RShoulder",
|
|
"RE": "RElbow",
|
|
"RW": "RWrist",
|
|
"LH": "LHip",
|
|
"LK": "LKnee",
|
|
"LA": "LAnkle",
|
|
"LMrot": "LHeel",
|
|
"LF": "LFoot",
|
|
"RH": "RHip",
|
|
"RK": "RKnee",
|
|
"RA": "RAnkle",
|
|
"RMrot": "RHeel",
|
|
"RF": "RFoot"
|
|
}
|
|
|
|
full_smpl_idx = range(24)
|
|
key_smpl_idx = [0, 1, 4, 7, 2, 5, 8, 17, 19, 21, 16, 18, 20]
|
|
|
|
AMASS_JOINT_MAP = {
|
|
'MidHip': 0,
|
|
'LHip': 1,
|
|
'LKnee': 4,
|
|
'LAnkle': 7,
|
|
'LFoot': 10,
|
|
'RHip': 2,
|
|
'RKnee': 5,
|
|
'RAnkle': 8,
|
|
'RFoot': 11,
|
|
'LShoulder': 16,
|
|
'LElbow': 18,
|
|
'LWrist': 20,
|
|
'RShoulder': 17,
|
|
'RElbow': 19,
|
|
'RWrist': 21,
|
|
'spine1': 3,
|
|
'spine2': 6,
|
|
'spine3': 9,
|
|
'Neck': 12,
|
|
'Head': 15,
|
|
'LCollar': 13,
|
|
'Rcollar': 14,
|
|
}
|
|
amass_idx = range(22)
|
|
amass_smpl_idx = range(22)
|
|
|
|
# cal mmm in smpl index
|
|
smpl2mmm_correspondence = {
|
|
val: key
|
|
for key, val in mmm2smpl_correspondence.items()
|
|
}
|
|
smpl2mmm_indexes = [JOINT_MAP[mmm2smpl_correspondence[x]] for x in mmm_joints]
|
|
|
|
# cal mmm joints map
|
|
MMM_JOINT_MAP = {
|
|
val: JOINT_MAP[val]
|
|
for key, val in mmm2smpl_correspondence.items()
|
|
}
|
|
|
|
# mmm_idx = range(21)
|
|
# mmm_smpl_dix = smpl2mmm_indexes
|
|
# mmm_smpl_dix = smplh2mmm_indexes
|
|
# todo - configable
|
|
SMPL_MODEL_DIR = "/apdcephfs/share_1227775/shingxchen/AIMotion/TMOSTData/deps/smpl_models/"
|
|
GMM_MODEL_DIR = "/apdcephfs/share_1227775/shingxchen/AIMotion/TMOSTData/deps/smpl_models/"
|
|
SMPL_MEAN_FILE = "/apdcephfs/share_1227775/shingxchen/AIMotion/TMOSTData/deps/smpl_models/neutral_smpl_mean_params.h5"
|
|
# for collsion
|
|
Part_Seg_DIR = "/apdcephfs/share_1227775/shingxchen/AIMotion/TMOSTData/deps/smpl_models/smplx_parts_segm.pkl"
|