Inverse3 및 VerseGrip 컨트롤러
Inverse3 및 VerseGrip 컨트롤러는 Device Mapper를 통해 각 물리적 장치를 Unity 게임 오브젝트와 원활하게 통합하도록 설계되었습니다. 고주파 센서 데이터를 활용하여 이 컴포넌트들은 가상 환경 내에서 정밀하고 반응성 높은 제어를 가능하게 합니다. 이들의 기능은 로직과 역량 측면에서 조화롭게 맞춰져 있어, 통일된 사용자 경험을 보장합니다.
이 컨트롤러들은 Haply Inverse Unity Package의 핵심을 이루며, 개발자가 Haply의 고급 하드웨어 기능을 활용하여 몰입감 있고 상호작용이 가능한 VR 애플리케이션을 구축할 수 있도록 합니다. 이들은 장치의 로컬 좌표와 게임 월드의 공간 매개변수 사이의 변환을 능숙하게 처리하여, 진정성 있고 몰입감 있는 상호작용을 보장합니다.
Inverse3 컨트롤러
Inverse3 컨트롤러 컴포넌트는 Inverse3 장치를 해당 게임 오브젝트와 연결하는 데 핵심적인 역할을 합니다. 고주파 센서 데이터를 사용하여 장치의 물리적 움직임을 가상 공간 내에서 정확하게 반영합니다. 주요 기능은 다음과 같습니다:
Inverse3 주요 기능 및 API
-
Device State Changed Event: Inverse3 컨트롤러의 핵심으로, 이 이벤트는 각 햅틱 프레임마다 발생하여 커서의 위치와 속도에 대한 실시간 업데이트를 제공합니다. 장치 상태를 지속적으로 추적하거나 실시간 제어 명령을 구현해야 하는 애플리케이션에 필수적입니다.
-
위치 및 속도 조회:
CursorPosition,CursorVelocity,CursorLocalPosition,CursorLocalVelocity와 같은 속성을 제공하여 장치의 현재 상태에 접근할 수 있으며, 물리적 움직임을 가상 공간에 정확하게 매핑하는 데 핵심적입니다. -
힘 및 위치 제어:
SetCursorForce,SetCursorPosition과 같은 메서드를 제공하여 장치를 직접 조작할 수 있으며, 개발자가 힘을 가하거나 위치를 설정하여 가상 상호작용을 강화할 수 있습니다.
Inverse3 인스펙터 보기

- Device: 특정 장치를 선택합니다.
<refresh device list>를 클릭하면 에디터 모드에서 Device Mapper를 사용하여 장치를 가져오고, 모든 Device 드롭다운을 업데이트합니다. - Handedness: 손잡이 구성을 기준으로 장치를 필터링합니다.
- Cursor: Inverse3Cursor 오브젝트와 연결되며, 장치의 위치 업데이트에 맞춰 함께 움직입니다.
- Body: 장치의 물리적 본체 방향을 나타내는 Inverse3Body와 연결됩니다.
- Coordinate Conversion: 장치의 커서 위치와 본체 방향이 게임 월드로 어떻게 변환되는지 정의하여, 정확하고 사용자 지정이 가능한 매핑을 보장합니다.
- Cursor Data: 게임 월드 내 커서의 위치를 표시합니다.
- Device Data: 장치의 실시간 입력 및 출력 데이터를 표시합니다.
- Events: 메인 스레드에서 발생하는 Unity 이벤트로, 씬 상호작용이나 UI 업데이트를 지원합니다.
- Ready: 장치를 사용할 준비가 되었을 때 신호를 보냅니다.
- ControlModeChanged: 장치의 제어 모드(예: 힘 제어 또는 위치 제어)가 변경되었음을 나타냅니다.
- PowerSupplyStatusChanged: 장치의 전원 공급 상태가 변경되었음을 알립니다.

Inverse3 기즈모
장치의 위치와 커서가 도달할 수 있는 최대 거리를 시각적으로 표시하며, 손잡이 구성에 따라 색상으로 구분합니다.
- 파란색은 왼손용 장치를 나타냅니다.
- 빨간색은 오른손용 장치를 나타냅니다.
- 손잡이 구성이 지정되지 않은 장치는 런타임에 결정될 때까지 두 가지 색상이 모두 표시됩니다.

VerseGrip 컨트롤러
Inverse3 컨트롤러와 마찬가지로 VerseGrip 컨트롤러는 VerseGrip 장치를 연결된 게임 오브젝트에 할당합니다. 이 컴포넌트는 VerseGrip의 고유한 입력 기능을 활용하는 데 필수적입니다.
VerseGrip 주요 기능 및 API
-
Device State Changed Event: 장치의 방향 및 버튼 상태 변경을 알리며, 사용자 입력과 장치 방향에 대한 즉각적인 피드백을 제공하여 인터랙티브 애플리케이션을 지원합니다.
-
버튼 상호작용: 버튼 상호작용을 감지하는 메서드(
GetButton,GetButtonDown,GetButtonUp)를 제공하여 입력 메커니즘을 햅틱 스레드에 연동할 수 있게 합니다. -
연결 상태: 다른 장치와의 연결 상태를 모니터링하며,
Attached및Detached이벤트를 통해 신호를 보냅니다. 장치의 물리적 구성에 의존하는 애플리케이션에 유용합니다.
VerseGrip 인스펙터 보기

- Device: 특정 장치를 선택합니다.
<refresh device list>를 클릭하면 에디터 모드에서 클라이언트가 활성화되고 모든 Device 드롭다운이 새로고침됩니다. - Cursor: VerseGripCursor 오브젝트와 연결되며, 장치의 방향 업데이트에 따라 회전합니다.
- Coordinate Conversion: 장치의 방향이 게임 월드로 어떻게 변환되는지 정의하여, 정확하고 사용자 지정이 가능한 매핑을 보장합니다.
- Cursor Data: 게임 월드 내 커서의 회전 값을 표시합니다.
- Device Data: 장치의 로컬 회전 값, 버튼 상태 및 연결 상태를 표시합니다.
- Events: 씬 또는 UI 상호작용을 지원하기 위해 메인 스레드에서 Unity 이벤트를 발생시킵니다.
- Ready: 장치를 사용할 준비가 되었을 때 신호를 보냅니다.
- Button Down: 버튼이 눌렸을 때 발생합니다.
- Button Up: 버튼에서 손을 떼었을 때 발생합니다.
- Attached: 장치가 Inverse3에 연결되었을 때 나타냅니다.
- Detached: 장치가 Inverse3에서 분리되었을 때 나타냅니다.
