Version: 2021.1
XR 플러그인 프레임워크
XR의 유니버설 렌더 파이프라인 호환성

XR용 Unity 프로젝트 설정

XR용 Unity 프로젝트를 설정하려면 다음 단계를 따르십시오.

  1. Project Settings 창(메뉴: Edit > Project Settings)을 열고 XR Plug-in Management를 선택합니다.
  2. 패키지가 아직 설치되지 않았다면 Install XR Plug-in Management를 클릭합니다. 또는 Package Manager 창에서 설치할 수도 있습니다.
  3. 설치가 완료되면 Plug-in Provider를 선택하여 해당 빌드 타겟에 대해 활성화합니다. 이렇게 하려면 다음 단계를 따르십시오.
    1. 빌드 타겟(예: Android)을 선택합니다
    2. 해당 빌드 타겟에 사용할 각 플러그인의 왼쪽에 있는 체크박스를 선택합니다.
  4. 플러그인이 로드되면 왼쪽 내비게이션 창의 XR Plug-in Management 아래에 표시됩니다. 플러그인을 클릭하여 각 빌드 타겟에 대한 설정을 지정합니다.
  5. 추적을 설정하려면 Unity의 메인 메뉴에서 GameObject > XR > Add XR Rig으로 이동합니다.

참고:

  • XR 플러그인 공급자를 선택하면 해당 공급자가 해당 빌드 타겟에 대해 활성화됩니다. 플러그인 패키지가 아직 없다면 Unity가 자동으로 설치합니다.
  • 플러그인을 비활성화해도 기존 패키지는 자동으로 제거되지 않습니다. 패키지 관리자에서 공급자 플러그인을 제거하십시오.
  • 타사 플러그인 리스트의 경우 [VR 개요](Getting Started with VR Development)를 참조하십시오.

XR 플러그인 프레임워크에서 추적 설정

2019.3 이전 Unity 버전에서 사용되었던 암시적 카메라 추적이 새로운 XR 플러그인 프레임워크에서 제거되었습니다. 암시적 추적은 간단한 HMD 전용 애플리케이션에서는 작동했지만, 컨트롤러 및 기타 상호작용과 함께 사용할 때는 직관적이지 않았습니다.

XR 추적이 XR 플러그인 프레임워크에서 올바르게 설정되었는지 확인하려면 아래 단계를 따르십시오.

새 씬에서 시작

아래 지침은 새 씬에서 또는 다음 조건을 충족하는 씬에서 시작하는 경우에 적용됩니다.

  • 씬에 하나의 카메라만 있고, 해당 카메라는 메인 카메라로 태그가 지정되어 있습니다.
  • 씬의 카메라가 계층 구조의 루트에 있습니다.

Unity의 메인 메뉴에서 GameObject > XR > Add XR Rig으로 이동하십시오. 그러면 XR 플러그인 프레임워크를 올바르게 지원하는 씬으로 새 씬을 변환하려고 시도합니다.

콘솔 로그에 아무 오류도 보이지 않으면 씬에서 Play를 클릭할 수 있습니다. 그러면 카메라가 XR 플러그인 관리 패키지에서 설정된 기기에 대해 추적하는 것을 볼 수 있습니다.

Unity가 씬을 올바르게 마이그레이션할 수 없으면 콘솔 로그에 오류가 표시됩니다. 아래의 기존 씬에서 시작 섹션에 있는 지침을 따르십시오.

기존 씬에서 시작

기존 씬에서 마이그레이션하는 경우에는 빈 씬에서 마이그레이션할 때에 비해 몇 가지 단계가 추가됩니다. 따라서 씬의 설정 방식에 따라 다른 옵션이 존재합니다. 전반적인 목표는 XR 플러그인 프레임워크로 마이그레이션하기 전과 동일한 방식으로 씬을 추적하도록 만드는 것입니다.

씬 타입 식별

메인 카메라로 태그가 지정된 씬에서 카메라를 찾으십시오. Unity는 이 카메라를 사용하여 HMD 또는 다른 메인 기기에 렌더링합니다.

메인 카메라 게임 오브젝트의 위치를 확인하고 해당 단계를 수행하십시오.

  • 프로젝트 계층 구조의 루트에 있는 경우 단순한 씬을 마이그레이션하기 위한 단계를 따르십시오.
  • 프로젝트 계층 구조의 루트에 없는 경우 복잡한 씬을 마이그레이션하기 위한 단계를 따르십시오.

단순한 씬 마이그레이션

단순한 씬을 마이그레이션하려면 아래 단계를 따르십시오.

1. XR 릭 프리팹의 인스턴스를 생성합니다.

