VR 앱을 Windows Mixed Reality 포 포트

Windows 10 몰입형 및 홀로그램 헤드셋에 대한 지원이 포함되어 있습니다. Oculus Rift 또는 HTC Vive와 같은 다른 디바이스는 운영 체제의 플랫폼 API 위에 있는 라이브러리에 종속됩니다. 기존 Win32 Unity VR 앱을 Windows Mixed Reality 가져오려면 공급업체별 VR SDK 사용을 Unity의 공급업체 간 VR API 및 플러그 인으로 대상을 변경해야 합니다.

VR 앱을 Windows Mixed Reality 포팅하려면 다음과 같은 고급 프로세스가 필요합니다.

  1. PC에서 Windows 10, 버전 1709(Fall Creator의 업데이트) 이상 또는 Windows 11 실행하고 있는지 확인합니다.
  2. 그래픽 또는 게임 엔진의 최신 버전으로 업그레이드합니다. 게임 엔진은 Windows 10 SDK 버전 10.0.15063.0 이상을 지원해야 합니다.
  3. 미들웨어, 플러그 인 및 구성 요소를 업그레이드합니다. 앱에 구성 요소가 포함된 경우 최신 버전으로 업그레이드합니다.
  4. 최신 Unity 버전 및 OpenXR 플러그 인을 대상으로 합니다. 중복 SDK에 대한 종속성을 제거합니다. 콘텐츠가 대상으로 지정된 디바이스에 따라 해당 SDK를 제거하거나 조건부로 컴파일합니다.
  5. 앱, 엔진 및 구성 요소 종속성과 관련된 빌드 문제를 해결합니다.

일반적인 포팅 단계

다음 일반적인 포팅 단계로 시작합니다.

  1. 올바른 개발 하드웨어가 있는지 확인합니다. VR 애호가 가이드에는 권장 개발 하드웨어가 나열됩니다.

  2. 최신 Windows 10 플라이트로 업그레이드합니다.

    1. Windows 10 크리에이터스 업데이트 설치
    2. Windows 참가자 프로그램 조인합니다.
    3. 개발자 모드 사용
    4. 설정 업데이트 & 보안 섹션을 통해 Windows >Insider Fast 플라이트로 전환합니다.

    참고

    Windows Mixed Reality 플랫폼은 아직 개발 중입니다. Windows 참가자 프로그램 참가하여 Windows 참가자 빠른 비행에 액세스합니다. 이러한 빌드는 혼합 현실 개발에 가장 안정적이지 않으므로 Insider Skip Ahead 링에서 미리 보기 빌드를 얻지 마세요.

  3. Visual Studio 사용하는 경우 최신 빌드로 업그레이드합니다. Visual Studio 2022에서 도구 설치를 참조하세요. Unity 워크로드를 사용하여 게임 개발을 설치해야 합니다.

Unity 포팅 단계

일반적인 단계를 검토하여 개발 환경이 올바르게 설정되었는지 확인합니다. 기존 Unity 콘텐츠를 포팅하려면 다음 단계를 수행합니다.

1. Windows MR 지원을 사용하여 Unity의 최신 공용 빌드로 업그레이드

  1. 시작하기 전에 프로젝트 복사본을 저장합니다.
  2. Windows Mixed Reality 지원을 통해 권장되는 최신 Unity 공용 빌드를 다운로드합니다.
  3. 프로젝트가 이전 버전의 Unity를 기반으로 빌드된 경우 Unity 업그레이드 가이드를 검토합니다.
  4. Unity의 자동 API 업데이트기를 사용하기 위한 지침을 따릅니다.
  5. 프로젝트를 실행하기 위해 다른 변경 내용을 적용하고 오류 및 경고를 처리해야 하는지 확인합니다.

2. 미들웨어를 최신 버전으로 업그레이드

Unity 업데이트를 사용하면 게임 또는 애플리케이션이 의존하는 하나 이상의 미들웨어 패키지를 업데이트해야 할 수 있습니다. 최신 미들웨어로 업데이트하면 포팅 프로세스의 나머지 부분 전체에서 성공할 가능성이 높아집니다.

3. Win32에서 실행할 애플리케이션 대상 지정

Unity 애플리케이션 내에서 다음을 수행합니다.

  1. 파일>빌드 설정 이동합니다.
  2. PC, Mac, Linux 독립 실행형을 선택합니다.
  3. 대상 플랫폼을 Windows 설정합니다.
  4. 아키텍처를 x86으로 설정합니다.
  5. Switch Platform(플랫폼 전환)을 선택합니다.

참고

애플리케이션에 Steam의 매치 메이킹과 같은 디바이스별 서비스에 대한 종속성이 있는 경우 지금 사용하지 않도록 설정합니다. 나중에 Windows 해당하는 서비스를 연결할 수 있습니다.

4. Mixed Reality OpenXR 플러그 인에 대한 지원 추가

  1. Unity 버전 및 XR 플러그 인을 선택하고 설치합니다. Mixed Reality OpenXR 플러그 인이 있는 Unity 2020.3 LTS는 Mixed Reality 개발에 가장 적합하지만 다른 Unity 구성을 사용하여 앱을 빌드할 수도 있습니다.

  2. 다른 VR SDK와 관련된 라이브러리 지원을 제거하거나 조건부로 컴파일합니다. 이러한 자산은 Windows Mixed Reality 호환되지 않는 방식으로 프로젝트의 설정 및 속성을 변경할 수 있습니다.

    예를 들어 프로젝트에서 SteamVR SDK를 참조하는 경우 Windows Mixed Reality 및 SteamVR을 모두 지원하는 Unity의 일반적인 VR API를 대신 사용하도록 프로젝트를 업데이트합니다.

  3. Unity 프로젝트에서 Windows 10 SDK를 대상으로 합니다.

  4. 각 장면에 대해 카메라를 설정합니다.

