VR (XR) reference
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 has been designed to provide forward compatibility for future devices and software.

Note: XR is an umbrella term which encompassess virtual reality (VR), augmented reality (AR), and Mixed Reality (MR). We are in the process of updating our XR documentation, but for now this documentation refers mainly to just VR.

Unity’s XR API has been updated to reflect the broader umbrella term “XR” but much of the documentation currently still uses the term “VR”. The XR API surface is minimal by design, but will expand as XR continues to grow.

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

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

Unity VR 지원 활성화

To enable native VR support for your game builds and the Editor, open the Player Settings (menu: Edit > Project Settings > Player). Select XR Settings and check the Virtual Reality Supported checkbox. Set this for each build target. Enabling virtual reality support in a standalone build does not also enable the support for Android (and vice-versa).

Navigating to Player Settings from the Unity Editor
Navigating to Player Settings from the Unity Editor

체크박스 아래에 표시되는 Virtual Reality SDK 리스트를 사용하여 각 빌드 타겟에 대해 VR 기기를 추가 및 제거합니다. 리스트 순서는 Unity가 런타임 시점에 VR 기기를 활성화하는 순서와 같습니다. 올바르게 초기화되는 첫 기기가 활성화된 기기입니다. 리스트 순서는 빌드된 플레이어에서도 동일합니다.

Enabling Virtual Reality Support through XR Settings
Enabling Virtual Reality Support through XR Settings

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

Your built application initializes and enables devices in the same order as the Virtual Reality SDKs list in XR Settings (see Enabling VR Support, above). Devices not present in the list at build time are not available in the final build. Device None is equivalent to a non-VR application (that is, a normal Unity application) and can be switched to during runtime without including it in the list; the exception to this is None.

Including None as a device in the list allows you to default to a non-VR application before attempting a VR device’s initialization. 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.

If initialization of the device you attempt to switch to fails, Unity disables VR with that device still set as the active VR device. When you switch devices (XRSettings.LoadDeviceByName) or enable XR (XR.XRSettings-enabled), the built application attempts to initialize again.

특정 기기를 실행하는 데 사용되는 커맨드 라인 인수는

-vrmode DEVICETYPE

where DEVICETYPE is one of the names from the supported XR supported devices list.

예: MyGame.exe -vrmode oculus

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

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

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

씬의 모든 카메라는 헤드 마운트 디스플레이(HMD)에 직접 렌더할 수 있습니다. 뷰 및 프로젝션 매트릭스는 헤드 트래킹, 포지션 트래킹 및 시야를 반영하여 자동으로 조정됩니다.

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

  • stereoTargetEye 프로퍼티를 사용하여 한쪽 눈만 HMD에 렌더링하도록 카메라를 설정할 수 있습니다. 저격수 총의 망원경이나 양안 비디오 같은 특수 효과에 유용합니다. 이렇게 하려면 씬에 카메라 2개를 추가합니다. 카메라 하나의 타겟은 왼쪽 눈이고 다른 하나의 타겟은 오른쪽 눈입니다. 레이어 마스크를 설정하여 각 눈으로 무엇을 보내는지 설정합니다.

자동 헤드 트래킹 입력

기기가 헤드에 마운트되지 않은 경우 헤드 트래킹과 해당 시야(FOV)가 자동으로 카메라에 적용됩니다. FOV를 수동으로 특정 값으로 설정할 수 있지만, 카메라의 트랜스폼 값을 직접 설정할 수는 없습니다. 자세한 내용은 아래의 카메라 이해 섹션을 참조하십시오.

포지션 및 오리엔테이션이 프레임 렌더 전의 사용자 포지션 및 오리엔테이션과 가장 가깝게 일치하도록 헤드 트래킹 및 포지션 트래킹이 자동으로 적용됩니다. 이는VR 경험을 개선시켜 사용자가 멀미를 느끼지 않게 합니다.

카메라 이해

카메라 트랜스폼은 헤드 추적 포즈로 오버라이드됩니다. 카메라를 이동 또는 회전하려면 다른 게임 오브젝트의 자식에 부착해야 합니다. 그러면 카메라의 부모에 적용된 모든 트랜스폼 변경이 카메라 자체에 영향을 미칩니다. 스크립트를 사용하여 카메라를 이동 또는 회전하는 경우에도 동일합니다.

Childing the Main Camera to a Gameobject
Childing the Main Camera to a Gameobject

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

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

  • 기기가 룸 스케일 경험을 지원하는 경우 카메라의 시작 포지션은 사용자 플레이 공간의 중앙입니다.
  • Using the seated experience, you can reset Cameras to the neutral position using XR.InputTracking.Recenter().

Each Camera that is rendering to the device automatically replaces the FOV of the Camera with the FOV that the user input in the software settings for each VR SDK. The user cannot change the field of view during runtime, because this behaviour is known to induce motion sickness.

에디터 모드(Editor Mode)

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

stereoTargetEye__가 왼쪽 또는 두 눈으로 설정된 경우 왼쪽 눈이 게임 뷰 창에 렌더링됩니다. stereoTargetEye__가 오른쪽으로 설정된 경우 오른쪽 눈이 렌더링됩니다.

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

에디터에서 실행하면 Unity IDE가 창을 각각 렌더해야 하므로 리소스가 더 많이 사용되어 래그나 흔들림이 발생할 수 있습니다. 에디터 렌더에 사용되는 리소스를 줄이려면 게임 뷰를 열고 __Maximize on Play__를 활성화합니다.

Unity 프로파일러는 에디터 밖에서 실행할 경우에 성능이 어떻게 될지 파악하는 데 유용한 툴입니다. 하지만 프로파일러 자체도 리소스를 많이 사용합니다. 타겟 플랫폼에서 빌드를 만들고 직접 실행하면 게임 성능을 가장 효과적으로 확인할 수 있습니다. 비개발 빌드를 실행하면 최고 성능을 얻을 수 있지만, 개발 빌드를 사용하면 Unity 프로파일러를 연결하여 프로파일링 성능을 높일 수 있습니다.

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

하드웨어(Hardware)

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

The table below lists the device refresh rates for common VR headsets:

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를 사용해야 합니다.

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

Device runtime requirements

Each VR device requires that you have appropriate runtime installed on your machine. For example, to develop and run Oculus within Unity, you need to have the Oculus runtime (also known as Oculus Home) installed on your machine. For Vive, you need to have Steam and SteamVR installed.

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

With some version updates, previous runtime versions are no longer supported. This means that native Unity VR support does not work with earlier runtime versions, but continues to work with new runtime versions.

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 will fail 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 (XR) reference
VR 기기(VR devices)