이전에 씬 계층 구조의 루트에 있던 카메라를 마이그레이션하면 이 패키지에 포함된 XR 릭 프리팹을 인스턴스화하여 기존 카메라를 XR 릭으로 변경할 수 있습니다.

이 프리팹은 Packages/XR Legacy Input Helpers/Prefabs 폴더에서 찾을 수 있습니다. 프리팹을 씬 계층 구조로 드래그하여 해당 프리팹의 새 인스턴스를 생성하십시오.

2. 카메라의 위치와 일치하도록 XR 릭을 이동시킵니다.

이제 XR 릭 프리팹의 인스턴스가 있으므로, XR 릭 게임 오브젝트를 설정하여 애플리케이션이 시작될 때 결과 카메라 포지션이 정확하도록 만들어야 합니다.

XR 릭 게임 오브젝트의 포지션과 회전을 변경하여 현재 메인 카메라의 포지션에 일치시키십시오. 메인 카메라에 스케일 변환을 적용하는 경우 이 스케일을 XR 릭 게임 오브젝트에도 적용해야 합니다. XR 릭을 스케일하는 경우 세 축 모두에서 균일한 스케일을 사용할 것을 적극 권장합니다.

3. 필요한 경우 포지션 변경을 복제합니다.

마이그레이션되지 않은 씬의 메인 카메라가 바닥 위에 있는 경우(Y 컴포넌트가 > 0.0f) 이 포지션 변경을 복제해야 합니다. 복제하려는 변경의 원래 포지션에 따라 몇 가지 다른 방식으로 이러한 작업을 수행할 수 있습니다.

3.1 - 카메라를 들어올려서 사용자의 키를 시뮬레이션합니다.

이전 메인 카메라를 바닥 위로 들어올려 사용자의 키를 시뮬레이션하고 애플리케이션이 기기 추적 원점(때때로 “정지 상태” 추적 모드라고도 불림)을 사용하는 경우 Camera Offset 컴포넌트가 이러한 들어올리기를 수행합니다. 그렇지 않으면 다음 섹션을 참조하십시오.

애플리케이션이 기기 추적 원점 모드에서 사용될 때 카메라가 수직으로 올라가도록 설정하려면 XR 릭 게임 오브젝트의 Camera Offset 컴포넌트에서 다음 옵션을 설정하십시오.

옵션
Requested Tracking Mode 디바이스
Camera Y Offset 사용자 키를 시뮬레이션하기 위해 기존 메인 카메라를 올리는 높이로 이 옵션을 설정합니다.

이 옵션을 설정한 후 XR 릭 게임 오브젝트의 Y Position 포지션을 애플리케이션에서 “바닥”으로 간주하는 값(대개 0.0f)으로 변경하십시오. Camera Offset 컴포넌트가 필요에 따라 추가 들어올리기를 추가합니다.

3.2 - 들어올리기를 통해 카메라 포지션을 표시합니다.

마이그레이션되지 않은 씬이 바닥 추적 원점(예전에는 “룸 스케일” 추적 모드라고 불림)을 사용하고 메인 카메라의 포지션이 사용자의 키를 포함하지 않고 사용자의 시작 지점을 나타내는 경우(즉 카메라가 사실상 논리적 “바닥”에 있는 경우) 다음 단계를 따라 씬을 올바르게 마이그레이션하십시오.

  • Unity 월드 공간에서 메인 카메라의 현재 포지션 및 회전과 일치하도록 XR 릭를 이동시킵니다.
  • 애플리케이션이 바닥 추적 원점을 사용하는 경우 Camera Offset 컴포넌트의 Requested Tracking Mode를 Floor로 설정하십시오. 그러면 카메라가 올바른 수직 오프셋을 사용합니다.
  • 애플리케이션이 바닥 추적 원점을 사용하지 않는 경우 Camera Offset 컴포넌트의 Requested Tracking Mode를 Default로 설정하십시오. 그러면 애플리케이션이 시작하는 기기 추적 모드에 관계없이 올바른 동작을 적용합니다.
  • 이전에 다른 컴포넌트를 사용하여 카메라를 수직으로 이동시키고 기기 추적 원점과 바닥 추적 원점 간의 차이를 처리한 경우 다른 컴포넌트가 카메라를 여러 번 잘못 이동시키지 못하도록 이 컴포넌트를 비활성화하거나 수정해야 할 수 있습니다.

다음으로, XR 릭 인스턴스에서 메인 카메라 게임 오브젝트를 삭제하고, 기존 메인 카메라 게임 오브젝트를 카메라 오프셋 게임 오브젝트의 부모로 지정하십시오.

