3D-startprogramma's voor apps (UWP-apps) implementeren

Notitie

Deze functie is toegevoegd als onderdeel van de 2017 Fall Creators Update (RS3) voor immersive headsets en wordt ondersteund door HoloLens met de update van Windows 10 april 2018. Zorg ervoor dat uw toepassing is gericht op een versie van de Windows SDK die groter is dan of gelijk is aan 10.0.16299 op immersive headsets en 10.0.17125 op HoloLens. U vindt de nieuwste Windows SDK hier.

De Windows Mixed Reality home is het beginpunt waar gebruikers terechtkomen voordat toepassingen worden gestart. Bij het maken van een UWP-toepassing voor Windows Mixed Reality worden apps standaard gestart als 2D-slates met hun app-logo. Bij het ontwikkelen van ervaringen voor Windows Mixed Reality kan desgewenst een 3D-startprogramma worden gedefinieerd om het standaard 2D-startprogramma voor uw toepassing te overschrijven. Over het algemeen worden 3D-startprogramma's aanbevolen voor het starten van insluitende toepassingen die gebruikers uit de Windows Mixed Reality huis halen. Het standaard 2D-startprogramma heeft de voorkeur wanneer de app wordt geactiveerd. U kunt ook een 3D-dieptekoppeling (secondaryTile) maken als een 3D-startprogramma voor inhoud in een 2D UWP-app.

Proces voor het maken van het startprogramma voor 3D-apps

Er zijn drie stappen voor het maken van een 3D-startprogramma voor apps:

  1. Ontwerpen en ontwerpen
  2. Modelleren en exporteren
  3. Deze integreren in uw toepassing (dit artikel)

3D-assets die als startprogramma's voor uw toepassing moeten worden gebruikt, moeten worden gemaakt met behulp van de richtlijnen voor het ontwerpen van Windows Mixed Reality om compatibiliteit te garanderen. Assets die niet voldoen aan deze ontwerpspecificatie, worden niet weergegeven in de Windows Mixed Reality startpagina.

Het 3D-startprogramma configureren

Wanneer u een nieuw project maakt in Visual Studio, wordt er een eenvoudige standaardtegel gemaakt met de naam en het logo van uw app. Als u deze 2D-weergave wilt vervangen door een aangepast 3D-model, bewerkt u het app-manifest van uw toepassing zodat het element MixedRealityModel wordt opgenomen als onderdeel van uw standaardtegeldefinitie. Als u wilt terugkeren naar het 2D-startprogramma, verwijdert u de definitie MixedRealityModel uit het manifest.

XML

Zoek eerst het manifest van het app-pakket in uw huidige project. Standaard krijgt het manifest de naam Package.appxmanifest. Als u Visual Studio gebruikt, klikt u met de rechtermuisknop op het manifest in de oplossingsviewer en selecteert u Bron weergeven om de XML te openen voor bewerking.

Voeg boven aan het manifest het uap5-schema toe en neem het op als een te negeren naamruimte:

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

Geef vervolgens de 'MixedRealityModel' op in de standaardtegel voor uw toepassing:

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

Het element MixedRealityModel accepteert een bestandspad dat verwijst naar een 3D-asset die is opgeslagen in uw app-pakket. Momenteel worden alleen 3D-modellen die worden geleverd met de .glb-bestandsindeling en die zijn gemaakt op basis van de Windows Mixed Reality instructies voor het ontwerpen van 3D-assets worden ondersteund. Assets moeten worden opgeslagen in het app-pakket en animatie wordt momenteel niet ondersteund. Als de parameter Path leeg is, wordt in Windows de 2D-slate weergegeven in plaats van het 3D-startprogramma. Opmerking: de .glb-asset moet worden gemarkeerd als 'Inhoud' in uw build-instellingen voordat u uw app bouwt en uitvoert.

Selecteer het .glb in uw Solution Explorer en gebruik de sectie Eigenschappen om deze te markeren als 'Inhoud' in de build-instellingen
Selecteer het .glb in uw Solution Explorer en gebruik de sectie Eigenschappen om deze te markeren als 'Inhoud' in de build-instellingen

Begrenzingsvak

Een begrenzingsvak kan worden gebruikt om eventueel een extra buffergebied rond het object toe te voegen. Het begrenzingsvak wordt opgegeven met behulp van een middelpunt en gebieden, die de afstand van het midden van het begrenzingsvak tot de randen langs elke as aangeven. Eenheden voor het begrenzingsvak kunnen worden toegewezen aan 1 eenheid = 1 meter. Als er geen begrenzingsvak wordt geleverd, wordt er automatisch een op de mesh van het object geplaatst. Als het opgegeven begrenzingsvak kleiner is dan het model, wordt het formaat ervan aangepast aan de mesh.

Ondersteuning voor het begrenzingsvakkenmerk wordt geleverd met de Windows RS4-update als een eigenschap op het element MixedRealityModel. Als u eerst een begrenzingsvak boven aan het app-manifest wilt definiëren, voegt u het uap6-schema toe en neemt u dit op als negeerbare naamruimten:

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

Stel vervolgens op het MixedRealityModel de eigenschap SpatialBoundingBox in om het begrenzingsvak te definiëren:

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

