본문으로 건너뛰기

Inverse3 VerseGrip의 커서

Haply Inverse Unity 패키지에는Inverse3 및 VerseGrip 기기를 위한 전용 커서 컴포넌트가 포함되어 있어, Unity 환경 내에서 정밀한 제어와 상호작용을 구현할 수 있습니다. 이 컴포넌트들(Inverse3 Cursor 및 VerseGrip Cursor)은 해당 기기 컨트롤러로부터 수신된 데이터를 기반으로 게임 오브젝트의 위치와 회전을 동적으로 조정하도록 설계되었습니다.

개요​

커서 컴포넌트는 물리적 Haply 장치와 Unity 내의 가상 게임 오브젝트를 연결하는 역할을 하며, 장치의 위치 및 회전 데이터를 게임 오브젝트의 이동과 방향으로 변환합니다. 이러한 변환을 통해 사용자는 가상 환경과 직관적으로 상호작용할 수 있으며, 물리적 움직임이 가상 공간에서의 반응으로 재현됩니다.

CursorBase 클래스​

커서 컴포넌트의 핵심은 CursorBase 수업 시간에,Inverse3Cursor 그리고 VerseGripCursor 양쪽 모두에서 공통으로 사용되는 기본 기능을 제공합니다. 여기에는 장치 연결, 모델 인스턴스화, 표시 제어 관리가 포함됩니다.

주요 속성과 메서드​

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

참고: 커서 컴포넌트에서 커서 모델을 올바르게 참조하는 것은 예기치 않은 동작을 방지하는 데 중요합니다.

커서

햅틱 리그에서 생성되는 기본 커서 모델에는 3개의 축을 나타내는 색상별 점이 있습니다.Forward(파란색),Up(초록색),Right(빨간색)입니다. 이러한 설계 덕분에 가상 환경 내에서 장치의 방향을 시각적으로 파악하기가 쉬워집니다. 보정이 완료된 VerseGrip의 경우,Forward는 가리키는 방향을,Up은 상단면을 가리키도록 설정합니다.

Inverse3 Cursor 컴포넌트​

Inverse3Cursor Inverse3 전용 기능으로, 장치의 물리적 위치를 반영하도록 Unity 내 커서의 로컬 위치를 업데이트합니다.

PositionSmoothness 설정에서 커서 이동의 부드러움을 조절할 수 있습니다. 물리적 움직임에 대한 커서의 반응성을 제어함으로써 사용자 경험을 향상시킵니다.

VerseGrip Cursor 컴포넌트​

VerseGripCursor 이는 VerseGrip 기기의 기능을 확장하는 것으로, 기기의 물리적 회전을 반영하여 Unity 내 커서의 회전 방향을 업데이트합니다.

useDeviceLocalSpace 설정을 통해 월드 방향과 부모 오브젝트의 방향 중 어느 쪽에 맞출지 선택할 수 있게 되어, 설계의 유연성이 향상됩니다.

RotationSmoothness 이 설정은 커서 회전 시의 부드러움을 조절합니다. 이를 통해 개발자는 물리적 VerseGrip의 방향 변화에 대한 커서의 반응성을 세밀하게 조정할 수 있습니다.

구현 세부 사항​

초기화 시,Model 할당되지 않은 경우, 커서 컴포넌트는 지정된 ModelPrefab 를 ModelParent 의 인스턴스로 생성하여 씬 내에서 시각적으로 표현되도록 합니다. 이러한 컴포넌트는 관련 장치 컨트롤러 동기화하여 물리적 장치의 움직임에 맞춰 커서의 위치와 회전 각도를 실시간으로 조정합니다.

두 컴포넌트를 모두 동일한 GameObject에 부착하여 위치와 회전을 제어할 수도 있고, 용도에 따라 별도의 GameObject에 부착할 수도 있습니다. 이를 통해 개발자는 Unity에서 몰입감 있는 햅틱 경험을 제작할 수 있는 유연한 도구를 활용할 수 있습니다.