본문으로 이동

Inverse3 및 VerseGrip 커서

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

개요​

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

Classe CursorBase​

커서 구성 요소의 핵심에는 다음 클래스가 있습니다. CursorBase, 이는 다음에서 공통으로 사용하는 기본 기능을 제공하며 Inverse3Cursor et VerseGripCursor. 여기에는 장치와의 연결 관리, 모델 인스턴스화 및 가시성 제어가 포함됩니다.

주요 속성 및 메서드​

  • 장치: 커서를 이를 제어하는 장치에 연결하며, 실행 시 자동으로 설정됩니다.
  • 모델 프리팹 : 커서 모델에 대한 프리팹(prefab)을 지정하며, 이는 자동으로 의 자식으로 인스턴스화됩니다. ModelParent.
  • ModelParent: 인스턴스화된 모델 프리팹의 부모 트랜스폼을 정의합니다. 정의되지 않은 경우, 기본적으로 커서의 트랜스폼을 사용합니다.
  • 모델 : 씬에 존재하는 기존 커서 모델을 직접 참조합니다. 이 필드가 설정된 경우, ModelPrefab 무시됩니다.
  • HideControllerModel: 커서 모델의 표시 여부를 제어하여, 게임의 요구 사항에 따라 커서 모델을 동적으로 표시하거나 숨길 수 있게 합니다.
  • 반지름: 커서 모델이 구형인 경우, 모델의 메쉬 경계를 기준으로 계산된 반지름을 나타냅니다.
  • 부드러움 : PositionSmoothness et RotationSmoothness 커서의 위치와 회전을 부드럽게 조정하는 기능을 제공하여 사용자 경험을 향상시킵니다.

참고: 예상치 못한 동작을 방지하려면 ‘커서’ 컴포넌트 내에서 커서 모델을 올바르게 참조해야 합니다.

커서

Haptic Rig로 생성된 기본 커서 모델에는 세 가지 축, 즉 ‘앞’ (파란색), ‘위’ (초록색), ‘오른쪽’ (빨간색)을 나타내는 색상 표시점이 있습니다. 이러한 설계 덕분에 가상 환경에서 기기의 방향을 쉽게 파악할 수 있습니다. 보정된 VerseGrip의 경우, ‘앞’은 가리키는 방향과 일치해야 하며, ‘위’는 기기 상단과 일치해야 합니다.

커서 구성 요소 Inverse3​

Inverse3Cursor Inverse3 기기에 사용되며, 기기의 물리적 위치를 반영하도록 Unity 내 커서의 로컬 위치를 업데이트합니다.

매개변수 PositionSmoothness 커서 움직임의 부드러움을 조절할 수 있어, 실제 움직임에 대한 커서의 반응성을 제어함으로써 사용자 경험을 향상시킵니다.

VerseGrip 커서 부품​

VerseGripCursor VerseGrip 기기의 기능을 확장하며, 기기의 물리적 회전을 반영하도록 Unity 내 커서 회전 방식을 업데이트합니다.

매개변수 useDeviceLocalSpace 세계 좌표계와 상위 객체의 좌표계 중에서 커서의 정렬 방식을 선택할 수 있게 하여, 설계의 유연성을 높여줍니다.

매개변수 RotationSmoothness 커서 회전 부드러움 정도를 제어하여, 개발자가 VerseGrip의 물리적 방향 변화에 대한 커서의 반응성을 정밀하게 조정할 수 있게 합니다.

구현 세부 사항​

초기화 과정에서 커서 구성 요소들은 다음을 인스턴스화합니다. ModelPrefab ~의 자식으로 지정됨 ModelParent si Model 할당되지 않았으므로, 장면 내에서 시각적으로 표현될 수 있습니다. 이러한 구성 요소들은 해당 기기 제어기 사용자의 신체 움직임에 따라 커서의 위치와 회전 각도를 실시간으로 조정함으로써, 사용자와의 상호작용을 강화합니다.

이 두 컴포넌트는 동일한 GameObject에 부착하여 해당 GameObject의 위치와 회전을 제어하거나, 서로 다른 용도에 따라 별도의 GameObject에 부착할 수 있어, 개발자들에게 Unity에서 몰입감 넘치는 햅틱 경험을 제작할 수 있는 다목적 도구를 제공합니다.