본문으로 건너뛰기

Inverse3 및 VerseGrip 커서

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

개요​

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

CursorBase 클래스​

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

주요 속성 및 메서드​

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

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

커서

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

Inverse3 Cursor 컴포넌트​

Inverse3Cursor는 Inverse3 디바이스에 특화되어 있으며, Unity에서 커서의 로컬 위치를 디바이스의 실제 위치에 맞게 업데이트합니다.

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

VerseGrip Cursor 컴포넌트​

VerseGripCursor는 VerseGrip 디바이스로 기능을 확장하며, Unity에서 커서의 회전을 디바이스의 실제 회전에 맞게 업데이트합니다.

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

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

구현 세부 사항​

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

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