가상현실을 뜻하는 Virtual Reality를 뜻한다.
VR의 특징은 다음과 같은 세 가지가 있다. 있다.
교육, 의료, 건축. 엔터테인먼트, 산업, 소셜 커뮤니티 등에 활용될 수 있다.
Meta Quest 2를 사용하기 위해서 Meta Quest 링크 앱을 다운받아 보자.
설치를 하고 나면 설정에서 알 수 없는 출처의 앱이 실행되도록 해야 한다.
그 다음 메타 퀘스트를 케이블로 연결하여 페이링을 하자.
특히나 조금 불편했던 것이 Meta Quest 2를 사용하기 위해서 핸드폰 앱 설치가 필수라서, 핸드폰 앱으로도 페어링을 한 후에 사용할 수 있었다.
처음 연동을 하면 이와 같은 화면이 뜨며, 아래 앱에서 연동하여 페어링하면 다음과 같은 초기화면이 뜬다.
이 부분이 생각보다 애를 먹었던 구간인데, 이와 같이 컴퓨터와 메타 퀘스트를 연결한 후, 유니티를 연결하기 위해선 한 가지 더 신경 써야 할 부분이 있다.
미리 테스트용 씬을 가져왔지만, 이것 그대로 유니티에서 실행시키면 바로 연결이 되지 않았다.
이걸 실제로 VR 컨트롤러로 작동시키기 위해선, 착용 중 아래 기능이 활성화 된 상태여야 한다.
이 상태에서 VR기기를 쓴 다음, 설정 창에서 PC 연결을 한다.
이후 유니티에서 게임을 실행시키면 실제 VR이 연결된 게임을 할 수 있다.
프로젝트를 세팅하는 방법은 크게 두 가지가 있다.
첫 번째는 아래와 같이 VR로 바로 세팅하는 방법이다.
하지만 기존에 바로 VR로 생성하지 않았을 경우, 추가로 아래의 패키지와 샘플을 설치해준다.
다음으로 Project Setting을 살피면서, 이와 같이 설정해준다.
VR기기는 헤드셋과 양 손의 컨트롤러 각각의 컴포넌트를 신경 써야 할 것이다.
이 부분을 하나하나 세팅하는 과정은 어렵다기 보다는, 굉장히 시간이 걸리는 과정이 될 것이다.
이런 스크립팅의 과정 대신, 컨트롤러 조작만을 알아보기 위해서 샘플로 제공되는 XR Interaction Setup을 활용하고자 한다.
XR Interaction Setup은 앞에서 Unity 패키지로 받을 수 있었던 XR Interaction Toolkit에서 제공되는 구성 프리팹이다.
구성요소를 살펴 보면 XR Interaction Manager와, XR Origin, Main Camera까지 다 있으므로 추가로 구성요소를 넣지 말고 이것만으로 테스트를 해 보자.
다만 계속 VR을 사용한 상태로 테스트하긴 어려울 수 있으므로, XR Interaction Toolkit에서 제공하는 또 다른 프리팹인 XR Device Simulator까지 사용해보자.
이 프리팹은 키보드나 마우스의 움직임도 컨트롤러처럼 입력될 수 있도록 전환하는 프리팹이다.
이것까지 추가하고서 씬을 재생해보면, 마치 컨트롤러를 든 것처럼 컨트롤 할 수 있는 것을 확인할 수 있다.
여기서도 자세히 알아야 할 점은 Locomotion System과 Interactor이다.
유니티 메뉴얼에서 Locomotion에 대해 검색하고 변역하면 이와 같이 설명하고 있다.
이 메뉴얼의 내용을 살펴 보면 사용 방법에 대해 알 수 있다.
간략하게 내용을 살펴보면 아래와 같다.
Locomotion System 하위에는 이와 같이 행동에 대한 컴포넌트를 가지고 있다. 이와 같은 행동에 대한 정의를 컨트롤러에 전하는 역할을 한다.
그리고 이를 연속적으로 처리할지, 아니면 텔레포트처럼 비연속적으로 처리할지를 정하는 역할을 한다.
이와 같이 컨트롤러를 보면 Locomotion Setting이 있고, 해당 세팅에 따라 플레이어의 조작이 연속적으로 나타날지 텔레포트 형식으로 나타날 지 확인할 수 있다.
ex) 대체로 VR의 경우 왼손 조이스틱으로는 걷는 듯한 모션을 줄 수 있고, 오른손 조이스틱으로는 화면 전환을 할 수 있다. 걷는 듯한 모션은 VR을 할 때 멀미를 일으키는 요소가 될 수 있으므로 이동 시에는 몰입감 혹은 연출 상 필요하지 않은 경우, Teleport와 같은 방식을 섞어주는 것이 좋다.
텔레포트를 할 때 지점을 결정해 줘야지 해당 지점으로 이동할 수 있다.
이 부분을 지정하는 방법을 간단히 알아보자.
텔레포트를 할 평면을 만들고, Teleportation Anchor를 추가한다.
여기서 Interaction Layer Mask에 teleport가 들어가게 레이어를 설정한다.
이와 같이 만들고 테스트를 진행해보자.
텔레포트는 만들 당시의 상자가 있는 위치로 텔레포트가 된다.
특정 상호작용을 일으키기 위한 컴포넌트이다.
컨트롤러에서도 이와 같이 다양한 인터렉터가 있으며 자주 사용하는 것을 설명하고자 한다.
버튼 입력 등에 따른 상호작용을 일으키넌 인터렉터이다. UI 상호작용 같은 것에 이용된다.
Ray를 쏘는 것보다 훨씬 가까이, 플레이어 충돌체에 닿아 있는 거리에 있는 가까운 물체에 대한 상호작용을 일으키는 인터렉터이다.
아무래도 가장 많이 쓰일 인터렉터로, 플레이어의 컨트롤러 기준으로 Ray를 쏘아서 전방에 물체가 있는지를 인식하는 인터렉터이다.
Ray Interactor를 통해 물체와의 상호작용을 할 수 있다.
상호작용 가능한 물체를 인식하여 Ray가 파란색으로 바뀐 모습이다.
위에서 텔레포트 지점을 지정하는 방식에서도 사용했지만, 텔레포트를 위한 상호작용을 담당하는 인터렉터이다.