3D 앱 시작 관리자(UWP 앱) 구현

참고

이 기능은 몰입형 헤드셋용 2017 가을 크리에이터스 업데이트(RS3)의 일부로 추가되었으며 HoloLens에서 2018년 4월 업데이트 Windows 10 지원합니다. 애플리케이션이 몰입형 헤드셋의 경우 10.0.16299 이상, HoloLens에서 10.0.17125보다 크거나 같은 Windows SDK 버전을 대상으로 하고 있는지 확인합니다. 최신 Windows SDK는 여기에서 찾을 수 있습니다.

Windows Mixed Reality 홈은 애플리케이션을 시작하기 전에 사용자가 착륙하는 시작점입니다. Windows Mixed Reality UWP 애플리케이션을 만들 때 기본적으로 앱은 앱 로고가 있는 2D 슬레이트로 시작됩니다. Windows Mixed Reality 대한 환경을 개발할 때 필요에 따라 애플리케이션의 기본 2D 시작 관리자를 재정의하도록 3D 시작 관리자를 정의할 수 있습니다. 일반적으로 3D 시작 관리자가 사용자를 Windows Mixed Reality 집으로 데려가는 몰입형 애플리케이션을 시작하는 데 권장됩니다. 앱이 정품 인증될 때 기본 2D 시작 관리자가 선호됩니다. 2D UWP 앱 내의 콘텐츠에 대한 3D 시작 관리자로 3D 딥 링크(secondaryTile) 를 만들 수도 있습니다.

3D 앱 시작 관리자 만들기 프로세스

3D 앱 시작 관리자를 만드는 세 가지 단계가 있습니다.

  1. 디자인 및 개념 지정
  2. 모델링 및 내보내기
  3. 애플리케이션에 통합(이 문서)

애플리케이션의 시작 관리자로 사용할 3D 자산은 호환성을 보장하기 위해 Windows Mixed Reality 작성 지침을 사용하여 작성해야 합니다. 이 제작 사양을 충족하지 못하는 자산은 Windows Mixed Reality 홈에 렌더링되지 않습니다.

3D 시작 관리자 구성

Visual Studio에서 새 프로젝트를 만든 경우 앱의 이름 및 로고를 표시하는 간단한 기본 타일이 만들어집니다. 이 2D 표현을 사용자 지정 3D 모델로 바꾸려면 애플리케이션의 앱 매니페스트를 편집하여 기본 타일 정의의 일부로 "MixedRealityModel" 요소를 포함합니다. 2D 시작 관리자에 되돌리기 매니페스트에서 MixedRealityModel 정의를 제거합니다.

XML

먼저 현재 프로젝트에서 앱 패키지 매니페스트를 찾습니다. 기본적으로 매니페스트의 이름은 Package.appxmanifest입니다. Visual Studio를 사용하는 경우 솔루션 뷰어에서 매니페스트를 마우스 오른쪽 단추로 클릭하고 원본 보기를 선택하여 편집할 xml을 엽니다.

매니페스트 맨 위에 uap5 스키마를 추가하고 무시 가능한 네임스페이스로 포함합니다.

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         IgnorableNamespaces="uap uap2 uap5 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

다음으로 애플리케이션의 기본 타일에 "MixedRealityModel"을 지정합니다.

<Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="ExampleApp.App">
      <uap:VisualElements
        DisplayName="ExampleApp"
        Square150x150Logo="Assets\Logo.png"
        Square44x44Logo="Assets\SmallLogo.png"
        Description="ExampleApp"
        BackgroundColor="#464646">
        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb" />
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
</Applications>

MixedRealityModel 요소는 앱 패키지에 저장된 3D 자산을 가리키는 파일 경로를 허용합니다. 현재 .glb 파일 형식을 사용하여 전달되고 Windows Mixed Reality 3D 자산 작성 지침에 대해 작성된 3D 모델만 지원됩니다. 자산은 앱 패키지에 저장해야 하며 애니메이션은 현재 지원되지 않습니다. "Path" 매개 변수가 비어 있는 경우 Windows는 3D 시작 관리자 대신 2D 슬레이트를 표시합니다. 참고: .glb 자산은 앱을 빌드하고 실행하기 전에 빌드 설정에서 "콘텐츠"로 표시되어야 합니다.

