Inverse3 VerseGrip 커서
Haply Inverse Unity Package는 Inverse3 및 VerseGrip 기기에 특화된 커서 컴포넌트를 도입하여, Unity 환경에서 정밀한 제어와 상호작용을 구현할 수 있게 합니다. Inverse3 Cursor와 VerseGrip Cursor라는이 두 컴포넌트는 해당 기기 컨트롤러에서 제공하는 데이터를 기반으로 게임 오브젝트의 위치와 회전을 동적으로 조정하도록 설계되었습니다.
개요
커서 컴포넌트는 물리적 Haply 장치와 Unity 내의 가상 게임 오브젝트 사이의 가교 역할을 하며, 장치의 위치 및 회전 데이터를 게임 오브젝트의 이동 및 방향으로 변환합니다. 이러한 변환을 통해 사용자는 물리적 동작을 가상 피드백으로 매핑하여 가상 환경과 직관적인 방식으로 상호작용할 수 있습니다.
CursorBase 클래스
커서 컴포넌트의 핵심은 CursorBase 클래스로, 이 클래스는 Inverse3Cursor 와 VerseGripCursor 공유의 기본 기능.
여기에는 장치 연결 관리, 모델 인스턴스화 및 가시성 제어가 포함됩니다.
주요 속성 및 메서드
- 장치: 커서를 해당 제어 장치와 연결하고, 실행 시 자동으로 설정합니다.
- 모델 프리팹: 커서 모델에 사용될 프리팹(Prefab)을 지정하면, 해당 프리팹이 자동으로
ModelParent의 하위 객체를 인스턴스화합니다. - ModelParent: 인스턴스화된 모델 프리셋의 상위 변환(Transform)을 정의합니다. 설정하지 않으면 커서의 변환이 기본값으로 적용됩니다.
- 모델: 장면 내에 이미 존재하는 커서 모델을 직접 참조합니다. 이 항목을 설정하면 건너뜁니다.
ModelPrefab의 인스턴스화. - HideControllerModel: 커서 모델의 표시 여부를 제어하며, 게임 요구 사항에 따라 동적으로 표시하거나 숨길 수 있습니다.
- 반지름: 커서 모델이 구형인 경우, 모델의 메쉬 박스를 통해 계산된 반지름을 나타냅니다.
- 부드러움:
PositionSmoothness와RotationSmoothness사용자 경험을 향상시키기 위해 커서 위치와 회전을 부드럽게 조정하는 옵션이 제공됩니다.
주의: Cursor 컴포넌트에서 커서 모델을 올바르게 참조하는 것이 매우 중요합니다. 그렇지 않으면 예기치 않은 동작이 발생할 수 있습니다.

Haptic Rig를 통해 생성된 기본 커서 모델에는 세 가지 축, 즉Forward(파란색),Up(초록색), Right(빨간색)을 각각 나타내는 색상 점들이 표시되어 있습니다. 이 디자인은 가상 환경에서 장치의 방향을 직관적으로 파악하는 데 도움이 됩니다. 보정이 완료된 VerseGrip의 경우,Forward는 진행 방향과 일치해야 하며,Up은 상단면과 일치해야 합니다.
Inverse3 Cursor 컴포넌트
Inverse3Cursor Inverse3 기기에 특화되어 있으며, Unity 내에서 커서의 로컬 위치를 기기의 실제 물리적 위치를 반영하도록 업데이트합니다.
PositionSmoothness 커서 이동의 부드러움을 조절하는 설정을 통해, 커서가 물리적 움직임에 반응하는 속도를 제어함으로써 사용자 경험을 향상시킵니다.
VerseGrip Cursor 컴포넌트
VerseGripCursor VerseGrip 기기로 기능을 확장하여, 기기의 실제 물리적 회전을 반영하도록 Unity에서 커서 회전을 업데이트합니다.
useDeviceLocalSpace 세계 좌표와 부모 객체의 방향 중에서 커서의 정렬 방식을 선택할 수 있도록 설정하여 디자인의 유연성을 높입니다.
RotationSmoothness 커서 회전을 제어하는 부드러움 수준을 설정하여, 개발자가 물리적 VerseGrip의 방향 변화에 대한 커서의 반응 속도를 미세하게 조정할 수 있도록 합니다.
구현 세부 사항
초기화 시, 할당되지 않은 경우 Model, 커서 컴포넌트는 지정된 ModelPrefab ~로서 ModelParent 자식 객체를 인스턴스화하여 씬에서 시각적으로 표시되도록 합니다.
이러한 컴포넌트는 관련 장비 컨트롤러 동기화를 유지하며, 기기의 물리적 움직임에 맞춰 커서의 위치와 회전 각도를 실시간으로 조정합니다.
두 컴포넌트는 동일한 GameObject에 장착하여 위치와 회전을 동시에 제어할 수도 있고, 서로 다른 오브젝트에 각각 장착하여 다양한 사용 시나리오에 대응할 수도 있어, 개발자가 Unity에서 몰입감 있는 햅틱 경험을 구현할 수 있도록 다기능 도구 세트를 제공합니다.