Implementace spouštěčů 3D aplikací (aplikace PRO UPW)

Poznámka

Tato funkce byla přidána jako součást aktualizace 2017 Fall Creators Update (RS3) pro imerzivní náhlavní soupravy a je podporována společností HoloLens s aktualizací Windows 10 z dubna 2018. Ujistěte se, že vaše aplikace cílí na verzi sady Windows SDK, která je větší nebo rovna 10.0.16299 v imerzivních náhlavních soupravách a verzi 10.0.17125 na HoloLensu. Nejnovější sadu Windows SDK najdete tady.

Domovská Windows Mixed Reality je výchozím bodem, kam uživatelé přistanou před spuštěním aplikací. Při vytváření aplikace pro UPW pro Windows Mixed Reality se aplikace ve výchozím nastavení spouští jako 2D tabule s logem aplikace. Při vývoji prostředí pro Windows Mixed Reality je možné volitelně definovat 3D spouštěč, který pro vaši aplikaci přepíše výchozí 2D spouštěč. Obecně platí, že 3D spouštěče se doporučují pro spouštění imerzivních aplikací, které uživatele odvezou z Windows Mixed Reality domů. Výchozí 2D spouštěč se upřednostňuje, když je aplikace aktivovaná na místě. Můžete také vytvořit přímý 3D odkaz (secondaryTile) jako 3D spouštěč obsahu v rámci 2D aplikace pro UPW.

Proces vytváření spouštěče 3D aplikací

Vytvoření spouštěče 3D aplikací probíhá ve třech krocích:

  1. Návrh a koncepce
  2. Modelování a export
  3. Integrace do aplikace (tento článek)

3D prostředky, které se mají použít jako spouštěče pro vaši aplikaci, by měly být vytvořené pomocí Windows Mixed Reality pokynů pro vytváření, aby byla zajištěna kompatibilita. Prostředky, které nesplňují tuto specifikaci vytváření, se na domovské stránce Windows Mixed Reality nevykreslí.

Konfigurace 3D spouštěče

Když v sadě Visual Studio vytvoříte nový projekt, vytvoří se jednoduchá výchozí dlaždice, která zobrazuje název a logo vaší aplikace. Pokud chcete tuto 2D reprezentaci nahradit vlastním 3D modelem, upravte manifest aplikace vaší aplikace tak, aby jako součást definice výchozí dlaždice obsahoval prvek MixedRealityModel. Pokud se chcete vrátit ke spouštěči 2D, stačí z manifestu odebrat definici MixedRealityModel.

XML

Nejprve vyhledejte manifest balíčku aplikace v aktuálním projektu. Ve výchozím nastavení bude mít manifest název Package.appxmanifest. Pokud používáte Visual Studio, klikněte pravým tlačítkem na manifest v prohlížeči řešení a výběrem možnosti Zobrazit zdroj otevřete xml pro úpravy.

Na začátek manifestu přidejte schéma uap5 a zahrňte ho jako obor názvů, který lze ignorovat:

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

Dále zadejte "MixedRealityModel" do výchozí dlaždice pro vaši aplikaci:

<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 přijímá cestu k souboru odkazující na 3D asset uložený v balíčku aplikace. V současné době jsou podporovány pouze 3D modely dodávané pomocí formátu .glb a vytvořené podle pokynů pro vytváření 3D prostředků Windows Mixed Reality. Prostředky musí být uložené v balíčku aplikace a animace se v současné době nepodporují. Pokud parametr Path zůstane prázdný, zobrazí systém Windows místo 3D spouštěče 2D tabulku. Poznámka: Před sestavením a spuštěním aplikace musí být prostředek .glb v nastavení sestavení označený jako "Obsah".

V Průzkumníku řešení vyberte soubor .glb a v části Properties (Vlastnosti) ho v nastavení sestavení označte jako Obsah.
V Průzkumníku řešení vyberte soubor .glb a v části Properties (Vlastnosti) ho v nastavení sestavení označte jako Obsah.

Ohraničující rámeček

Ohraničující rámeček lze použít k přidání další oblasti vyrovnávací paměti kolem objektu. Ohraničující rámeček je určen pomocí středového bodu a rozsahů, které označují vzdálenost od středu ohraničujícího rámečku k jeho okrajům podél každé osy. Jednotky ohraničujícího rámečku lze namapovat na 1 jednotku = 1 metr. Pokud není ohraničující rámeček k dispozici, bude automaticky fitován do sítě objektu. Pokud je zadaný ohraničující rámeček menší než model, změní se jeho velikost tak, aby odpovídala síti.

Podpora atributu ohraničujícího rámečku bude součástí aktualizace Windows RS4 jako vlastnost prvku MixedRealityModel. Pokud chcete definovat ohraničující rámeček nejprve v horní části manifestu aplikace, přidejte schéma uap6 a zahrňte ho jako ignorovatelné obory názvů:

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

