Unity XR Interaction Toolkit TroubleShooting
Unity 개념학습 첫 번째 포스팅
XR Interaction Toolkit 개념과 핵심 기능
XR Interaction Toolkit은 VR 및 AR 경험을 제작하기 위한 고수준 구성 요소 기반 상호작용 시스템으로, Unity 입력 이벤트를 활용해 3D 및 UI 상호작용을 지원하는 프레임워크를 제공한다.
핵심 구성 요소
- Interactor와 Interactable 구성 요소.
- 두 구성 요소를 연결하는 Interaction Manager.
- 이동 및 시각적 피드백을 위한 추가 구성 요소.
주요 기능
- HMD, Controller Tracking
- Custom Controller Model
- Interactor & Interactable
- Events
- Locomotion System, Provider
- Teleportation
- UI Interaction
- Haptic
- XR Socket Interactor
Trouble Shootings
a. XR origin안에 Controller가 설정되지 않는 문제.
AS IS : XR origin을 설치하고 하위 계층에 Main Camera
와 함께 Left, Right Controller가 생기지 않은 문제가 발생
To BE :
- XR Toolkt 버전 재설치 시도
- Start Asset import한 이후에 Preset 파일 안에 XRI Default right/XRI Default left를 재추가
- XR Controller 생성 완료.
b. Cube 오브젝트를 만들어서 허공에 생성했더니 지 맘대로 움직임
AS IS : Cube를 설치했는데 자기 맘대로 허공에서 움직이는 현상을 발견함
To BE : is Kinetic + Use Gravity 버튼을 취소해주면 물리법칙을 따르지 않으면서 움직이지 않는 현상.
c. Interaction Layer Mask 설정 신경써야함.
AS IS : Grab 작동 아예 안되는 문제 발생
To BE :
- XR Direct Interactor 쪽에는 Layer Mask가 everything으로 설정되어 있어야하고,
- XR Grab Interactable 쪽에는 Default로 Mask가 설정되어있음.
이 두개의 layer mask가 서로 겹쳐야 서로 인터랙션이 되어지는 상태가 된다.
d. Hide Controller On Select
AS IS : Cube를 집었을 때, 컨트롤러의 시각적 표현(모델)을 숨기고 싶다.
To BE :
Hide Controller On Select
는 XR Interaction Toolkit에서 사용되는 요소로, 컨트롤러와 상호작용하는 동안 컨트롤러의 시각적 표현(모델)을 숨길 때 사용됨.
ex) VR 게임에서 무기를 잡을 때 컨트롤러를 숨기고 무기만 보이도록 처리하고 싶을 때 이렇게 처리함.
e. Device 컨트롤에 관해
AS IS : Device를 설정하는 법에 대해 조금 더 알아보자
To BE : Grip 버튼을 눌러 OnSelect를 활성화 시키고, 이 상태에서 Trigger버튼을 눌러 OnActivated를 하게 한다. 이 상황이 VR게임의 예시에서 총에 손을 들고 총알을 발사하는 상황인 것이다.
f. 물체 (Interactable Event)
AS IS : Interactor와 Interactable에 대해 구분해서 알아보면 좋을 것 같다.
To BE :
XR Direct Interactor VS LeftHand Controller
Lefthand Controller
- 컨트롤러의 위치, 회전, 입력 데이터를 처리하는 기본 GameObject
- 주로 XR Controller가 포함되어 있음.
- 물리적 컨트롤러와 Unity의 가상 컨트롤러 간의 입력 매핑을 함.
LeftHand Direct Interactor
- XR Interaction Toolkit의 상호작용 시스템의 일부로, Direct Interaction(직접 상호작용)을 처리
- 컨트롤러가 가까운 거리에서 오브젝트를 잡거나(interact) 터치하는 동작
- XR Direct Interactor 컴포넌트 -> 상호작용 가능한 오브젝트(예: XR Grab Interactable)를 탐지
결론적으로, LeftHand Controller는 입력 처리와 컨트롤러 위치/회전 추적에 중점인 반면, LeftHand Direct Interactor는 오브젝트와의 직접 상호작용(잡기, 터치 등)을 처리한다.
g. Locomotion System
AS IS : Locomotion System이 뭐지
To BE :
Locomotion System
- Continuous Movement
- 사용자가 컨트롤러의 조이스틱이나 방향 입력을 사용해 부드럽게 이동
- Teleportation
- 사용자가 특정 위치를 지정한 후, 해당 위치로 즉시 이동
- Teleportation Provider : 순간 이동을 처리하는 컴포넌트, Line Renderer 또는 Arc Ray를 사용해 목표 지점을 시각적으로 표시
- Snap Turn & Smooth Turn
- 사용자가 컨트롤러를 사용해 특정 각도로 빠르게 회전
h. XR Ray Interactor
AS IS : XR Ray Interactor이 뭐지
To BE :
XR Ray Interactor
- Object Interaction (객체 상호작용)
- Ray가 닿는 객체와 상호작용 ex) 버튼 누르기, 객체 잡기(Grab), 메뉴 선택 등.
- UI Interaction (UI 상호작용)
- XR 환경에서 Unity의 Canvas UI와 상호작용 ex) VR 환경에서 UI 버튼 클릭.
- Ray Visualization (레이 시각화)
- Line Renderer나 Curve Renderer를 사용해 레이를 시각적으로 표현 ex) 직선형 또는 곡선형 레이로 구성할 수 있습니다.
- Raycast Configuration
- Raycast 설정을 통해 레이의 거리, 방향, 상호작용 가능 객체 등을 정의.
특히, Line Type을 통해 레이의 시각적 표현 방식을 설정, (Straight Line: 직선 레이.Projectile Curve: 곡선 레이 (예: 포물선 형태).Bezier Curve: 부드러운 곡선 형태.)
Leave a comment