5. Windows Mixed Reality 하드웨어 설정

  1. 몰입형 헤드셋 설정의 단계를 검토합니다.
  2. Windows Mixed Reality 시뮬레이터를 사용하고 Windows Mixed Reality홈을 탐색하는 방법을 알아봅니다.

6. 스테이지를 사용하여 바닥에 콘텐츠 배치

다양한 환경 규모에서 Mixed Reality 환경을 빌드할 수 있습니다. 사용자 지정 크기 환경을 포팅하는 경우 Unity가 고정 추적 공간 유형으로 설정되어 있는지 확인합니다.

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

이 코드는 Unity의 월드 좌표계가 고정된 참조 프레임을 추적하도록 설정합니다. 고정 추적 모드에서는 앱이 시작될 때 카메라의 기본 위치(앞으로 -Z) 바로 앞에 있는 편집기에서 배치하는 콘텐츠가 사용자 앞에 나타납니다. 사용자의 착석 원본을 최근에 사용하기 위해 Unity의 XR을 호출할 수 있습니다 . InputTracking.Recenter 메서드.

스탠딩 스케일 환경 또는 룸 스케일 환경을 포팅하는 경우 콘텐츠를 바닥에 상대적으로 배치합니다. 사용자가 정의한 바닥 수준 원점인 공간 단계를 사용하여 사용자의 바닥에 대해 추론합니다. 공간 단계에는 첫 번째 실행 중에 설정한 선택적 회의실 경계가 포함될 수 있습니다.

이러한 환경의 경우 Unity가 RoomScale 추적 공간 유형으로 설정되어 있는지 확인합니다. RoomScale은 기본값이지만 명시적으로 설정하고 다시 돌아오 true도록 합니다. 이 연습에서는 사용자가 보정한 방에서 컴퓨터를 이동한 상황을 파악합니다.

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App can't make assumptions about where the floor plane is.
}

앱이 RoomScale 추적 공간 유형을 성공적으로 설정하면 y=0 평면에 배치된 콘텐츠가 바닥에 나타납니다. 원점(0, 0, 0)은 사용자가 회의실을 설치하는 동안 서 있는 바닥의 특정 위치이며, -Z는 설치 중에 직면한 정방향 방향을 나타냅니다.

그런 다음 스크립트 코드에서 형식의 TryGetGeometry 메서드 UnityEngine.Experimental.XR.Boundary 를 호출하여 경계 다각형을 가져오고 경계 형식을 지정할 수 있습니다 TrackedArea. 사용자가 경계를 정의한 경우 꼭짓점 목록을 다시 가져옵니다. 그런 다음, 사용자가 만든 장면을 둘러 볼 수 있는 룸 스케일 환경을 사용자에게 제공할 수 있습니다.

시스템은 사용자가 경계에 접근할 때 자동으로 경계를 렌더링합니다. 앱은 경계 자체를 렌더링하기 위해 이 다각형을 사용할 필요가 없습니다.

결과의 예:

Example of results

자세한 내용은 Unity의 좌표계를 참조하세요.

7. 입력 모델 작업

기존 HMD(헤드 탑재 디스플레이)를 대상으로 하는 각 게임 또는 애플리케이션에는 처리하는 입력 집합, 환경에 필요한 입력 유형 및 해당 입력을 가져오기 위해 호출하는 특정 API가 있습니다. Windows Mixed Reality 사용할 수 있는 입력을 활용하는 것은 간단하고 간단합니다.

Windows Mixed Reality 입력을 노출하는 방법 및 입력이 현재 애플리케이션에 매핑되는 방식에 대한 자세한 내용은 Unity의 입력 포팅 가이드를 참조하세요.

중요

HP Reverb G2 컨트롤러를 사용하는 경우 추가 입력 매핑 지침은 Unity의 HP Reverb G2 컨트롤러 를 참조하세요.

8. 성능 테스트 및 조정

Windows Mixed Reality 하이 엔드 게임 PC에서 광범위한 시장 주류 PC에 이르기까지 많은 장치에서 사용할 수 있습니다. 이러한 디바이스는 애플리케이션에 사용할 수 있는 컴퓨팅 및 그래픽 예산이 크게 다릅니다.

상당한 컴퓨팅 및 그래픽 예산이 있는 프리미엄 PC를 사용하여 앱을 포팅한 경우 대상 시장을 나타내는 하드웨어에서 앱을 테스트하고 프로파일을 작성해야 합니다. 자세한 내용은 Windows Mixed Reality 최소 PC 하드웨어 호환성 지침을 참조하세요.

UnityVisual Studio 모두 성능 프로파일러를 포함하고 있으며, MicrosoftIntel 모두 성능 프로파일링 및 최적화에 대한 지침을 게시합니다.

성능에 대한 광범위한 논의는 Mixed Reality 성능 이해를 참조하세요. Unity에 대한 자세한 내용은 Unity에 대한 성능 권장 사항을 참조하세요.

입력 매핑

입력 매핑 정보 및 지침은 Unity에 대한 입력 포팅 가이드를 참조하세요.

중요

HP Reverb G2 컨트롤러를 사용하는 경우 추가 입력 매핑 지침은 Unity의 HP Reverb G2 컨트롤러 를 참조하세요.

추가 정보