Dále v modelu MixedRealityModel nastavte vlastnost SpatialBoundingBox, která definuje ohraničující rámeček:

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

Použití Unity

Při práci s Unity musí být projekt sestaven a otevřen v sadě Visual Studio, aby bylo možné upravit manifest aplikace.

Poznámka

Při sestavování a nasazování nového řešení sady Visual Studio z Unity je potřeba v manifestu předefinovat 3D spouštěč.

Poznámka

Tato funkce byla přidána jako součást aktualizace 2017 Fall Creators Update (RS3) pro imerzivní náhlavní soupravy (VR) a jako součást aktualizace z dubna 2018 (RS4) pro HoloLens. Ujistěte se, že vaše aplikace cílí na verzi sady Windows SDK, která je vyšší nebo rovna 10.0.16299 na imerzivních náhlavních soupravách (VR) a verzi 10.0.17125 na HoloLensu. Nejnovější sadu Windows SDK najdete tady.

Důležité

3D přímé odkazy (sekundární) fungují jenom s 2D aplikacemi pro UPW. Můžete ale vytvořit spouštěč 3D aplikací, který spustí exkluzivní aplikaci z Windows Mixed Reality domovské stránky.

2D aplikace je možné vylepšit pro Windows Mixed Reality přidáním možnosti umísťovat 3D modely z vaší aplikace do Windows Mixed Reality domovské stránky jako přímé odkazy na obsah ve 2D aplikaci, stejně jako 2D sekundární dlaždice v nabídce Start ve Windows. Můžete například vytvořit 360° fotosféře, které odkazují přímo na aplikaci prohlížeče fotografií s 360°, nebo umožnit uživatelům umístit 3D obsah z kolekce prostředků, která otevře stránku podrobností o autorovi. Toto jsou jen několik způsobů, jak rozšířit funkce 2D aplikace o 3D obsah.

Vytvoření 3D "secondaryTile"

3D obsah z aplikace můžete umístit pomocí "secondaryTiles" definováním modelu hybridní reality v době vytvoření. Modely hybridní reality se vytvářejí odkazováním na 3D prostředek v balíčku aplikace a volitelně definováním ohraničujícího rámečku.

Poznámka

Vytváření sekundárních podsítí z exkluzivního zobrazení se v současné době nepodporuje.

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

Ohraničující rámeček

Ohraničující rámeček lze použít k přidání další oblasti vyrovnávací paměti kolem objektu. Ohraničující rámeček je určen pomocí středového bodu a rozsahů, které označují vzdálenost od středu ohraničujícího rámečku k jeho okrajům podél každé osy. Jednotky ohraničujícího rámečku lze namapovat na 1 jednotku = 1 metr. Pokud není k dispozici ohraničující rámeček, automaticky se připojí k síti objektu. Pokud je zadaný ohraničující rámeček menší než model, změní se jeho velikost tak, aby se vešla do sítě.

Chování aktivace

Poznámka

Tato funkce bude podporována od aktualizace Windows RS4. Pokud plánujete tuto funkci používat, ujistěte se, že vaše aplikace cílí na verzi sady Windows SDK, která je vyšší nebo rovna 10.0.17125.

Můžete definovat chování aktivace pro 3D sekundárníTile, abyste mohli řídit, jak bude reagovat, když ho uživatel vybere. To lze použít k umístění 3D objektů do Mixed Reality domů, které jsou čistě informativní nebo dekorativní. Podporují se následující typy chování při aktivaci:

  1. Výchozí: Když uživatel vybere 3D sekundárnítil, aplikace se aktivuje.
  2. Žádné: Když uživatel vybere 3D sekundárníTile, nic se nestane a aplikace se neaktivuje.

Získání a aktualizace existujícího "secondaryTile"

Vývojáři můžou získat zpět seznam svých stávajících sekundárních dlaždic, který obsahuje vlastnosti, které zadali dříve. Můžou také aktualizovat vlastnosti tak, že změní hodnotu a pak zavolá metodu 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();
}

Kontrola, jestli je uživatel v Windows Mixed Reality

3D přímé odkazy (secondaryTiles) se dají vytvořit jenom v době, kdy se zobrazení zobrazuje v Windows Mixed Reality náhlavní soupravě. Pokud se vaše zobrazení nezobrazuje v Windows Mixed Reality náhlavní soupravě, doporučujeme to elegantně vyřešit skrytím vstupního bodu nebo zobrazením chybové zprávy. Můžete to zkontrolovat dotazem IsCurrentViewPresentedOnHolographic().

Oznámení na dlaždici

Oznámení na dlaždici aktuálně nepodporují odesílání aktualizací s 3D assetem. To znamená, že vývojáři nemůžou dělat následující:

  • Nabízená oznámení
  • Pravidelné dotazování
  • Plánovaná oznámení

Další informace o funkcích a atributech ostatních dlaždic a o tom, jak se používají pro 2D dlaždice, najdete v dokumentaci k dlaždicím pro aplikace pro UPW.

Viz také