본문으로 바로 가기

Inverse3 및 VerseGrip 커서

Haply Inverse Unity Package는 Inverse3 및 VerseGrip 기기를 위한 전용 커서 컴포넌트를 제공하여, Unity 환경에서 정밀한 제어와 상호작용을 가능하게 합니다. Inverse3 의 ‘ Cursor’와 ‘VerseGrip Cursor’라는이 컴포넌트들은 해당 기기 컨트롤러의데이터를 기반으로 게임 오브젝트의 위치와 회전을 동적으로 조정하도록 설계되었습니다.

개요​

커서 컴포넌트는 물리적 Haply 디바이스와 Unity의 가상 게임 오브젝트를 연결하는 가교 역할을 하며, 디바이스의 위치 및 회전 데이터를 게임 오브젝트의 움직임과 방향으로 변환합니다. 이러한 변환을 통해 사용자는 직관적인 방식으로 가상 환경과 상호작용할 수 있으며, 실제 움직임이 가상의 반응으로 그대로 반영됩니다.

CursorBase 클래스​

커서 컴포넌트의 핵심은 CursorBase 클래스가 있으며, 이 클래스는 Inverse3Cursor와 VerseGripCursor가 공통으로 사용하는 기본 기능을 제공합니다. 여기에는 디바이스 연결 관리, 모델 인스턴스화, 가시성 제어가 포함됩니다.

주요 속성 및 메서드​

  • 장치: 커서를 제어하는 장치와 연결되며, 실행 시 자동으로 설정됩니다.
  • 모델 프리팹: 커서 모델에 사용할 프리팹을 지정합니다. 이 프리팹은 ModelParent의 자식으로 자동 인스턴스화됩니다.
  • ModelParent: 인스턴스화된 모델 프리팹의 부모 트랜스폼을 정의합니다. 설정하지 않으면 커서의 트랜스폼이 기본값으로 사용됩니다.
  • 모델: 씬에 있는 기존 커서 모델을 직접 참조합니다. 설정하면 ModelPrefab의 인스턴스화를 건너뜁니다.
  • HideControllerModel: 커서 모델의 표시 여부를 제어하며, 게임플레이 요구 사항에 따라 동적으로 표시하거나 숨길 수 있습니다.
  • 반지름: 커서 모델이 구체인 경우 그 반지름을 나타내며, 모델의 메쉬 경계로부터 계산됩니다.
  • 부드러움: PositionSmoothness와 RotationSmoothness는 커서의 위치와 회전을 부드럽게 만드는 옵션을 제공하여 사용자 경험을 향상시킵니다.

참고: 예기치 않은 동작을 방지하려면 Cursor 컴포넌트에서 Cursor Model을 올바르게 참조하는 것이 매우 중요합니다.

커서

Haptic Rig로생성된 기본 커서 모델에는 세 축을 나타내는 색상 점이 표시됩니다: 전방(파란색), 상방(초록색), 우측(빨간색). 이 디자인은 가상 환경에서 기기의 방향을 시각적으로 파악하는 데 도움이 됩니다. 보정된 VerseGrip의 경우, 전방은가리키는 방향과 일치해야 하며, 상방은상단 면과 일치해야 합니다.

Inverse3 커서 컴포넌트​

Inverse3CursorInverse3 기기에 최적화되어 있으며, Unity에서 커서의 로컬 위치를 기기의 실제 위치에 맞춰 업데이트합니다.

PositionSmoothness 설정을 통해 커서 움직임의 부드러움을 조절할 수 있으며, 실제 움직임에 대한 커서의 반응성을 제어하여 사용자 경험을 향상시킵니다.

VerseGrip 커서 컴포넌트​

VerseGripCursorVerseGrip 디바이스를 통해 기능을 확장하며, Unity에서 커서의 회전 방향을 디바이스의 실제 회전 방향에 맞춰 업데이트합니다.

useDeviceLocalSpace 이 설정을 사용하면 월드 방향과 부모 오브젝트 방향 중에서 커서 정렬 방식을 선택할 수 있어 디자인의 유연성이 높아집니다.

RotationSmoothness 이 설정은 커서 회전 시의 부드러움을 조절하며, 개발자가 실제 VerseGrip 방향 변화에 대한 커서의 반응성을 세밀하게 조정할 수 있게 해줍니다.

구현 세부 사항​

초기화 시 Model이것이 할당되지 않은 경우, 커서 컴포넌트는 지정된 ModelPrefab을 ModelParent의 인스턴스로 생성하여 씬에서 시각적으로 표현되도록 합니다. 이 컴포넌트들은 연결된 디바이스 컨트롤러와 동기화되어, 실제 기기의 움직임에 맞춰 커서의 위치와 회전을 실시간으로 조정합니다.

두 컴포넌트를 동일한 GameObject에 연결하여 해당 오브젝트의 위치와 회전을 제어하거나, 용도에 따라 별도의 GameObject에 연결할 수도 있습니다. 이를 통해 개발자는 Unity에서 몰입감 있는 햅틱 경험을 구현하기 위한 다목적 도구를 활용할 수 있습니다.