혼합 현실 기기
VR 기기

VR 개요

Unity VR을 사용하면 프로젝트에 외부 플러그인이 없어도 타겟 가상 현실 기기를 Unity에서 직접 지정할 수 있습니다. Unity VR은 여러 기기와 호환 가능한 베이스 API와 기능 집합을 제공하고, 미래의 기기 및 소프트웨어와의 호환성도 지원합니다.

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

  • 각 VR 기기의 안정적인 버전
  • API 인터페이스 하나로 다양한 VR 기기와 상호작용 가능
  • 각 기기용 외부 플러그인이 없는 클린 프로젝트 폴더
  • 애플리케이션에 여러 기기를 포함시키고 기기 간에 전환할 수 있는 기능
  • 성능 개선(네이티브 기기의 하위 수준 Unity 엔진 최적화 가능)

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 doesn’t also enable the support for Android (and vice-versa).

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 in which 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 설정을 통해 가상 현실 지원 활성화

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

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; the exception to this is None. 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.

None 을 리스트에 기기로 포함시키면 애플리케이션은 VR 기기 초기화를 시도하기 전에 비VR 애플리케이션으로 재설정될 수 있습니다. None 을 리스트 맨 위에 놓으면 VR이 비활성화된 상태로 애플리케이션이 시작됩니다. 그러면 리스트에 있는 VR 기기를 XR.XRSettings.LoadDeviceByName을 사용하여 스크립트를 통해 활성화 및 비활성화할 수 있습니다.

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

다음 커맨드 라인 인자를 사용하여 특정 기기를 실행하십시오.

-vrmode DEVICETYPE

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

예: MyGame.exe -vrmode oculus

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

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

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

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

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

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

자동 헤드 트래킹 입력

Unity versions newer than 2019.1 no longer support automatic head tracking for head-mounted devices. Use the Tracked Pose Driver feature of the XR Legacy Input Helpers package to implement this functionality.

You can install the XR Legacy Input Helpers package using the Package Manager window.

카메라 이해

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

Childing the Main Camera to a GameObject - in this case, a camera container
Childing the Main Camera to a GameObject - in this case, a camera container

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

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

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

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

에디터 모드(Editor Mode)

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

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

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

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

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

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 5.1 (Lollipop) or higher.
  • macOS:
  • Oculus: macOS 10.9+ with the Oculus 0.5.0.1 runtime. However, Oculus have paused development for macOS, so use Windows for native VR functionality in Unity.
  • HTC Vive: macOS 10.13.
  • 그래픽 카드 드라이버: 드라이버를 항상 최신 버전으로 유지해야 합니다. 모든 기기는 최신 드라이버 버전으로 유지되므로 오래된 드라이버는 지원되지 않을 수 있습니다.

기기 런타임 요구 사항

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

사용하는 Unity 버전에 따라, Unity가 지원하는 각 기기의 런타임 버전이 다를 수 있습니다. 크고 작은 각 Unity 릴리스의 릴리스 노트에서 런타임 버전을 확인할 수 있습니다.

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

Unity 네이티브 VR 지원은 프로젝트의 폴더 안에서 플러그인을 읽어오지 않으므로, VR 지원이 활성화된 경우 플러그인의 이전 버전을 네이티브 지원과 함께 포함시킬 수 없습니다. 이전 버전을 더 이상 지원하지 않는 Unity 릴리스와 함께 해당 버전을 사용하려면 Native VR Support 를 비활성화(XR Settings 로 이동하고 Virtual Reality Supported 를 선택 해제)합니다. 그런 다음 다른 타사 플러그인과 같은 방법으로 플러그인에 액세스합니다. 세부 정보는 위의 Unity VR 지원 활성화 섹션을 참조하십시오.


  • Automatic head tracking support removed in 2019.1.

NewIn20191

혼합 현실 기기
VR 기기