Implementowanie uruchamiania aplikacji 3D (aplikacje platformy UWP)

Uwaga

Ta funkcja została dodana w ramach aktualizacji FALL Creators Update (RS3) z 2017 r. dla immersywnych zestawów nagłownych i jest obsługiwana przez urządzenie HoloLens z aktualizacją z Windows 10 kwietnia 2018 r. Upewnij się, że aplikacja jest przeznaczona dla wersji zestawu Windows SDK większej lub równej 10.0.16299 w immersywnych zestawach słuchawkowych i 10.0.17125 na urządzeniu HoloLens. Najnowszą wersję zestawu Windows SDK można znaleźć tutaj.

Windows Mixed Reality domu jest punktem wyjścia, w którym użytkownicy lądują przed uruchomieniem aplikacji. Podczas tworzenia aplikacji platformy UWP dla Windows Mixed Reality aplikacje są domyślnie uruchamiane jako slates 2D z logo aplikacji. Podczas opracowywania środowisk dla Windows Mixed Reality można opcjonalnie zdefiniować uruchamianie 3D w celu zastąpienia domyślnego modułu uruchamiania 2D dla aplikacji. Ogólnie rzecz biorąc, wyrzutnie 3D są zalecane do uruchamiania immersyjnych aplikacji, które zabierają użytkowników z Windows Mixed Reality domu. Domyślny moduł uruchamiania 2D jest preferowany po aktywowaniu aplikacji. Możesz również utworzyć link bezpośredni 3D (secondaryTile) jako moduł uruchamiania 3D do zawartości w aplikacji platformy UWP 2D.

Proces tworzenia modułu uruchamiania aplikacji 3D

Tworzenie modułu uruchamiania aplikacji 3D obejmuje trzy kroki:

  1. Projektowanie i koncepcje
  2. Modelowanie i eksportowanie
  3. Integrowanie jej z aplikacją (ten artykuł)

Zasoby 3D, które mają być używane jako moduły uruchamiające dla aplikacji, powinny być tworzone przy użyciu wytycznych dotyczących tworzenia Windows Mixed Reality w celu zapewnienia zgodności. Zasoby, które nie spełniają tej specyfikacji tworzenia, nie będą renderowane w Windows Mixed Reality domu.

Konfigurowanie uruchamiania 3D

Podczas tworzenia nowego projektu w programie Visual Studio tworzony jest prosty kafelek domyślny, który wyświetla nazwę i logo aplikacji. Aby zastąpić tę reprezentację 2D niestandardowym modelem 3D, edytuj manifest aplikacji, aby uwzględnić element "MixedRealityModel" w ramach domyślnej definicji kafelka. Aby powrócić do modułu uruchamiania 2D, po prostu usuń definicję MixedRealityModel z manifestu.

XML

Najpierw znajdź manifest pakietu aplikacji w bieżącym projekcie. Domyślnie manifest będzie miał nazwę Package.appxmanifest. Jeśli używasz programu Visual Studio, kliknij prawym przyciskiem myszy manifest w przeglądarce rozwiązań i wybierz polecenie Wyświetl źródło , aby otworzyć plik XML do edycji.

W górnej części manifestu dodaj schemat uap5 i uwzględnij go jako przestrzeń nazw do zignorowania:

<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">

Następnie określ wartość "MixedRealityModel" na kafelku domyślnym aplikacji:

<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>

Element MixedRealityModel akceptuje ścieżkę pliku wskazującą zasób 3D przechowywany w pakiecie aplikacji. Obecnie obsługiwane są tylko modele 3D dostarczane przy użyciu formatu pliku glb i utworzone na podstawie instrukcji tworzenia zasobów 3D Windows Mixed Reality. Zasoby muszą być przechowywane w pakiecie aplikacji, a animacja nie jest obecnie obsługiwana. Jeśli parametr "Ścieżka" pozostanie pusty, system Windows wyświetli łupek 2D zamiast uruchamiania 3D. Uwaga: zasób glb musi być oznaczony jako "Zawartość" w ustawieniach kompilacji przed skompilowaniem i uruchomieniem aplikacji.

Wybierz plik glb w Eksploratorze rozwiązań i użyj sekcji properties, aby oznaczyć ją jako
Wybierz plik glb w Eksploratorze rozwiązań i użyj sekcji properties, aby oznaczyć ją jako "Zawartość" w ustawieniach kompilacji

Obwiedni

Pole ograniczenia może służyć do opcjonalnego dodawania dodatkowego regionu buforu wokół obiektu. Pole ograniczenia jest określane przy użyciu punktu środkowego i zakresów, które wskazują odległość od środka pola ograniczenia do krawędzi wzdłuż każdej osi. Jednostki pola ograniczenia można zamapować na 1 jednostkę = 1 miernik. Jeśli pole ograniczenia nie zostanie podane, zostanie automatycznie dopasowane do siatki obiektu. Jeśli podane pole ograniczenia jest mniejsze niż model, rozmiar zostanie zmieniony tak, aby pasował do siatki.

Obsługa atrybutu pola ograniczenia będzie zawierać aktualizację systemu Windows RS4 jako właściwość w elemecie MixedRealityModel. Aby najpierw zdefiniować pole ograniczenia w górnej części manifestu aplikacji, dodaj schemat uap6 i uwzględnij go jako możliwe do zignorowania przestrzenie nazw:

<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">

Następnie w modelu MixedRealityModel ustaw właściwość SpatialBoundingBox, aby zdefiniować pole ograniczenia:

        <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>

