2026.02.03 - [ETC] - Unity + Python MediaPipe 기반 양 손 인식하기
이전 글
Unity + Python MediaPipe 기반 양 손 인식하기
이전에 회사에서 Unity와 IMU 센서 기반 모션캡쳐 글러브를 연동하여 시뮬레이션 환경을 만든 적이 있었다. 당시 실험실에 있던 모션캡쳐 글러브가 너무 예전 것이라 Unity SDK가 지원되지 않았기에,
shin0624.tistory.com
반응형
이전 글에서는 손 움직임을 Untiy에서 구현하기 위해 MediaPipe의 양 손 랜드마크의 움직임을 Target 오브젝트에 매핑하였다.
Target 아래에 Cube를 넣어두었기에 손의 움직임은 확인할 수 있었는데, 정작 목표하던 Humanoid 프리팹의 손가락은 움직이지 않았다.

- 이유?
- 점검해야 할 것은 크게 2가지이다. 첫째는 Animation Rigging 패키지가 제공하는 Rig Layer와 Rig 컴포넌트의 유무이고, 두 번째는 두 컴포넌트 간 계층 관계가 제대로 구성되었는지 이다.
- Hierarchy 구조를 다시 점검 해보자.

- MediaPipe에서 수신받은 랜드마크를 Unity에 매핑하는 HandTrackingRoot
- 휴머노이드 프리팹 HumanDuumy_F Green (Animator, RigBuilder 컴포넌트)
- Rigging된 손가락 Bone을 자식으로 갖는 Rig (Rig 컴포넌트)
- 손가락 Bone이 Target을 따라가도록 만드는 제약 Constraints
- 양 손의 제약 MPC 오브젝트들(Multi-Parent Constraint 컴포넌트)
- 양 손들의 Target 루트 Rig_Fingers
- 양 손들의 각 Target 오브젝트들
- Target 움직임을 시각화할 Cube
- 양 손들의 각 Target 오브젝트들
- 루트 오브젝트의 Rig Builder 컴포넌트를 보자.

- Rig Layer가 할당되지 않았었다. 물론 드롭다운을 클릭해도 아무것도 뜨지 않는다.
- 이유를 찾기 위해, Animation Rigging 공식 문서를 찾아본다.
- Animation Rigging - Rigging Workflow에서 답을 찾을 수 있었다.

Rig 컴포넌트는 “컨트롤 리그”의 모든 Constraints의 진입점이며, Rig 컴포넌트는 GetComponentsInChildren 메서드를 사용하여 Constraints를 수집하므로, Rig 계층구조에서 컴포넌트의 순서가 작업의 평가 순서를 결정한다.

- 즉, Rig가 Constraints를 수집하기 위해서는 Constraints Object들이 Rig의 자식으로 들어가 있어야 한다.
- 또한, Target과 Driver들도 모두 Rig의 자식으로 “컨트롤 리그”형태로 들어가야 한다.
- 현재 내 Hierarchy는 Rig, Constraints, Rig_Finger, Driver가 모두 형제 관계에 있기 때문에 Rig Layer가 인식되지 않았던 것이다.


컨트롤 리그들을 모두 Rig의 자식으로 넣어주니, Rig 컴포넌트에서 Rig Layer를 인식할 수 있었다.
변경 후 Play 결과
- 드디어 프리팹의 손가락과 내 손가락이 연동된다.
- 하지만 아직 프리팹 손가락의 최대 꺾임 각도 조절, 꺾이는 방향 등의 조정이 필요할 듯 하다.
'ETC' 카테고리의 다른 글
| Unity + Python MediaPipe 기반 양 손 인식하기 (0) | 2026.02.03 |
|---|---|
| Unity 6 Preview 체험후기 이벤트 경품 (6) | 2024.09.23 |