//구글콘솔 광고 추가가

 

 

XR Interaction ToolKit개념과 핵심 기능 2

6. Locomotion System, Provider

 

  • Locomotion System, ProviderLocomotion System : 프로바이더 관련 컴포넌트들의 이동 기능을 작동하도록 관리해주는 컴포넌트. provider컴포넌트를 작동하려면 씬 어딘가에 반드시 하나가 있어야 함.  + 딱 하나만 존재.
  • 한 게임오브젝트에 프로바이더컴포넌트와 로코모션시스템컴포넌트가 같이 있을 필요는 없지만 보통은 그냥 같이 둠.
프로바이더 관련 컴포넌트를 사용하여 작동하게 할수 있는 대표적 기능들
  • 일정거리를 한번에 이동할 수 있는 Teleportation 기능
  • 좌우나 뒤로 회전할 수 있는 Snap Turn
  • 지속적으로 이동할 수 있는 Continuous Move
  • 지속적으로 회전할 수 있는 Continuous Turn

이 provider들은 Locomotion Provider 클래스를 상속받은 클래스로, 만약 시스템 전역에서 사용하는 독특한 이동관련 제스처가 있다면 상속받아서 Custom Provider를 만들어서 사용하는 걸 추천.


 

7. Teleportation 

  • 현재 위치에서 지정한 위치로 즉각 이동하는 기능(직선이나 곡선을 그리는 광선으로 목표 위치를 선택하여 이동) 
  • XR Ray Interator : 직선 또는 곡선의 광선을 발사하여 부딪치는 대상에 원거리에서 인터랙션을 시도하는 컴포넌트. 같이 붙어있는 LineRenderer와 XR Interactor Line Visual컴포넌트를 이용해 ray를 시각화 함. Raycast Configuuration 옵션을 통해 광선을 어떤 모양으로 시각화 할지 선택 가능(라인 타입 : 직선, 곡선, 포물선)
XR Interactive Toolkit의 텔레포테이션 기능
  1. Teleportation Area : 설정한 영역 전체에 아무곳에나 텔레포테이션을 할 수 있게 해주는 컴포넌트.(설정한 컬라이더의 모든 표면의 위치로 이동할수 있는 기능.)
  2. Teleportation Anchor : 특정 지점으로만 텔레포트 할 수 있게 해주는 컴포넌트.(대상 오브젝트의 위치로 이동할 수 있는 기능.)

상황에 맞게 적절히 설치해두고 사용하게 되면 시나리오나 구역을 진행하는 형태로 게임을 만드는데 유용하게 쓰일 수 있음.


 

8. UI Interation

  • 유니티의 ui와 인터랙션 할 수 있는 기능. 기존의 유니티 ui를 만들고 추가로 약간의 설정만 하면 아주 쉽게 사용 가능.
  • 손 컨트롤러에 있는 XR Ray Interactor컴포넌트에 Enable Interation With Ui GameObject옵션 활성화 되어 있으면 유니티 ui와 인터랙션 시도함.
  • 캔버스 또한 Render Mode를 World Space로 설정.
  • Tracked Device Graphic Raycaster컴포넌트가 VR디바이스에 광선으로 캔버스를 인터랙션 해주는 애라 있어야 진행됨.(캔버스를 레이캐스팅을 해주는 컴포넌트)
정리 >> VR 디바이스의 광선으로 인터랙션 할 수 있는 설정
  1.  XR UI Input Module컴포넌트가 Event System에 같이 붙어있어야 함.
  2. 인터랙션을 원하는 캔버스에는 Tracked Device Graphic Raycaster컴포넌트를 붙여야 함.
  3. 손 컨트롤러의 XR Ray Interactor 컴포넌트에서 Enable Interaction with UI GameObject옵션을 활성화 함.

 

9. Haptic (진동)

  • 손 컨트롤러에 있는 XR Interactor컴포넌트에서 Haptic Events에서 활성화시키던지 스크립트에서 XR Controller컴포넌트를 찾아서 SendHapticImpulse() 함수 실행해서 실행해주면 됨.

 

10. XR Socket Interactor

  • 일반적으로 컨트롤러와 같이 사용하지 않고 별도의 공간에 설치하는 식으로 사용하는 Interactable을 꽂았다가 뺏다가 할 수 있는 Interactor.
  • Interactor를 가까이 가져다 대면 자동으로 select됬다가, 다시 집어서 빼면 Deselect가 되는 형태로 작동 함.
  • 보통 방탈출 게임같은 컨텐츠를 만들 때 열쇠(interactable)를 찾아서 열쇠구멍(XR Socket Interactor) 에다가 꽂는 형태로 사용.

 

 

728x90

