연구

MHR (Momentum Human Rig) 파라미터 및 Joint Hierarchy

Junhyung-Choi 2025. 12. 18. 14:23

https://github.com/Junhyung-Choi/MHR_RestPose_Extractor

 

GitHub - Junhyung-Choi/MHR_RestPose_Extractor: Momentum Human Rig Rest Pose's Feature (Joint Hierarchy, Rest Vertices) Extractor

Momentum Human Rig Rest Pose's Feature (Joint Hierarchy, Rest Vertices) Extractor - Junhyung-Choi/MHR_RestPose_Extractor

github.com

위 리포지토리에 세부 코드가 있습니다

 

더보기

Joint Hierarchy Text Tree:

** body_world (Root) **
└─ root
    ├─ l_upleg
    │   ├─ l_lowleg
    │   │   ├─ l_foot
    │   │   │   └─ l_talocrural
    │   │   │       └─ l_subtalar
    │   │   │           └─ l_transversetarsal
    │   │   │               └─ l_ball
    │   │   ├─ l_lowleg_twist1_proc
    │   │   ├─ l_lowleg_twist2_proc
    │   │   ├─ l_lowleg_twist3_proc
    │   │   └─ l_lowleg_twist4_proc
    │   ├─ l_upleg_twist0_proc
    │   ├─ l_upleg_twist1_proc
    │   ├─ l_upleg_twist2_proc
    │   ├─ l_upleg_twist3_proc
    │   └─ l_upleg_twist4_proc
    ├─ r_upleg
    │   ├─ r_lowleg
    │   │   ├─ r_foot
    │   │   │   └─ r_talocrural
    │   │   │       └─ r_subtalar
    │   │   │           └─ r_transversetarsal
    │   │   │               └─ r_ball
    │   │   ├─ r_lowleg_twist1_proc
    │   │   ├─ r_lowleg_twist2_proc
    │   │   ├─ r_lowleg_twist3_proc
    │   │   └─ r_lowleg_twist4_proc
    │   ├─ r_upleg_twist0_proc
    │   ├─ r_upleg_twist1_proc
    │   ├─ r_upleg_twist2_proc
    │   ├─ r_upleg_twist3_proc
    │   └─ r_upleg_twist4_proc
    └─ c_spine0
        └─ c_spine1
            └─ c_spine2
                └─ c_spine3
                    ├─ r_clavicle
                    │   └─ r_uparm
                    │       ├─ r_lowarm
                    │       │   ├─ r_wrist_twist
                    │       │   │   └─ r_wrist
                    │       │   │       ├─ r_pinky0
                    │       │   │       │   └─ r_pinky1
                    │       │   │       │       └─ r_pinky2
                    │       │   │       │           └─ r_pinky3
                    │       │   │       │               └─ r_pinky_null
                    │       │   │       ├─ r_ring1
                    │       │   │       │   └─ r_ring2
                    │       │   │       │       └─ r_ring3
                    │       │   │       │           └─ r_ring_null
                    │       │   │       ├─ r_middle1
                    │       │   │       │   └─ r_middle2
                    │       │   │       │       └─ r_middle3
                    │       │   │       │           └─ r_middle_null
                    │       │   │       ├─ r_index1
                    │       │   │       │   └─ r_index2
                    │       │   │       │       └─ r_index3
                    │       │   │       │           └─ r_index_null
                    │       │   │       └─ r_thumb0
                    │       │   │           └─ r_thumb1
                    │       │   │               └─ r_thumb2
                    │       │   │                   └─ r_thumb3
                    │       │   │                       └─ r_thumb_null
                    │       │   ├─ r_lowarm_twist1_proc
                    │       │   ├─ r_lowarm_twist2_proc
                    │       │   ├─ r_lowarm_twist3_proc
                    │       │   └─ r_lowarm_twist4_proc
                    │       ├─ r_uparm_twist0_proc
                    │       ├─ r_uparm_twist1_proc
                    │       ├─ r_uparm_twist2_proc
                    │       ├─ r_uparm_twist3_proc
                    │       └─ r_uparm_twist4_proc
                    ├─ l_clavicle
                    │   └─ l_uparm
                    │       ├─ l_lowarm
                    │       │   ├─ l_wrist_twist
                    │       │   │   └─ l_wrist
                    │       │   │       ├─ l_pinky0
                    │       │   │       │   └─ l_pinky1
                    │       │   │       │       └─ l_pinky2
                    │       │   │       │           └─ l_pinky3
                    │       │   │       │               └─ l_pinky_null
                    │       │   │       ├─ l_ring1
                    │       │   │       │   └─ l_ring2
                    │       │   │       │       └─ l_ring3
                    │       │   │       │           └─ l_ring_null
                    │       │   │       ├─ l_middle1
                    │       │   │       │   └─ l_middle2
                    │       │   │       │       └─ l_middle3
                    │       │   │       │           └─ l_middle_null
                    │       │   │       ├─ l_index1
                    │       │   │       │   └─ l_index2
                    │       │   │       │       └─ l_index3
                    │       │   │       │           └─ l_index_null
                    │       │   │       └─ l_thumb0
                    │       │   │           └─ l_thumb1
                    │       │   │               └─ l_thumb2
                    │       │   │                   └─ l_thumb3
                    │       │   │                       └─ l_thumb_null
                    │       │   ├─ l_lowarm_twist1_proc
                    │       │   ├─ l_lowarm_twist2_proc
                    │       │   ├─ l_lowarm_twist3_proc
                    │       │   └─ l_lowarm_twist4_proc
                    │       ├─ l_uparm_twist0_proc
                    │       ├─ l_uparm_twist1_proc
                    │       ├─ l_uparm_twist2_proc
                    │       ├─ l_uparm_twist3_proc
                    │       └─ l_uparm_twist4_proc
                    └─ c_neck
                        ├─ c_neck_twist1_proc
                        ├─ c_neck_twist0_proc
                        └─ c_head
                            ├─ c_jaw
                            │   ├─ c_teeth
                            │   ├─ c_jaw_null
                            │   └─ c_tongue0
                            │       └─ c_tongue1
                            │           └─ c_tongue2
                            │               └─ c_tongue3
                            │                   └─ c_tongue4
                            ├─ r_eye
                            │   └─ r_eye_null
                            ├─ l_eye
                            │   └─ l_eye_null
                            └─ c_head_null

생긴건 이렇게 생겼고, 

 

rest_vertices (36874,3)

faces (18439,3)

joint_prerotations (127,4)

입니다

 

 

파라미터는 다음과 같은데요

출처 : https://github.com/facebookresearch/MHR

Identity Parameters (identity_coeffs)

  • Shape: [batch_size, 45]
  • Description: The first 20 control body shape identity, second 20 control head, and the last 5 for hands.
  • Typical Range: -3 to +3 (zero-mean, unit variance)

Model Parameters (model_parameters)

  • Shape: [batch_size, 204]
  • Description: Joint angles and scalings

Expression Parameters (face_expr_coeffs)

  • Shape: [batch_size, 72]
  • Description: Facial expression blendshape weights
  • Typical Range: -1 to +1

 

원본 리포에 있는 SMPLX -> MHR 컨버팅 하면 파라미터가 249개 나옵니다

[204(model_param), 45(identity_coeffs)]입니다.

 

각 파라미터의 이름은 모델 불러오시고 get_parameter_names()를 통해 확인하실 수 있습니다

parameter_limits도 있으니 확인해보시면 좋습니다 

 

728x90