솔루션 탐색기에서 .glb를 선택하고 속성 섹션을 사용하여 빌드 설정에서
솔루션 탐색기에서 .glb를 선택하고 속성 섹션을 사용하여 빌드 설정에서 "콘텐츠"로 표시합니다.

경계 상자

경계 상자를 사용하여 필요에 따라 개체 주위에 추가 버퍼 영역을 추가할 수 있습니다. 경계 상자는 경계 상자의 중심에서 각 축을 따라 가장자리까지의 거리를 나타내는 중심점 및 익스텐트 를 사용하여 지정됩니다. 경계 상자의 단위는 1단원 = 1미터로 매핑할 수 있습니다. 경계 상자가 제공되지 않으면 개체의 메시에 자동으로 장착됩니다. 제공된 경계 상자가 모델보다 작으면 메시에 맞게 크기가 조정됩니다.

경계 상자 특성에 대한 지원은 MixedRealityModel 요소의 속성으로 Windows RS4 업데이트와 함께 제공됩니다. 앱 매니페스트 맨 위에 경계 상자를 먼저 정의하려면 uap6 스키마를 추가하고 무시 가능한 네임스페이스로 포함합니다.

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6"
         IgnorableNamespaces="uap uap2 uap5 uap6 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

그런 다음 MixedRealityModel에서 SpatialBoundingBox 속성을 설정하여 경계 상자를 정의합니다.

        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb">
              <uap6:SpatialBoundingBox  Center=”1,-2,3” Extents=”1,2,3” />
          </uap5:MixedRealityModel>
        </uap:DefaultTile>

Unity 사용

Unity로 작업할 때는 Visual Studio에서 프로젝트를 빌드하고 열어야 앱 매니페스트를 편집할 수 있습니다.

참고

Unity에서 새 Visual Studio 솔루션을 빌드하고 배포할 때 매니페스트에서 3D 시작 관리자를 다시 정의해야 합니다.

참고

이 기능은 몰입형(VR) 헤드셋용 2017 가을 크리에이터스 업데이트(RS3)의 일부로 추가되었으며 HoloLens용 2018년 4월 업데이트(RS4)의 일부로 추가되었습니다. 애플리케이션이 몰입형(VR) 헤드셋에서 10.0.16299 이상, HoloLens에서 10.0.17125보다 크거나 같은 Windows SDK 버전을 대상으로 하고 있는지 확인합니다. 최신 Windows SDK는 여기에서 찾을 수 있습니다.

중요

3D 딥 링크(secondaryTiles)는 2D UWP 앱에서만 작동합니다. 그러나 3D 앱 시작 관리자를 만들어 Windows Mixed Reality 홈에서 독점 앱을 시작할 수 있습니다.

Windows 시작 메뉴의 2D 보조 타일처럼 앱의 3D 모델을 2D 앱 내의 콘텐츠에 대한 딥 링크로 Windows Mixed Reality 홈에 배치하는 기능을 추가하여 2D 애플리케이션을 Windows Mixed Reality 향상할 수 있습니다. 예를 들어 360° 사진 뷰어 앱에 직접 연결되는 360° 광구를 만들거나 사용자가 저자에 대한 세부 정보 페이지를 여는 자산 컬렉션에서 3D 콘텐츠를 배치하도록 할 수 있습니다. 이는 3D 콘텐츠로 2D 애플리케이션의 기능을 확장하는 몇 가지 방법일 뿐입니다.

3D "secondaryTile" 만들기

만들 때 혼합 현실 모델을 정의하여 "secondaryTiles"를 사용하여 애플리케이션에서 3D 콘텐츠를 배치할 수 있습니다. 혼합 현실 모델은 앱 패키지에서 3D 자산을 참조하고 필요에 따라 경계 상자를 정의하여 만들어집니다.

참고

배타적 보기 내에서 "secondaryTiles"를 만드는 것은 현재 지원되지 않습니다.

using Windows.UI.StartScreen;
using Windows.Foundation.Numerics;
using Windows.Perception.Spatial;