XR Interaction ToolKit개념과 핵심 기능 1


  1. HMD, Controller Tracking

new scene >> standard(URP) create >> 씬이름 만들어서 씬폴더에 저장 >> 하이어라키에 우클릭 >> xr >> xr origin(Action-based) 게임오브젝트 생성

xr origin(Action-based) 게임오브젝트

  • xr origin오브젝트에 붙어있는 xr origin컴포넌트는 hdm이나 컨트롤러등 연동된 장비의 기준이 되는 오브젝트. 주로 VR이나 AR세계의 중심이나 헤드셋의 기준 높이 등을 설정할 때 사용됨. 일반적으로 HDM과 연동된 메인 카메라 게임오브젝트와 양손 컨트롤러와 연동된 게임 오브젝트 등을 자식으로 배치함.
  • 메인 카메라 오브젝트에 붙어 있는 Tracked Pose Driver 컴포넌트== Unity XR의 컴포넌트 선택한 디바이스의 위치와 방향을 가져옴(여기서는 HMD의 pos를 가져와 Transform에 적용. 즉 HMD의 pos가 메인 카메라의 pos와 동기화되는 상태.)
  • LeftHand, RightHand Controller오브젝트에 붙어있는 XR Controller 컴포넌트 == Unity XR Interaction ToolKit의 주요 컴포넌트 중 하나. 컨트롤러의 pos를 동기화하고, 그립버튼이나 트리거버튼 등의 액션이 발생하는 것을 연결해 주는 기능.(왼손 오른손 preset 연결 잘 돼 잇는지 확인 필요)  

2. Custom Controller Model

  • XR Origin 오브젝트의 자식 오브젝트 왼쪽 컨트롤러와 오른쪽 컨트롤러의 XR Controller컴포넌트 안에 모델프리팹에 원하는 프리팹을 연결시켜주면 화면에서 뜸.

3. Interactor & Interactable

  • Interactor : 인터랙션을 시도하는 쪽
  • Interactable : 인터랙션이 되어지는 쪽
  • Interaction Manager: 이 기능들을 주관해서 실행해 줌.

Interactor

  1. XR Direct Interactor : 직접적인 상호작용을 할 수 있게 해주는 컴포넌트(컨트롤러를 대상에 가져다 대어 집거나 하는 등의 인터랙션을 시도할 수 있는 컴포넌트). HIde Controller On Select옵션 체크 >> 오브젝트를 집었을 때(Select 했을 때) 컨트롤러 모델을 비활성화해 주는 옵션. Select Action Trigger를 state에서 Toggle이나 Sticky로 변경하면 Grip키를 누르고 있을 때 집히는 게 아니라 누르는 순간 집히고 다시 눌렀다, 뗄 때 떨어짐.

Interactable

  1. XR Grab Interactable : 이 컴포넌트가 붙어있는 게임오브젝트들은 집을수 있음. 기본적으로 rigidbody와 collider가 붙어있어야 함. **오브젝트를 잡으면 interactor의 Attach Point(Interactor 쪽으로 당겨져 오는 기능)의 거리를 집을 당시의 위치 그대로 유지하고 싶을 때 XR Offset Grab Interactable를 만들어서 사용하면 됨.

혹시나 새로운 기능을 추가 하고 싶어서 interactor와 Interactable을 커스터 마이징 해야 한다면 XR Base Interactor나 XR Base Interactable 등 기존의 클래스들을 상속받아서 재정의 하는 것을 추천.

 

5. Events

  • 어떠한 상황이 되었을 때 실행할 수 있는 기능을 연결할 수 있음.

XR Grab Interactable의 컴포넌트에서 Interactable Events

  • First, Last이벤트 :
  • 퍼스트 이벤트들은 여러 인터랙터들이 순차적으로 인터랙터를 했을 때 가장 먼저 들어온 인터랙터만 처리하는 이벤트고 거꾸로 라스트 이벤트들은 가장 마지막에 나간 인터랙터만 처리하는 이벤트.
  • Hover이벤트 : Interactor와 Interactable이 Overlap 되는 상황을 의미
  • Select이벤트 : Overlap상태에서 Select제스처를 하면 일반적으로는 Grip키를 누르면 Interactor가 Interactable을 Select 하게 됨.
  • Activate이벤트 : Select상태에서 Grip키를 누르고 있는 상태에서 Activate제스처를 하게 되면 발새하는 이벤트. 일반적으론 Trigger 키로 설정돼있음.

XR Interactor컴포넌트의 Interactor Events

(사용할 수는 없고(Activate 할 수 없음) Hover와 Select계열의 이벤트들만 연결할 수 있는 걸 볼 수 있음)

  • Hover Entered, Hover Exited
  • Select Entered, Select Exited
728x90

+ Recent posts