Unity/VR
Grab Interactable
mynote6590
2025. 4. 10. 13:31
주요 설정 설명 (실제로 자주 사용하는 것 위주로 정리)
✅ Interaction Manager
- 이 오브젝트를 관리하는 XR Interaction Manager를 연결합니다.
- 대부분 자동 연결되므로 비워놔도 동작하지만, 수동 제어할 때 사용됩니다.
✅ Interaction Layer Mask
- 어떤 종류의 Interactor(예: 손, 레이 등)가 이 오브젝트와 상호작용 가능한지 필터링합니다.
- 예: 손으로만 잡을 수 있게 하거나, 특정 컨트롤러만 반응하게 설정 가능.
✅ Select Mode
- 오브젝트를 한 명이 잡을 수 있는지 또는 여러 명이 동시에 잡을 수 있는지 설정.
- Single: 하나의 Interactor만 선택 가능 (기본값)
- Multiple: 여러 Interactor가 동시에 잡을 수 있음 (특수한 경우)
✅ Movement Type
오브젝트가 손(Interactor)과 연결되는 방식
- Instantaneous: 즉시 붙음 (이질감은 있으나 직관적)
- Kinematic: 자연스럽게 손을 따라가지만 물리 충돌이 거의 없음
- Velocity Tracking: 진짜로 물리적으로 손을 따라가는 느낌 (현실감 ↑, 설정 어려움 ↑)
추천: 대부분은 Instantaneous 혹은 Kinematic을 사용.
✅ Track Position / Rotation / Scale
- 어떤 속성(위치/회전/크기)을 손의 움직임과 함께 따라갈지 여부 설정
- 일반적으로 Position, Rotation은 체크
- Scale은 퍼즐처럼 크기가 변하는 물체에서만 필요
✅ Throw On Detach
- 사용자가 손을 놓았을 때 던지는 효과를 줄지 여부
- 체크 시 → 물리 기반으로 던지기 가능 (Throw)
- 해제 시 → 손을 놓아도 물체는 제자리에 멈춤
하위 옵션들:
- Throw Smoothing Duration: 던질 때 속도 적용의 부드러움 (0.25초 기본)
- Throw Velocity Scale: 던지는 힘의 크기 조절 (1.5이면 손의 속도 × 1.5)
- Throw Angular Velocity: 회전력 조절
💡 실제 팁: 1.0~2.0 사이에서 튜닝해보며 가장 현실감 있는 값을 찾는 것이 좋습니다.
✅ Attach Transform
- 오브젝트를 잡을 때, 손의 어디에 위치할지 정의하는 기준점
- 예: 칼의 손잡이 쪽에 빈 오브젝트(Transform)를 만들고 이곳에 지정하면, 손이 칼자루를 잡는 식으로 자연스럽게 위치함
✅ Secondary Attach Transform
- 양손 잡기 또는 보조 위치용
- 예: 활 쏘기처럼 주손은 활 몸체, 부손은 활줄을 잡는 구조
✅ Use Dynamic Attach
- 오브젝트를 잡을 때 자동으로 잡은 위치에 맞춰 붙을지 여부
- 체크 시 → 손이 닿은 곳 기준으로 붙음
- 해제 시 → 항상 Attach Transform 기준으로 붙음
✅ Attach Ease In Time
- 오브젝트가 손으로 "부드럽게 이동"하는 시간
- 0으로 설정하면 바로 붙고, 0.1~0.3으로 하면 조금 더 자연스럽게 딸려옴
📦 그 외 설정 (잘 안 쓰지만 알고 있으면 좋음)
- Force Gravity On Detach: 놓았을 때 강제로 중력 적용 (RigidBody와 연동)
- Attach Point Compatibility: 새로운 버전에서 추천되는 포인트 방식 자동 설정
- Gaze Configuration: 시선 기반 선택이 필요한 경우에만 사용 (HoloLens 등)
🧪 실전에서 조합 예시
1. 던질 수 있는 공 만들기
- XR Grab Interactable 추가
- Throw On Detach 활성화
- Throw Velocity Scale → 1.8
- Rigidbody 추가 + Use Gravity 활성화
2. 자연스러운 손잡이 잡기
- 칼 모델의 손잡이 위치에 빈 GameObject (Handle) 생성
- 이 오브젝트를 Attach Transform에 지정
- Track Position, Track Rotation 체크