// Initialize the tile
SecondaryTile tile = new SecondaryTile("myTileId")
{
    DisplayName = "My Tile",
    Arguments = "myArgs"
};

tile.VisualElements.Square150x150Logo = new Uri("ms-appx:///Assets/MyTile/Square150x150Logo.png");

//Assign 3D model (only ms-appx and ms-appdata are allowed)
TileMixedRealityModel model = tile.VisualElements.MixedRealityModel;
model.Uri = new Uri("ms-appx:///Assets/MyTile/MixedRealityModel.glb");
model.ActivationBehavior = TileMixedRealityModelActivationBehavior.Default;
model.BoundingBox = new SpatialBoundingBox
{
    Center = new Vector3 { X = 1, Y = 0, Z = 0 },
    Extents = new Vector3 { X = 3, Y = 5, Z = 4 }
};

// And place it
await tile.RequestCreateAsync();

경계 상자

경계 상자를 사용하여 개체 주위에 추가 버퍼 영역을 추가할 수 있습니다. 경계 상자는 경계 상자의 중심에서 각 축을 따라 가장자리까지의 거리를 나타내는 중심점 및 익스텐트 를 사용하여 지정됩니다. 경계 상자의 단위는 1단원 = 1미터로 매핑할 수 있습니다. 경계 상자가 제공되지 않으면 개체의 메시에 자동으로 장착됩니다. 제공된 경계 상자가 모델보다 작으면 메시에 맞게 크기가 조정됩니다.

활성화 동작

참고

이 기능은 Windows RS4 업데이트에서 지원됩니다. 이 기능을 사용하려는 경우 애플리케이션이 10.0.17125보다 크거나 같은 Windows SDK 버전을 대상으로 하는지 확인합니다.

3D secondaryTile에 대한 활성화 동작을 정의하여 사용자가 선택할 때의 반응 방식을 제어할 수 있습니다. 이는 순전히 유익하거나 장식적인 Mixed Reality 홈에 3D 개체를 배치하는 데 사용할 수 있습니다. 지원되는 활성화 동작 유형은 다음과 같습니다.

  1. 기본값: 사용자가 3D 보조를 선택하면 앱이 활성화됩니다.
  2. 없음: 사용자가 3D 보조 타일을 선택하면 아무 일도 발생하지 않고 앱이 활성화되지 않습니다.

기존 "secondaryTile" 가져오기 및 업데이트

개발자는 이전에 지정한 속성을 포함하는 기존 보조 타일 목록을 다시 가져올 수 있습니다. 값을 변경한 다음 UpdateAsync()를 호출하여 속성을 업데이트할 수도 있습니다.

// Grab the existing secondary tile
SecondaryTile tile = (await SecondaryTile.FindAllAsync()).First();

Uri updatedUri = new Uri("ms-appdata:///local/MixedRealityUpdated.glb");

// See if the model needs updating
if (!tile.VisualElements.MixedRealityModel.Uri.Equals(updatedUri))
{
    // Update it
    tile.VisualElements.MixedRealityModel.Uri = updatedUri;

    // And apply the changes
    await tile.UpdateAsync();
}

사용자가 Windows Mixed Reality 있는지 확인

3D 딥 링크(secondaryTiles)는 보기가 Windows Mixed Reality 헤드셋에 표시되는 동안에만 만들 수 있습니다. 보기가 Windows Mixed Reality 헤드셋에 표시되지 않는 경우 진입점을 숨기거나 오류 메시지를 표시하여 정상적으로 처리하는 것이 좋습니다. IsCurrentViewPresentedOnHolographic()을 쿼리하여 이를 검사 수 있습니다.

타일 알림

타일 알림은 현재 3D 자산으로 업데이트 전송을 지원하지 않습니다. 즉, 개발자는 다음을 수행할 수 없습니다.

  • 푸시 알림
  • 주기적 폴링
  • 예약된 알림

다른 타일 기능 및 특성 및 2D 타일에 사용되는 방법에 대한 자세한 내용은 UWP 앱용 타일 설명서를 참조하세요.

추가 정보