Unity VR을 사용하면 프로젝트에 외부 플러그인이 없어도 타겟 가상 현실 기기를 Unity에서 직접 지정할 수 있습니다. Unity VR은 여러 기기와 호환 가능한 베이스 API와 기능 집합을 제공하고, 미래의 기기 및 소프트웨어와 호환되도록 설계되었습니다. VR API 표면은 간단하게 설계되었지만, VR이 계속 성장하면 확장됩니다.
Unity의 네이티브 VR 지원을 사용하면 다음을 얻을 수 있습니다.
게임 빌드와 에디터에 대한 네이티브 VR 지원을 활성화하려면 Player Settings를 엽니다(메뉴: Edit > Project Settings > Player). Other Settings 를 선택하고 Virtual Reality Supported 체크박스를 선택합니다. 각 빌드 타겟마다 다음과 같이 설정합니다. 스탠드얼론 빌드에서 가상 현실 지원을 활성화해도 Android에 대한 지원은 활성화되지 않습니다(그 반대도 마찬가지).
체크박스 아래에 표시되는 Virtual Reality SDK 리스트를 사용하여 각 빌드 타겟에 대해 VR 기기를 추가 및 제거합니다. 리스트 순서는 Unity가 런타임 시점에 VR 기기를 활성화하는 순서와 같습니다. 올바르게 초기화되는 첫 기기가 활성화된 기기입니다. 리스트 순서는 빌드된 플레이어에서도 동일합니다.
빌드된 애플리케이션은 Other Settings 에 있는 Virtual Reality SDKs 리스트와 같은 순서로 초기화 및 활성화됩니다(위의 VR 지원 활성화 참조). 빌드 시에 리스트에 없는 기기는 최종 빌드에 사용할 수 없습니다. None 기기는 비VR 애플리케이션(즉 일반 Unity 애플리케이션)과 같고, 리스트에 포함시키지 않아도 런타임 중에 전환할 수 있습니다. 이에 대한 예외가 None 입니다.
None 을 리스트에 기기로 포함시키면 VR 기기 초기화를 시도하기 전에 비VR 애플리케이션을 디폴트로 사용할 수 있습니다. None 을 리스트 맨 위에 놓으면 VR이 비활성화된 상태로 애플리케이션이 시작됩니다. 그러면 리스트에 있는 VR 기기를 VRSettings.LoadDeviceByName을 사용하여 스트립트를 통해 활성화하고 비활성화할 수 있습니다.
전환하려는 기기의 초기화에 실패하면 Unity는 해당 기기가 활성 VR 기기로 계속 설정된 상태에서 VR을 비활성화합니다. 기기를 전환(VRSettings.LoadDeviceByName)하거나 VR을 활성화(VR.VRSettings-enabled)하면 빌드된 애플리케이션이 초기화를 다시 시도합니다.
특정 기기를 실행하는 데 사용되는 커맨드 라인 인수는
-vrmode DEVICETYPE
입니다. 여기서 DEVICETYPE 은 지원되는 VR devices list에 있는 이름 중 하나입니다.
예: MyGame.exe -vrmode oculus
Unity에서 VR을 활성화하면 몇 가지 작업이 자동으로 수행됩니다.
씬의 모든 카메라는 헤드 마운트 디스플레이(HMD)에 직접 렌더할 수 있습니다. 뷰 및 프로젝션 매트릭스는 헤드 트래킹, 포지션 트래킹 및 시야를 반영하여 자동으로 조정됩니다.
Camera 컴포넌트의 stereoTargetEye 프로퍼티를 사용하여 HMD로 렌덩하는 기능을 비활성화할 수 있습니다. 그 대신 Target Texture 프로퍼티를 사용하여 카메라를 렌더 텍스처로 설정할 수 있습니다.
기기가 헤드에 마운트되지 않은 경우 헤드 트래킹과 해당 시야(FOV)가 자동으로 카메라에 적용됩니다. FOV를 수동으로 특정 값으로 설정할 수 있지만, 카메라의 트랜스폼 값을 직접 설정할 수는 없습니다. 자세한 내용은 아래의 카메라 이해 섹션을 참조하십시오.
포지션 및 오리엔테이션이 프레임 렌더 전의 사용자 포지션 및 오리엔테이션과 가장 가깝게 일치하도록 헤드 트래킹 및 포지션 트래킹이 자동으로 적용됩니다. 이는VR 경험을 개선시켜 사용자가 멀미를 느끼지 않게 합니다.
카메라 트랜스폼은 헤드 추적 포즈로 오버라이드됩니다. 카메라를 이동 또는 회전하려면 다른 게임 오브젝트의 자식에 부착해야 합니다. 그러면 카메라의 부모에 적용된 모든 트랜스폼 변경이 카메라 자체에 영향을 미칩니다. 스크립트를 사용하여 카메라를 이동 또는 회전하는 경우에도 동일합니다.
카메라의 포지션과 오리엔테이션을 사용자가 중립 포지션에서 보는 위치라고 생각해야 합니다.
앉아서 느끼는 VR 경험과 룸 스케일 VR 경험은 차이가 있습니다.
기기에 렌더링하는 각 카메라는 자동으로 카메라의 FOV를 사용자가 각 VR SDK에 대한 소프트웨어 설정에 입력한 FOV로 바꿉니다. 사용자는 런타임 중에 시야를 변경할 수 없습니다. 이 동작은 멀미를 유발하는 것으로 알려져 있기 때문입니다.
VR 기기가 Unity 에디터 모드를 지원하는 경우 에디터에서 Play를 눌러 기기에서 직접 테스트할 수 있습니다.
stereoTargetEye 가 왼쪽 또는 두 눈으로 설정된 경우 왼쪽 눈이 게임 뷰 창에 렌더링됩니다. stereoTargetEye 가 오른쪽으로 설정된 경우 오른쪽 눈이 렌더링됩니다.
왼쪽 및 오른쪽 눈을 자동으로 나란히 표시하는 뷰는 없습니다. 게임 뷰에서 좌우를 나란히 보려면 카메라를 2개 만들고 하나를 왼쪽 눈으로 설정하고 다른 하나를 오른쪽 눈으로 설정하고 둘을 나란히 표시하도록 뷰포트를 설정합니다.
에디터에서 실행하면 Unity IDE가 창을 각각 렌더해야 하므로 리소스가 더 많이 사용되어 래그나 흔들림이 발생할 수 있습니다. 에디터 렌더에 사용되는 리소스를 줄이려면 게임 뷰를 열고 Maximize on Play 를 활성화합니다.
Unity 프로파일러는 에디터 밖에서 실행할 경우에 성능이 어떻게 될지 파악하는 데 유용한 툴입니다. 하지만 프로파일러 자체도 리소스를 많이 사용합니다. 타겟 플랫폼에서 빌드를 만들고 직접 실행하면 게임 성능을 가장 효과적으로 확인할 수 있습니다. 비개발 빌드를 실행하면 최고 성능을 얻을 수 있지만, 개발 빌드를 사용하면 Unity 프로파일러를 연결하여 프로파일링 성능을 높일 수 있습니다.
좋은 VR 경험을 위해서는 타겟 HMD와 유사한 프레임 속도를 실현하는 것이 필수적입니다. 프레임 속도는 HMD에서 사용되는 디스플레이의 refresh 속도와 일치해야 합니다. 프레임 속도가 HMD의 refresh 속도보다 낮아지면 현저하게 눈에 띄고 플레이어가 종종 멀미를 느낍니다.
VR 기기의 Refresh 속도:
VR Device | Refresh Rate |
---|---|
Gear VR | 60hz |
Oculus CV1 | 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이 설치되어 있어야 합니다.
사용하는 Unity 버전에 따라, Unity에서 지원하는 각 기기의 런타임 버전이 다를 수 있습니다. 크고 작은 각 Unity 릴리스의 릴리스 노트에서 런타임 버전을 확인할 수 있습니다.
일부 버전 업데이트 후에는 이전 런타임 버전이 더 이상 지원되지 않습니다. 그러면 이전 런타임 버전에서 네이티브 Unity 지원이 불가능하지만 새 런타임 버전에서는 계속 가능합니다.
Unity 네이티브 VR 지원은 프로젝트의 폴더 안에서 플러그인을 읽어오지 않으므로, VR 지원이 활성화된 경우 플러그인의 이전 버전을 네이티브 지원과 함께 포함시킬 수 없습니다. 이전 버전을 더 이상 지원하지 않는 Unity 릴리스와 함께 해당 버전을 사용하려면 Native VR Support 를 비활성화(Other Settings 으로 이동하고 Virtual Reality Supported 선택 해제)합니다. 그런 다음 다른 타사 플러그인과 같은 방법으로 플러그인에 액세스합니다. 세부 정보는 위의 Unity VR 지원 활성화 섹션을 참조하십시오.