1일1알

XR Interaction Toolkit 개념과 핵심 기능 - 3. Interactor, Interactable 개념 본문

유니티/VR

XR Interaction Toolkit 개념과 핵심 기능 - 3. Interactor, Interactable 개념

영춘권의달인 2022. 11. 12. 22:01

https://www.inflearn.com/course/%EB%91%90%EA%B3%A0%EB%91%90%EA%B3%A0-%EC%9C%A0%EB%8B%88%ED%8B%B0-vr/dashboard

 

두고두고 써먹는 유니티 VR - 인프런 | 강의

Unity를 이용하여 VR 장비를 연동하고, VR 컨텐츠를 개발하는 방법을 배우는 VR 개발 입문 강의입니다. VR의 시장성이나 전망은 이미 많은 컨텐츠에서 접할 수 있기 때문에 굳이 다루지 않고, 실제

www.inflearn.com

이 글은 해당 강의를 보고 정리한 글입니다.

 

1. HMD와 컨트롤러 트래킹

2. 제작한 컨트롤러 모델 연결

3. Interactor, Interactable 개념

4. XR Interaction Toolkit의 이벤트 개념

5. Locomotion System, Provider

6. Teleportation

7. UI Interaction

8. Haptic

9. XR Socket Interactor

 

준비물 : XR Interaction Toolkit의 환경 설정이 완료된 프로젝트

https://kjhcocomi.tistory.com/363

 

XR Interaction Toolkit 개요와 환경 설정

XR Interaction Toolkit 개요 VR 플러그인 - Unity에서 제작한 Unity XR 기반의 플러그인 - Teleportation이나 Interaction 등 VR의 일반적인 기능을 스크립트 없이 편하게 구현 - Unity에서 지원하는 PC와 Mobile 기반의

kjhcocomi.tistory.com

 

3. Interactor, Interactable 개념

Interaction : XR Interaction Toolkit의 핵심 기능

Interactor : Interaction을 시도하는 쪽

Interactable : Interaction이 되어지는 쪽

Interaction Manager가 이 기능들을 주관해서 실행한다.

 

XR Interaction Toolkit에서 제공해주는 Interactor 들

1. XR Direct Interactor : 직접적인 상호작용을 할 수 있게 해주는 컴포넌트 (오브젝트와 직접 닿아서 상호작용)

2. XR Ray Interactor : RayCast를 쏴서 상호작용을 할 수 있게 해주는 컴포넌트

 

 

XR Direct Interactor 만들어보기

전에 사용하던 컨트롤러들은 비활성화 시켜주고 Camera Offset 자식으로 XR - Direct Interactor 게임오브젝트를 생성한다.

게임오브젝트의 XR Controller 컴포넌트의 항목들이 비어있을텐데 Preset 버튼을 눌러서 XRI Defualt Left Controller를 선택해준다. (왼손으로 사용할 예정)

 

아까와 같이 Model Prefab에 만들어준 Model을 넣어주고 실행하면 위와 같은 화면이 나온다.

Direct Interactor을 만들면 Collider도 같이 생성이 되는데, 씬뷰의 초록색 원이 Collider의 범위이다.

이 범위 안에 Interactable 컴포넌트가 붙은 오브젝트가 들어오면 상호작용을 할 수 있다.

 

XR Interaction Toolkit에서 제공해주는 Interactable 중에 XR Grab Interactable이 있는데, 이 컴포넌트가 붙어있는 게임오브젝트를 집을 수 있게 해준다. 기본적으로 Rigidbody와 Collider가 붙어있어야 한다.

Cube 오브젝트를 만들고 XR Grab Interactable 컴포넌트를 추가하면 Rigidbody와 Collider가 자동으로 생성된다.

지금은 바닥이 없는 상태이기 때문에 중력에 의해 큐브가 떨어지지 않도록 RigidBody의 Use Grabity를 체크 해제해준다.

크기도 적당히 조절해준다.

 

실행을 하고 컨트롤러의 Collider 범위 안에 들어오도록 한 뒤 G키를 눌러보면

 

오브젝트를 잡은 것 처럼 큐브가 컨트롤러 중앙에 위치하는 것을 볼 수 있다.

그리고 Interactor와 Interactable의 Layer Mask를 맞춰줘야 상호작용이 가능하다.

유니티의 기본 Layer과는 별개로 XR Interaction Toolkit만의 Interaction Layers가 있다.

 

추가로 XR Grab Interactable은 오브젝트를 집으면 Interactor의 Attach Point쪽으로 당겨오는데 이 거리를 집을때의 거리로 그대로 유지하고 싶다면 XR Offset Grab Interactable 컴포넌트 등을 만들어서 사용한다.

기본적으로 제공되지는 않고 별개로 만들어야 하는 컴포넌트 이다. (다음 섹션 ETC 파트에서 다룰 예정)

 

Interactor 쪽의 Hide Controller On Select를 체크하면 오브젝트를 집었을 때 컨트롤러를 비활성화한다.

Select Action Trigger의 상태를 변경해서 사용할 수도 있다.

 

새로운 기능이 필요해서 Interactor와 Interactable을 커스터마이징 해야된다면 XR Base Interactor나 XR Base Interactable을 상속받아서 사용할 수 있다.