개요
유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정해야 한다.
23년 10월 스팀 기준으로 가장 많은 유저가 사용하는 VR 기기는 메타의 퀘스트 2이므로 퀘스트 2를 표준으로 유니티에서 VR 환경을 구축해 보자.
Steam 하드웨어 및 소프트웨어 설문조사
store.steampowered.com
유니티에서 메타 퀘스트와 연동하는 방법은 크게 2가지 있는 것으로 알고 있다.
1. *OpenXR 플러그인
2. 오큘러스 패키지(메타가 오큘러스를 인수)
*OpenXR : 가상현실 및 증강현실 플랫폼과 장치에 접근하기 위한 로열티 없는 개방형 표준
OpenXR 플러그인은 표준화 방법을 제공하며 복잡하지만 오큘러스 패키지는 한정적이며 간단하다는 차이가 있다.
본인은 OpenXR 플러그인 1.9.1 버전을 사용하여 연동해 보겠다.
XR - Unity 매뉴얼
XR은 다음 타입의 애플리케이션을 통칭하는 용어입니다.
docs.unity3d.com
! 시작 전 주의사항
OpenXR 플러그인의 호환성 문제로 유니티 2020 LTS 이상 버전을 추천한다.
Intel i7 프로세서와 Nvidia RTX 20 시리즈 그래픽카드 이상의 하드웨어를 권장하며 몇몇 GPU는 퀘스트 2 연동에 필수인 Meta Quest Link를 지원하지 않으니 확인하자.
Requirements to use Meta Quest Link
www.meta.com
OpenXR 플러그인 세팅
VR 개발에 최적화된 3D (URP) 템플릿으로 프로젝트를 생성
(본인은 2022.3.7f1 에디터 버전에서 진행함)
File > Build Settings
퀘스트 2는 안드로이드 기반이기 때문에 PC 도움 없이 기기에서만 작동하려면 안드로이드 플랫폼으로 설정해야 한다.
만약 그럴 경우 유니티 허브에서 안드로이드 플랫폼을 설치한다.
그다음 플랫폼을 안드로이드로 Switch Platform 버튼을 클릭하여 미리 변경한다.
(나중에 변경해도 상관없지만 처리할 데이터 양 때문에 시간이 걸린다.)
Window > Package Manager
Unity Registry에서 XR Interaction Toolkit 패키지를 설치한다.
현재 최신 버전인 2.5.2 버전으로 진행했다.
패키지를 설치하면 재시작 여부를 물어보는데 재시작한다.
XR Interaction Toolkit > Samples
아래 2가지 샘플을 필요에 따라 임포트한다.
Starter Assets : VR 설정을 쉽게 해주는 에셋
XR Device Simulator : 키보드와 마우스로 VR 기기를 조작할 수 있는 시뮬레이터
Edit > Project Settings > XR Plugin Management
XR Plugin Management 플러그인을 설치한다.
(패키지 매니저에서 설치해도 무관하다.)
설치 후 PC 탭에서 OpenXR 옵션과 안드로이드 탭에서 Oculus 옵션을 체크한다.
(PC에서만 이용할 시 안드로이드 탭 체크 안 해도 됨)
XR Plug-in Management > Project Validation
설정하고 생긴 오류들을 Fix All 버튼을 클릭하여 수정한다.
(체크한 탭마다 수정한다.)
Project Settings > Player > Identification > Minimum API Level
API level이 23 이상인지 확인
(23 미만은 퀘스트 2에서 작동 안 함)
XR Plug-in Management > OpenXR
사용할 플랫폼 탭에서 Interaction Profiles에 Oculus Touch Controller Profile과 Meta Quest Touch Pro Controller Profile을 추가한다.
그리고 OpenXR Feature Groups에서 Hand Interaction Poses 기능을 체크한다.
그 외 필요함에 따라 사용할 기능을 체크한다.
각 기능에 대한 설명과 예제는 아래 페이지에서 확인할 수 있다.
[Unity] OpenXR Feature Groups 기능 문서 정리
OpenXR 기능에 대한 문서 OpenXR Features | OpenXR Plugin | 1.9.1 OpenXR Features OpenXR is an extensible API that can be extended with new features. To facilitate this within the Unity ecosystem, the Unity OpenXR provider offers a feature extension m
teinoi.tistory.com
개발 환경 세팅
PC 개발 환경에서 VR 기기를 사용하기 위해 *XR Origin과 시뮬레이터를 세팅해 보겠다.
(시뮬레이터는 XR Device Simulator 샘플을 임포트한 경우에만 사용 가능)
XR Origin : 카메라와 컨트롤러가 포함된 트래킹 공간의 중심
XR 원점 - Unity 매뉴얼
XR 원점은 XR 씬에서 트래킹 공간의 중심 역할을 합니다.
docs.unity3d.com
a-1. XR Origin 자동 세팅 방법
XR Interaction Toolkit > 2.5.2 > Starter Assets > Prefabs
XR Interaction Setup 프리팹을 하이어라키 뷰에 복제하면 세팅된 XR Origin과 컨트롤러 등을 사용할 수 있다.
a-2. XR Origin 수동 세팅 방법
하이어라키 뷰에 XR > XR Oring (VR) 생성
XR Interaction Manager와 XR Origin (XR Rig)의 자식으로 카메라와 컨트롤러 오브젝트가 자동 생성된다.
각 컨트롤러 오브젝트의 XR Controller 스크립트 컴포넌트 우측에 있는 Select Preset 버튼을 클릭한다.
스크립트 항목을 자동으로 할당하기 위해 각 컨트롤러에 맞는 프리셋을 선택한다.
XR Origin (XR Rig) 오브젝트에 Input Action Manager 스크립트가 있는지 확인한다.
(없으면 추가)
b. XR 기기 시뮬레이터 추가
XR Interaction Toolkit > 2.5.2 > XR Device Simulator > Prefabs
XR Device Simulator는 키보드와 마우스를 VR 기기를 사용하는 것처럼 작동하게 해 준다.
XR Device Simulator 프리팹을 하이어라키 뷰에 복제한다.
하이어라키 뷰에서 이미 있던 메인 카메라를 비활성화하거나 삭제하고 조작 여부를 쉽게 확인하기 위해 Plane 오브젝트를 만든다.
실행하면 위 이미지같이 양손 컨트롤러와 시뮬레이터 UI가 나타난다.
간단한 조작법은 다음과 같다.
커서 숨김 : \
이동/회전 모드 전환 : R
이동 : W, S, A, D, Q, E
카메라(HMD) 조작 : Mouse Right
왼손 컨트롤러 조작 : Left shift
오른손 컨트롤러 조작 : Space bar
유니티 퀘스트 2 연동
퀘스트 2를 PC에서 연결하면 사용해야 하는 전용 소프트웨어(오큘러스 앱)를 설치한다.
Quest 설정하기: Quest, Quest 2, Link, Rift S 및 Rift | Meta Quest
PC에 VR 소프트웨어를 다운로드하여 Meta Quest Rift S 및 Meta Quest Rift를 설정하세요. 휴대폰에 Meta Quest 모바일 앱을 다운로드하여 Meta Quest 및 Meta Quest Go를 설정하세요.
www.meta.com
설치가 되면 PC와 퀘스트 2를 연동한다.
(본인은 Air Link로 연동하여 진행)
1-1. Quest Link로 연동 방법
Set up Meta Quest Link
www.meta.com
1-2. Air Link로 연동 방법
Connect Meta Quest to your PC over Wi-Fi with Air Link
www.meta.com
오큘러스 앱에서 다른 프로그램이 실행될 수 있게 알 수 없는 출처를 허용하고 호환성을 위해 OpenXR Runtime을 활성화한다.
(본인 같은 경우 비활성화하면 몇몇 VR 게임에서 화면 흔들림 같은 오류가 발생했다.)
유니티에서 퀘스트 2 연동 테스트
이제 유니티에서 XR Origin을 세팅한 씬을 실행하면 정상적으로 작동하는 모습을 볼 수 있다.
직접 VR 기기를 사용할 거라면 하이어라키 뷰에서 XR Device Simulator 오브젝트를 비활성화해야 작동한다.
퀘스트 2 화면에서 작동을 안한다면 게임 뷰가 퀘스트 2 화면에 인식되는지 확인하자.