혼합 현실 기기
VR 기기(VR devices)

VR 개요

Unity VR lets you target virtual reality devices directly from Unity, without any external plug-ins in projects. It provides a base API and feature set with compatibility for multiple devices. It provides forward compatibility for future devices and software.

Unity의 네이티브 VR 지원을 사용하면 다음을 얻을 수 있습니다.

  • 각 VR 기기의 안정적인 버전
  • API 인터페이스 하나로 다양한 VR 기기와 상호작용 가능
  • 각 기기용 외부 플러그인이 없는 클린 프로젝트 폴더
  • 애플리케이션에 여러 기기를 포함시키고 기기 간에 전환할 수 있는 기능
  • Better performance (Lower-level Unity engine optimizations are possible for native devices)

Unity VR 지원 활성화

게임 빌드와 에디터에 대한 네이티브 VR 지원을 활성화하려면 Player Settings를 엽니다(메뉴: Edit > Project Settings > Player). XR Settings 를 선택한 다음 Virtual Reality Supported 체크박스를 선택합니다. 각 빌드 타겟마다 다음과 같이 설정합니다. 스탠드얼론 빌드에서 가상 현실 지원을 활성화해도 Android에 대한 지원은 활성화되지 않습니다(그 반대도 마찬가지).

Unity 에디터에서 Player Settings로 이동
Unity 에디터에서 Player Settings로 이동

Use the Virtual Reality SDKs list below the checkbox to add and remove VR devices for each build target. The order of the list is the order that Unity tries to enable VR devices at runtime. The first device that initializes properly is the one enabled. This list order is the same in the built player.

XR 설정을 통해 가상 현실 지원 활성화
XR 설정을 통해 가상 현실 지원 활성화

빌드된 애플리케이션: 시작 기기 선택

빌드된 애플리케이션은 XR Settings 에 있는 Virtual Reality SDKs 리스트와 같은 순서로 초기화 및 활성화됩니다(위의 VR 지원 활성화 참조). 빌드 시에 리스트에 없는 기기는 최종 빌드에 사용할 수 없습니다. None 기기는 비VR 애플리케이션(즉 일반 Unity 애플리케이션)과 같고, 리스트에 포함시키지 않아도 런타임 중에 전환할 수 있습니다. 이에 대한 예외가 None 입니다.

If you include None as a device in the list, the application can default to a non-VR application before it attempts to initialize a VR device. If you place None at the top of the list, the application starts with VR disabled. Then, you can then enable and disable VR devices that are present in your list through script using XR.XRSettings.LoadDeviceByName.

전환하려는 기기의 초기화에 실패하면 Unity는 해당 기기가 활성 VR 기기로 계속 설정된 상태에서 VR을 비활성화합니다. 기기를 전환(XRSettings.LoadDeviceByName)하거나 VR을 활성화(XR.XRSettings-enabled)하면 빌드된 애플리케이션이 초기화를 다시 시도합니다.

Use the following command line argument to launch a specific device:

-vrmode DEVICETYPE

입니다. 여기서 DEVICETYPE 은 지원되는 XR supported devices list에 있는 이름 중 하나입니다.

예: MyGame.exe -vrmode oculus

VR을 활성화하면 수행되는 작업

Unity에서 VR을 활성화하면 몇 가지 작업이 자동으로 수행됩니다.

HMD(헤드 마운트 디스플레이)로 자동 렌더링

All Cameras in your Scene can render directly to the head-mounted display (HMD). Unity automatically adjusts View and Projection matrices to account for head tracking, positional tracking and field of view.

Camera 컴포넌트의 stereoTargetEye 프로퍼티를 사용하여 HMD로 렌덩하는 기능을 비활성화할 수 있습니다. 그 대신 Target Texture 프로퍼티를 사용하여 카메라를 렌더 텍스처로 설정할 수 있습니다.

  • Use the stereoTargetEye property to set the Camera to only render a specific eye to the HMD. This is useful for special effects such as a sniper scope or stereoscopic videos. To achieve this, add two Cameras to the Scene: one targeting the left eye, the other targeting the right eye. Set layer masks to configure what Unity sends to each eye.

자동 헤드 트래킹 입력

Unity automatically applies head tracking and the appropriate field of view (FOV) to the Camera if the target device is head-mounted. You can manually set the FOV to a specific value, but you cannot set the Camera’s transform values directly. See the section below on Understanding the Camera to learn more.

Automatic head tracking and positional tracking ensures that the position and orientation most closely match the user’s position and orientation before Unity renders the frame. This gives a good VR experience, and prevents the user from experiencing nausea.

Understand the Camera

Unity overrides The Camera Transform with the head-tracked pose. To move or rotate the Camera, attach it as a child GameObject of another GameObject. This makes it so that all Transform changes to the parent of the Camera affect the Camera itself. This also applies to moving or rotating the camera using a script.

