Version: 2017.1
HoloLens
싱글 패스 스테레오 렌더링(Single-Pass Stereo rendering)

Google VR

Google VR은 Google의 두 VR 플랫폼인 Daydream과 Cardboard를 모두 포함합니다. 각각의 요구 사항과 기능에 대한 자세한 내용은 Google VR 문서를 참조하십시오.

Google VR 애플리케이션은 Daydream을 사용하여 개발되고 있습니다. Unity용 Daydream은 Google VR 개발을 Unity 개발자들이 미리 사용할 수 있도록 제작된 기술 시험판입니다. 자세한 내용은 Google의 Daydream 문서를 참조하십시오.

이 페이지는 Daydream 개발에 적합하도록 Unity를 설정하는 단계별 가이드와 Daydream 개발을 수행하는 동안 필요한 정보를 제공합니다.

시작

Daydream의 최소 시스템 요구 사항은 Android API SDK 버전 21(“롤리팝”이라고도 함)입니다. 롤리팝이 없는 경우 Google Android 개발자 사이트에서 다운로드 받으십시오.

또한 Daydream이 활성화된 스마트폰이 필요합니다. Android 스마트폰을 Daydream 개발을 수행할 수 있도록 설정하는 방법은 Daydream 하드웨어에 대한 Google 문서를 참조하십시오.

Daydream 개발에 적합하도록 Unity 설정

  1. 메인 메뉴에서 Edit > Project Settings > Player 로 이동합니다.

  2. Android 로고를 클릭해서 Android에 빌드하기 설정을 적용합니다(아래 이미지에서 첫 번째 박스).

  3. Other Settings 를 열고, Rendering 섹션에서 Virtual Reality Supported 체크박스를 선택합니다.

Virtual Reality SDK라는 리스트가 나타납니다. 리스트 하단에 있는 더하기(+) 아이콘을 선택합니다.

드롭다운 메뉴에서 Daydream 을 선택하면 Virtual Reality SDKs 리스트에 표시됩니다. 옆에 있는 드롭다운 화살표를 선택해서 Daydream 설정을 확장합니다.

프로퍼티 기능
Depth Format 이 드롭다운 메뉴를 사용하면 Z 버퍼 뎁스를 설정할 수 있습니다. 뎁스 포맷은 가시 데이터를 정렬하고 화면에 무엇이 실제로 렌더링되는지 결정하는 데 사용할 수 있습니다.
Foreground Icon VR Google Play 스토어에서 표시할 전면 아이콘을 설정합니다.
Background Icon VR Google Play 스토어에서 표시할 후면 아이콘을 설정합니다.
Use Sustained Performance Mode 지속 성능 모드를 활성화하면 VR을 더 오래 실행할 수 있습니다. 지속 성능 모드를 활성화하면 배터리 수명을 향상시키기 위해 성능이 저하됩니다.

Daydream의 최소 플랫폼 요구 사항은 Android 7.0 Lollipop입니다(API level 21). Unity가 올바른 APK를 사용하고 Android 최신 버전으로 업그레이드된 디바이스에서만 작동하도록 하려면 Minimum API Level 을 변경합니다.

플레이어 설정에서 이 작업을 수행하려면__Other Settings__ 로 이동하여 IdentificationMinimum API Level 드롭다운 리스트에서 최신 API를 선택합니다.

Cardboard와 Daydream을 사용하려면 Target API Level 은 API level 21 이상으로 설정되어야 합니다. 기본적으로 이 프로퍼티는 설치된 최고 수준을 사용합니다. Android API Level에 대한 자세한 내용은 Android 플레이어 설정 문서를 참조하십시오.

이제 Daydream에 사용할 Unity 콘텐츠를 생성할 준비가 되었습니다. 일반적인 Android 개발 워크플로와 동일하게 작업을 진행하십시오. 자세한 내용은 Android 개발 문서를 참조하십시오. 게임을 빌드하고 실행하는 경우(메뉴: File > Build & Run) Daydream을 사용할 수 있는 스마트폰을 사용해야 합니다.

Unity용 Daydream으로 작업

Unity용 Daydream에서 작업을 진행할 때 다음의 사항을 참조하십시오.

  • 특정 디바이스에서 VR을 활성화하려면 디바이스를 로드할 때 daydreamcardboard 디바이스 이름을 사용합니다. 이는 VRSettings.LoadDeviceByName을 호출하고 디바이스의 스트링 이름 내에 패스하면 됩니다.

  • 렌더링은 순서대로, 하나 또는 두 개 너비의 텍스처에서 진행됩니다.

  • Unity용 Daydream을 사용하면 Unity 활동의 뷰 계층 구조가 무시됩니다. 이는 VR 모드에서는 Unity용 Daydream을 초기화하기 이전의 뷰 계층 구조에서 수정한 내용은 반영되지 않음을 의미합니다.

Daydream 및 Google Cardboard