Korzystanie z aparatu Unity

Podczas pracy z aparatem Unity projekt musi zostać skompilowany i otwarty w programie Visual Studio, zanim będzie można edytować manifest aplikacji.

Uwaga

Uruchamianie 3D musi zostać ponownie zdefiniowane w manifeście podczas kompilowania i wdrażania nowego rozwiązania programu Visual Studio z poziomu aparatu Unity.

Uwaga

Ta funkcja została dodana w ramach aktualizacji FALL Creators Update (RS3) z 2017 r. dla immersywnych zestawów słuchawkowych (VR) oraz w ramach aktualizacji RS4 (RS4) dla urządzenia HoloLens z kwietnia 2018 r. Upewnij się, że aplikacja jest przeznaczona dla wersji zestawu Windows SDK większej lub równej 10.0.16299 na immersywnych zestawach słuchawkowych (VR) i 10.0.17125 na urządzeniu HoloLens. Najnowszą wersję zestawu Windows SDK można znaleźć tutaj.

Ważne

Linki bezpośrednie 3D (secondaryTiles) działają tylko z aplikacjami platformy UWP 2D. Możesz jednak utworzyć uruchamianie aplikacji 3D, aby uruchomić aplikację wyłączną z Windows Mixed Reality domu.

Aplikacje 2D można ulepszyć w celu Windows Mixed Reality przez dodanie możliwości umieszczania modeli 3D z aplikacji w Windows Mixed Reality domu jako linków bezpośrednich do zawartości w aplikacji 2D, podobnie jak kafelki pomocnicze 2D w menu Start systemu Windows. Można na przykład utworzyć 360° fotosfery, które łączą się bezpośrednio z aplikacją przeglądarki zdjęć 360°, lub pozwolić użytkownikom umieszczać zawartość 3D z kolekcji zasobów, która otwiera stronę szczegółów o autorze. To tylko kilka sposobów rozszerzania funkcjonalności aplikacji 2D przy użyciu zawartości 3D.

Tworzenie "secondaryTile" 3D

Zawartość 3D można umieścić z aplikacji przy użyciu "secondaryTiles", definiując model rzeczywistości mieszanej w czasie tworzenia. Modele rzeczywistości mieszanej są tworzone przez odwoływanie się do zasobu 3D w pakiecie aplikacji i opcjonalnie definiowanie pola ograniczenia.

Uwaga

Tworzenie "secondaryTiles" z poziomu widoku wyłącznego nie jest obecnie obsługiwane.

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();

Obwiedni

Pole ograniczenia może służyć do dodawania dodatkowego regionu buforu wokół obiektu. Pole ograniczenia jest określane przy użyciu punktu środkowego i zakresów, które wskazują odległość od środka pola ograniczenia do krawędzi wzdłuż każdej osi. Jednostki pola ograniczenia można zamapować na 1 jednostkę = 1 miernik. Jeśli pole ograniczenia nie zostanie podane, zostanie automatycznie dopasowany do siatki obiektu. Jeśli podane pole ograniczenia jest mniejsze niż model, zostanie zmieniony rozmiar tak, aby pasował do siatki.

Zachowanie aktywacji

Uwaga

Ta funkcja będzie obsługiwana w ramach aktualizacji systemu Windows RS4. Upewnij się, że aplikacja jest przeznaczona dla wersji zestawu Windows SDK większej lub równej 10.0.17125, jeśli planujesz używać tej funkcji

Możesz zdefiniować zachowanie aktywacji dla pomocniczego 3DTile, aby kontrolować, jak reaguje, gdy użytkownik go wybierze. Może to służyć do umieszczania obiektów 3D w Mixed Reality domu, które są czysto informacyjne lub dekoracyjne. Obsługiwane są następujące typy zachowań aktywacji:

  1. Ustawienie domyślne: po wybraniu pomocniczego elementu 3DTylej aplikacja jest aktywowana
  2. Brak: gdy użytkownik wybierze pomocniczą wartość 3DTile nic się nie stanie i aplikacja nie zostanie aktywowana.

Uzyskiwanie i aktualizowanie istniejącego elementu "secondaryTile"

Deweloperzy mogą wrócić do listy istniejących kafelków pomocniczych, w tym właściwości, które zostały wcześniej określone. Mogą również zaktualizować właściwości, zmieniając wartość, a następnie wywołując funkcję 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();
}

Sprawdzanie, czy użytkownik znajduje się w Windows Mixed Reality

Linki głębokie 3D (secondaryTiles) można tworzyć tylko wtedy, gdy widok jest wyświetlany w zestawie słuchawkowym Windows Mixed Reality. Jeśli widok nie jest prezentowany w zestawie słuchawkowym Windows Mixed Reality, zalecamy bezproblemową obsługę tej funkcji przez ukrycie punktu wejścia lub wyświetlenie komunikatu o błędzie. Możesz to sprawdzić, wysyłając zapytanie do isCurrentViewPresentedOnHolographic().

Powiadomienia dotyczące kafelków

Powiadomienia kafelków nie obsługują obecnie wysyłania aktualizacji za pomocą zasobu 3D. Oznacza to, że deweloperzy nie mogą wykonać następujących czynności:

  • Powiadomienia wypychane
  • Okresowe sondowanie
  • Zaplanowane powiadomienia

Aby uzyskać więcej informacji na temat innych funkcji i atrybutów kafelków oraz sposobu ich użycia na kafelkach 2D, zobacz dokumentację Kafelki dla aplikacji platformy UWP.

Zobacz też