Wanneer u met Unity werkt, moet het project worden gebouwd en geopend in Visual Studio voordat het app-manifest kan worden bewerkt.

Notitie

Het 3D-startprogramma moet opnieuw worden gedefinieerd in het manifest bij het bouwen en implementeren van een nieuwe Visual Studio-oplossing van Unity.

Notitie

Deze functie is toegevoegd als onderdeel van de 2017 Fall Creators Update (RS3) voor immersive (VR) headsets en als onderdeel van de update van april 2018 (RS4) voor HoloLens. Zorg ervoor dat uw toepassing is gericht op een versie van de Windows SDK die groter is dan of gelijk is aan 10.0.16299 op immersive (VR)-headsets en 10.0.17125 op HoloLens. U vindt de nieuwste Windows SDK hier.

Belangrijk

3D-dieptekoppelingen (secondaryTiles) werken alleen met 2D UWP-apps. U kunt echter een 3D-startprogramma voor apps maken om een exclusieve app te starten vanuit de Windows Mixed Reality home.

Uw 2D-toepassingen kunnen worden uitgebreid voor Windows Mixed Reality door de mogelijkheid toe te voegen om 3D-modellen vanuit uw app in de Windows Mixed Reality startpagina te plaatsen als dieptekoppelingen naar inhoud in uw 2D-app, net als secundaire 2D-tegels in het menu Start van Windows. U kunt bijvoorbeeld 360°-fotosferen maken die rechtstreeks zijn gekoppeld aan een 360°-app voor fotoviewer, of gebruikers 3D-inhoud laten plaatsen vanuit een verzameling assets waarmee een pagina met details over de auteur wordt geopend. Dit zijn slechts een paar manieren om de functionaliteit van uw 2D-toepassing uit te breiden met 3D-inhoud.

Een 3D-'secondaryTile' maken

U kunt 3D-inhoud vanuit uw toepassing plaatsen met behulp van 'secondaryTiles' door tijdens het maken een mixed reality-model te definiëren. Mixed reality-modellen worden gemaakt door te verwijzen naar een 3D-asset in uw app-pakket en eventueel een begrenzingsvak te definiëren.

Notitie

Het maken van 'secondaryTiles' vanuit een exclusieve weergave wordt momenteel niet ondersteund.

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

Begrenzingsvak

Een begrenzingsvak kan worden gebruikt om een extra buffergebied rond het object toe te voegen. Het begrenzingsvak wordt opgegeven met behulp van een middelpunt en gebieden, die de afstand van het midden van het begrenzingsvak tot de randen langs elke as aangeven. Eenheden voor het begrenzingsvak kunnen worden toegewezen aan 1 eenheid = 1 meter. Als er geen begrenzingsvak wordt geleverd, wordt er automatisch een in de mesh van het object geplaatst. Als het opgegeven begrenzingsvak kleiner is dan het model, wordt het formaat ervan aangepast aan de mesh.

Activeringsgedrag

Notitie

Deze functie wordt ondersteund vanaf de Windows RS4-update. Zorg ervoor dat uw toepassing is gericht op een versie van de Windows SDK die groter is dan of gelijk is aan 10.0.17125 als u deze functie wilt gebruiken

U kunt het activeringsgedrag voor een 3D secondaryTile definiëren om te bepalen hoe deze reageert wanneer een gebruiker deze selecteert. Dit kan worden gebruikt om 3D-objecten in de Mixed Reality huis te plaatsen die puur informatief of decoratief zijn. De volgende typen activeringsgedrag worden ondersteund:

  1. Standaardinstelling: wanneer een gebruiker de 3D-secundaire optie Selecteert, wordt de app geactiveerd
  2. Geen: Wanneer de gebruiker het 3D-secundaire bestand selecteert Gebeurt er niets en wordt de app niet geactiveerd.

Een bestaande 'secondaryTile' verkrijgen en bijwerken

Ontwikkelaars kunnen een lijst met hun bestaande secundaire tegels terughalen, met daarin de eigenschappen die ze eerder hebben opgegeven. Ze kunnen de eigenschappen ook bijwerken door de waarde te wijzigen en vervolgens UpdateAsync() aan te roepen.

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

Controleren of de gebruiker zich in Windows Mixed Reality

3D-dieptekoppelingen (secondaryTiles) kunnen alleen worden gemaakt terwijl de weergave wordt weergegeven in een Windows Mixed Reality headset. Wanneer uw weergave niet wordt weergegeven in een Windows Mixed Reality headset, raden we u aan dit probleem probleemloos af te handelen door het toegangspunt te verbergen of een foutbericht weer te geven. U kunt dit controleren door een query uit te voeren op IsCurrentViewPresentedOnHolographic().

Tegelmeldingen

Tegelmeldingen bieden momenteel geen ondersteuning voor het verzenden van een update met een 3D-asset. Dit betekent dat ontwikkelaars het volgende niet kunnen doen:

  • Pushmeldingen
  • Periodieke polling
  • Geplande meldingen

Zie de documentatie tegels voor UWP-apps voor meer informatie over de andere functies en kenmerken van tegels en hoe deze worden gebruikt voor 2D-tegels.

Zie ook