메인 카메라 게임 오브젝트의 포지션과 회전이 모두 0,0,0인지 확인하십시오. 카메라의 포지션을 변경하는 것이 아니라, 언제나 XR 릭 게임 오브젝트의 포지션을 변경해야 합니다. 또한 게임 오브젝트 또는 컴포넌트에서 카메라로의 연결이 여전히 올바른지도 확인해야 합니다.

5. XR용 프로젝트를 설정합니다.

위의 XR용 Unity 프로젝트 설정 섹션을 참조하십시오.

6. Play를 누릅니다.

이제 씬이 성공적으로 마이그레이션되었으므로 Play를 누르고 카메라의 시작 위치가 XR 플러그인 프레임워크로 마이그레이션하기 전과 같은지 확인합니다. 그렇지 않은 경우 아래의 문제 해결 섹션을 참조하십시오.

복잡한 씬 마이그레이션

현재 씬이 레거시 VR 시스템의 암시적 카메라 추적을 사용하고 메인 카메라가 게임 오브젝트 계층 구조의 일부인 경우 다음 단계에 따라 레거시 VR 추적 시스템을 XR 플러그인 프레임워크로 마이그레이션하십시오.

암시적 카메라 업데이트는 메인 카메라 게임 오브젝트의 로컬 트랜스폼을 프레임마다 두 번씩 업데이트하여, 메인 카메라 게임 오브젝트가 위치했던 계층 구조의 포지션, 크기 및 회전을 기준으로 이동하도록 만들었습니다.

이 시나리오에서는 다음의 두 가지 옵션으로 씬을 마이그레이션할 수 있습니다.

  1. 기존 계층 구조는 그대로 두고, 컴포넌트를 추가하여 현재 계층 구조에서 추적을 활성화합니다.
  2. XR 릭 구조를 사용하도록 기존 계층 구조를 마이그레이션합니다.

일반적으로 씬에 이 계층 구조를 사용하는 기능이 있는 경우 기존 계층 구조를 그대로 두는 것이 좋습니다. 설정이 비교적 간단한 경우라면 XR 릭으로 직접 마이그레이션할 수 있습니다.

그대로 두기

이 방식은 기존 씬 계층 구조를 최소한으로 수정하여 Unity 내에서 추적을 활성화합니다. 또한 씬의 메인 카메라에 추적 포즈 드라이버를 추가합니다. 이렇게 하면 현재 게임 오브젝트 계층 구조를 필요로 하는 다른 모든 기능이 이전처럼 계속 작동합니다.

1. 메인 카메라를 찾은 후 추적 포즈 드라이버를 추가합니다.

씬에서 메인 카메라를 찾으십시오.

XR 릭의 메인 카메라가 사용하는 것과 동일한 설정을 사용하여 추적 포즈 드라이버를 추가하십시오. 아래 스크린샷에는 이러한 설정이 나와 있습니다.

Tracked Pose Driver 설정
Tracked Pose Driver 설정

씬의 모든 메인 카메라에 대해 이 작업을 수행합니다. 씬 내에서 다른 기기를 추적해야 하는 경우 Tracked Pose Driver 설정에서 해당 사용 사례에 대한 올바른 옵션을 찾으십시오.

2. XR용 프로젝트를 설정합니다.

위의 XR용 Unity 프로젝트 설정 섹션을 참조하십시오.

3. Play를 누릅니다.

이제 씬이 성공적으로 마이그레이션되었으므로 Play를 누르고 카메라의 시작 위치가 XR 플러그인 프레임워크로 마이그레이션하기 전과 같은지 확인합니다. 그렇지 않은 경우 아래의 문제 해결 섹션을 참조하십시오.

XR 릭으로 마이그레이션

사용 가능한 계층 구조가 무한하기 때문에 Unity는 XR 릭을 사용하기 위해 현재 씬 계층 구조를 마이그레이션하는 특정 단계를 제공할 수 없습니다. XR 릭이 표현하려는 대상에 대해 이해하려면 레거시 입력 도우미 패키지 문서의 XR 릭 설명 섹션을 참조하십시오. 이를 통해 기존 계층 구조를 XR 릭 내의 개념에 매핑할 수 있습니다.

씬이 XR 관리를 사용하도록 설정하려면 위의 XR용 Unity 프로젝트 설정 섹션을 참조하십시오.

여전히 문제가 있는 경우 아래의 문제 해결 섹션을 참조하십시오.

문제 해결

문제 가능한 원인
카메라가 씬에서 너무 높이 있음 Camera Offset 컴포넌트의 Requested Tracking Mode가 올바르게 설정되었습니까??

Camera Y Offset이 너무 높게 설정되었습니까?
XR 플러그인 프레임워크
XR의 유니버설 렌더 파이프라인 호환성