메인 카메라를 게임 오브젝트의 자식으로 지정
메인 카메라를 게임 오브젝트의 자식으로 지정

카메라의 포지션과 오리엔테이션을 사용자가 중립 포지션에서 보는 위치라고 생각해야 합니다.

앉아서 느끼는 VR 경험과 룸 스케일 VR 경험은 차이가 있습니다.

  • 기기가 룸 스케일 경험을 지원하는 경우 카메라의 시작 포지션은 사용자 플레이 공간의 중앙입니다.
  • 앉아서 경험하는 경우 XR.InputTracking.Recenter()를 사용하여 카메라를 중립 포지션으로 재설정할 수 있습니다.

기기에 렌더링하는 각 카메라는 자동으로 카메라의 FOV를 사용자가 각 VR SDK에 대한 소프트웨어 설정에 입력한 FOV로 바꿉니다. 사용자는 런타임 중에 시야각을 변경할 수 없습니다. 이 동작은 멀미를 유발하는 것으로 알려져 있기 때문입니다.

에디터 모드(Editor Mode)

VR 기기가 Unity 에디터 모드를 지원하는 경우 에디터에서 Play를 눌러 기기에서 직접 테스트할 수 있습니다.

The left eye renders to the Game View window if you have stereoTargetEye set to left or both. The right eye renders if you have stereoTargetEye set to right.

왼쪽 및 오른쪽 눈을 자동으로 나란히 표시하는 뷰는 없습니다. 게임 뷰에서 좌우를 나란히 보려면 카메라를 2개 만들고 하나를 왼쪽 눈으로 설정하고 다른 하나를 오른쪽 눈으로 설정하고 둘을 나란히 표시하도록 뷰포트를 설정합니다.

Note that there is overhead to running in the Editor, because Unity IDE needs to render each window, so you might experience lag or judder. To reduce editor rendering overhead, open the Game View and enable Maximize on Play.

The Unity Profiler is a helpful tool to get an idea of what your performance should be like when it runs outside of the Editor. However, the profiler itself also has overhead. The best way to review game performance is to create a build on your target platform and run it directly. You can see the best performance when you run a non-development build, but development builds allow you to connect the Unity profiler for better performance profiling.

Unity에서 VR을 개발하는 데 권장되는 하드웨어 및 소프트웨어

하드웨어(Hardware)

좋은 VR 경험을 위해서는 타겟 HMD와 유사한 프레임 속도를 실현하는 것이 필수적입니다. 프레임 속도는 HMD에서 사용되는 디스플레이의 새로고침 속도와 일치해야 합니다. 프레임 속도가 HMD의 새로고침 속도보다 낮아지면 현저하게 눈에 띄고 플레이어가 종종 멀미를 느낍니다.

아래 표에는 일반적인 VR 헤드셋에 대한 기기 새로고침 속도가 나와 있습니다.

VR Device Refresh Rate
Gear VR 60hz
Oculus Rift 90hz
Vive 90hz

소프트웨어

  • Windows: Windows 7, 8, 8.1, 및 Windows 10가 모두 호환됩니다.

  • Android: Android OS 롤리팝 5.1 이상

  • OS X: OSX 10.9+와 Oculus 0.5.0.1 런타임이 호환됩니다. 하지만 Oculus는 OS X 개발 일시 중단했으므로 Unity의 네이티브 VR 기능에는 Windows를 사용해야 합니다.

  • 그래픽 카드 드라이버: 드라이버를 항상 최신 버전으로 유지해야 합니다. 모든 기기는 최신 드라이버 버전으로 유지되므로 오래된 드라이버는 지원되지 않을 수 있습니다.

기기 런타임 요구 사항

각 VR 기기에 해당하는 런타임이 컴퓨터에 설치되어 있어야 합니다. 예를 들어 Unity에서 Oculus를 개발하고 실행하려면 Oculus 런타임(Oculus 홈이라고도 함)이 컴퓨터에 설치되어 있어야 합니다. Vive를 사용하려면 Steam과 SteamVR이 설치되어 있어야 합니다.

Depending on what version of Unity you are using, the runtime versions for each specific device that Unity supports may differ. You can find runtime versions in the release notes of each major and minor Unity release.

일부 버전 업데이트 후에는 이전 런타임 버전이 더 이상 지원되지 않습니다. 그러면 이전 런타임 버전에서 네이티브 Unity 지원이 불가능하지만 새 런타임 버전에서는 계속 가능합니다.

Unity native VR support does not read plug-ins from within your project’s folder, so including earlier versions of the plug-in with native support fails if you have VR support enabled. If you wish to use an earlier version with a release of Unity that no longer supports that version, disable Native VR Support (go to XR Settings and uncheck Virtual Reality Supported). You can then access the plug-in like any other 3rd party plugin. See the section above on Enabling Unity VR Support for more details.

혼합 현실 기기
VR 기기(VR devices)