DaydreamCardboardVirtual Reality SDKs 리스트에서 분리되어 있습니다. Unity는 작동하는 디바이스 설정을 찾을 때까지 리스트를 위에서 아래로 읽으므로, 리스트에 디바이스를 추가, 제거하거나 리스트 순서를 변경하면 빌드된 애플리케이션의 기능에 영향을 주게 됩니다.

  • Virtual Reality SDKs 리스트에서 CardboardDaydream 위에 있는 경우, 애플리케이션은 Daydream 하드웨어에서도 Daydream 모드로 작동하지 않을 수 있습니다.

  • Virtual Reality SDKs 리스트에 Daydream 만 있는 경우, VR 전용 Google Play 스토어에 앱이 나타날 수 있도록 VR Android Manifest가 리스트에 추가됩니다. Daydream은 비동기적 재투영을 요구하므로, Daydream을 지원하는 모든 디바이스는 비동기적 재투영을 지원합니다.

  • Virtual Reality SDKs 리스트에 Cardboard 만 있는 경우, 앱은 VR Google Play 스토어에 나타나지 않습니다. 비동기적 재투영과 지속 성능 모드는 지원 가능한 하드웨어에서도 활성화되지 않습니다.

  • Virtual Reality SDKs 리스트에 DaydreamCardboard 둘 다 있는 경우, 비동기적 재투영은 지원 가능한 하드웨어에서 실행되는 경우 활성화됩니다. 지속 성능 모드는 지원 가능한 하드웨어에서 실행되고 선택된 경우 활성화됩니다. 앱은 모든 Google Play 스토어에 나타나게 됩니다.

기타 VR SDK

  • Daydream과 Cardboard에 더불어 GearVR을 지원하려는 경우, 리스트 맨 위에 Oculus 를 위치시키십시오. GearVR을 지원하는 스마트폰은 GearVR SDK를 통해 실행할 것이며, 지원하지 않는 스마트폰은 Daydream이나 Cardboard를 통해 실행됩니다.

  • 리스트 맨 위에 None 을 추가하는 경우, Unity는 노멀 애플리케이션으로 실행되며, 스크립트를 통해 VR 모드로 전환할 수 있습니다. 자세한 내용은 VRSettings.enabledVRSettings.LoadDeviceByName API 문서를 참조하십시오.

매직 창(Magic Window) 모드

가끔은 양안 뷰를 적용하지 않은 상태로 헤드 트래킹 데이터를 얻고 싶을 때가 있습니다(예를 들어, VR에서 2D 이미지를 보거나, VR 애플리케이션의 2D 프리뷰를 제공해야 하는 경우). 이를 쉽게 진행하려면, VRSettings.enabled 값이 false이고 VRSettings.loadedDeviceName 값이 daydream 또는 cardboard인 경우에 헤드 트래킹 데이터에 액세스하면 됩니다.

예제:


UnityEngine.VR.VRSettings.enabled = false;
Camera.main.GetComponent<Transform>().localRotation = UnityEngine.VR.InputTracking.GetLocalRotation(VRNode.CenterEye);

자세한 내용은 VRSettings.LoadDeviceByName API 문서를 참조하십시오.

하드웨어 볼륨 제어

Unity용 Daydream은 네이티브 OS가 하드웨어 볼륨 제어를 처리하지 못하도록 합니다. 이는 VR 모드에서 OS가 볼륨 UI를 표시하지 못하도록 합니다. 하드웨어 볼륨 제어를 직접 처리하려면, 기본 UnityPlayerActivity를 확장한 후 직접 onKeyDownonKeyLongPress로 조절하십시오.

이에 대한 자세한 내용은 Android용 플러그인 문서를 참조하십시오.

Unity는 Daydream 컨트롤러의 볼륨 제어를 차단하지 않습니다.

Daydream이 제공한 Android 라이브러리 오버라이드

Unity용 Daydream은 Daydream 개발을 지원하기 위해 두 개의 라이브러리를 포함하고 있습니다.

  • Daydream 네이티브 라이브러리: gvr.aar

  • Google Protobuf Nano Java 라이브러리: libprotobuf-java-nano.jar

이들 라이브러리는 Assets/Plugins/Android 프로젝트 폴더에 위치한 동일한 이름을 가진 다른 버전의 라이브러리로 오버라이드할 수 있습니다. 단, 오버라이드를 올바르게 하려면 이름이 정확하게 일치해야 합니다.

API 지원

다음 API는 Unity용 Daydream에서 지원되지 않습니다.

  • VRSettings.showDeviceView

  • VRDevice.isPresent

  • VRDevice.refreshRate

  • VRStats.gpuTimeLastFrame

iOS용 Cardboard

Google은 Cocoapods 라이브러리 관리 시스템을 통해 iOS용 Cardboard NDK(Native Development Kit)를 배포합니다. Unity 에디터는 Cocoapods 관리자에서 배포한 해당 Cardboard NDK의 특정 버전과 통합되고, 이 NDK를 사용하여 XCode 프로젝트를 생성합니다. 즉, 일반 Unity 프로젝트에서 생성되는 프로젝트와 다르게 프로젝트가 생성됩니다. Cocoapods는 Unity 프로젝트와 Cardboard NDK 라이브러리용 프로젝트 및 그 종속성이 포함된 래핑 XCode 작업 영역을 생성합니다. 프로젝트뿐만 아니라 작업 영역도 항상 열거나 사용하여 Cocoapods에 없는 라이브러리로 인한 링커 오류를 방지해야 합니다.


• 2017–06–07 일부 편집 리뷰를 거쳐 페이지 수정됨

HoloLens
싱글 패스 스테레오 렌더링(Single-Pass Stereo rendering)