Implémenter des lanceurs d’applications 3D (applications UWP)

Notes

Cette fonctionnalité a été ajoutée dans le cadre de l’automne 2017 Creators Update (RS3) pour les casques immersifs et est prise en charge par HoloLens avec la mise à jour Windows 10 avril 2018. Assurez-vous que votre application cible une version du SDK Windows supérieure ou égale à 10.0.16299 sur les casques immersifs et 10.0.17125 sur HoloLens. Vous trouverez la dernière version du SDK Windows ici.

Le Windows Mixed Reality domicile est le point de départ où les utilisateurs atterrissent avant de lancer des applications. Lors de la création d’une application UWP pour Windows Mixed Reality, par défaut, les applications sont lancées en tant qu’ardoises 2D avec le logo de leur application. Lors du développement d’expériences pour Windows Mixed Reality, un lanceur 3D peut éventuellement être défini pour remplacer le lanceur 2D par défaut pour votre application. En général, les lanceurs 3D sont recommandés pour lancer des applications immersives qui permettent aux utilisateurs de sortir du Windows Mixed Reality domicile. Le lanceur 2D par défaut est préférable lorsque l’application est activée sur place. Vous pouvez également créer un lien profond 3D (secondaryTile) en tant que lanceur 3D vers du contenu dans une application UWP 2D.

Processus de création du lanceur d’applications 3D

Il existe trois étapes pour créer un lanceur d’applications 3D :

  1. Conception et conception
  2. Modélisation et exportation
  3. Intégration à votre application (cet article)

Les ressources 3D à utiliser comme lanceurs pour votre application doivent être créées à l’aide des instructions de création Windows Mixed Reality pour garantir la compatibilité. Les ressources qui ne répondent pas à cette spécification de création ne seront pas affichées dans le Windows Mixed Reality accueil.

Configuration du lanceur 3D

Lorsque vous créez un projet dans Visual Studio, cela a pour effet de créer une vignette par défaut simple qui affiche le nom et le logo de votre application. Pour remplacer cette représentation 2D par un modèle 3D personnalisé, modifiez le manifeste d’application de votre application afin d’inclure l’élément « MixedRealityModel » dans votre définition de vignette par défaut. Pour revenir au lanceur 2D, supprimez simplement la définition MixedRealityModel du manifeste.

XML

Tout d’abord, recherchez le manifeste du package d’application dans votre projet actuel. Par défaut, le manifeste est nommé Package.appxmanifest. Si vous utilisez Visual Studio, cliquez avec le bouton droit sur le manifeste dans la visionneuse de votre solution, puis sélectionnez Afficher la source pour ouvrir le code xml à modifier.

En haut du manifeste, ajoutez le schéma uap5 et incluez-le en tant qu’espace de noms ignorable :

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

Ensuite, spécifiez « MixedRealityModel » dans la vignette par défaut de votre application :

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

L’élément MixedRealityModel accepte un chemin d’accès de fichier pointant vers une ressource 3D stockée dans votre package d’application. Actuellement, seuls les modèles 3D fournis à l’aide du format de fichier .glb et créés par rapport aux instructions de création de ressources 3D Windows Mixed Reality sont pris en charge. Les ressources doivent être stockées dans le package d’application et l’animation n’est actuellement pas prise en charge. Si le paramètre « Path » est laissé vide, Windows affiche l’ardoise 2D au lieu du lanceur 3D. Remarque : la ressource .glb doit être marquée comme « Contenu » dans vos paramètres de build avant de générer et d’exécuter votre application.

Sélectionnez le fichier .glb dans votre Explorateur de solutions et utilisez la section propriétés pour le marquer comme « Contenu » dans les paramètres de build
Sélectionnez le fichier .glb dans votre Explorateur de solutions et utilisez la section propriétés pour le marquer comme « Contenu » dans les paramètres de build

Rectangle englobant

Un cadre englobant peut être utilisé pour ajouter éventuellement une zone de mémoire tampon supplémentaire autour de l’objet. Le cadre englobant est spécifié à l’aide d’un point central et d’étendues, qui indiquent la distance entre le centre du cadre englobant et ses bords le long de chaque axe. Les unités du cadre englobant peuvent être mappées à 1 unité = 1 mètre. Si aucun cadre englobant n’est fourni, un cadre englobant est automatiquement ajusté au maillage de l’objet. Si le cadre englobant fourni est plus petit que le modèle, il est redimensionné pour s’adapter au maillage.

La prise en charge de l’attribut de cadre englobant est assurée avec la mise à jour Windows RS4 en tant que propriété sur l’élément MixedRealityModel. Pour définir un cadre englobant en haut du manifeste de l’application, ajoutez le schéma uap6 et incluez-le en tant qu’espaces de noms ignorés :

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

Ensuite, dans MixedRealityModel, définissez la propriété SpatialBoundingBox pour définir le cadre englobant :

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

Utilisation de Unity

Lorsque vous utilisez Unity, le projet doit être généré et ouvert dans Visual Studio avant que le manifeste de l’application puisse être modifié.

Notes

Le lanceur 3D doit être redéfini dans le manifeste lors de la génération et du déploiement d’une nouvelle solution Visual Studio à partir d’Unity.

Notes

Cette fonctionnalité a été ajoutée dans le cadre de l’automne 2017 Creators Update (RS3) pour les casques immersifs (VR) et dans le cadre de la mise à jour d’avril 2018 (RS4) pour HoloLens. Vérifiez que votre application cible une version du SDK Windows supérieure ou égale à 10.0.16299 sur les casques immersifs (VR) et 10.0.17125 sur HoloLens. Vous trouverez la dernière version du SDK Windows ici.

Important

Les liens profonds 3D (secondaryTiles) fonctionnent uniquement avec les applications UWP 2D. Toutefois, vous pouvez créer un lanceur d’applications 3D pour lancer une application exclusive à partir du Windows Mixed Reality accueil.

Vos applications 2D peuvent être améliorées pour Windows Mixed Reality en ajoutant la possibilité de placer des modèles 3D à partir de votre application dans le Windows Mixed Reality accueil en tant que liens profonds vers du contenu dans votre application 2D, tout comme les vignettes secondaires 2D dans le menu Démarrer de Windows. Par exemple, vous pouvez créer des photosphères à 360° qui sont directement liées à une application visionneuse de photos à 360°, ou permettre aux utilisateurs de placer du contenu 3D à partir d’une collection de ressources qui ouvre une page de détails sur l’auteur. Il ne s’agit que de deux façons d’étendre les fonctionnalités de votre application 2D avec du contenu 3D.

Création d’un « secondaryTile » 3D

Vous pouvez placer du contenu 3D à partir de votre application à l’aide de « secondaryTiles » en définissant un modèle de réalité mixte au moment de la création. Les modèles de réalité mixte sont créés en référençant une ressource 3D dans votre package d’application et en définissant éventuellement un cadre englobant.

Notes

La création de « secondaryTiles » à partir d’une vue exclusive n’est actuellement pas prise en charge.

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

Rectangle englobant

Un cadre englobant peut être utilisé pour ajouter une zone de mémoire tampon supplémentaire autour de l’objet. Le cadre englobant est spécifié à l’aide d’un point central et d’étendues, qui indiquent la distance entre le centre du cadre englobant et ses bords le long de chaque axe. Les unités du cadre englobant peuvent être mappées à 1 unité = 1 mètre. Si aucun cadre englobant n’est fourni, il est automatiquement ajusté au maillage de l’objet. Si le cadre englobant fourni est plus petit que le modèle, il est redimensionné pour s’adapter au maillage.

Comportement d’activation

Notes

Cette fonctionnalité sera prise en charge à partir de la mise à jour Windows RS4. Vérifiez que votre application cible une version du SDK Windows supérieure ou égale à 10.0.17125 si vous envisagez d’utiliser cette fonctionnalité

Vous pouvez définir le comportement d’activation d’un secondaryTile 3D afin de contrôler la façon dont il réagit lorsqu’un utilisateur le sélectionne. Cela peut être utilisé pour placer des objets 3D dans la Mixed Reality maison qui sont purement informatifs ou décoratifs. Les types de comportement d’activation suivants sont pris en charge :

  1. Par défaut : lorsqu’un utilisateur sélectionne le 3D secondaryTile, l’application est activée
  2. Aucun : lorsque l’utilisateur sélectionne le module secondaire 3D, rien ne se produit et l’application n’est pas activée.

Obtention et mise à jour d’un « secondaryTile » existant

Les développeurs peuvent récupérer une liste de leurs vignettes secondaires existantes, qui inclut les propriétés qu’ils ont précédemment spécifiées. Ils peuvent également mettre à jour les propriétés en modifiant la valeur, puis en appelant 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();
}

Vérification que l’utilisateur est dans Windows Mixed Reality

Les liens profonds 3D (secondaryTiles) ne peuvent être créés que lorsque la vue est affichée dans un casque Windows Mixed Reality. Lorsque votre affichage n’est pas présenté dans un casque Windows Mixed Reality, nous vous recommandons de le gérer correctement en masquant le point d’entrée ou en affichant un message d’erreur. Vous pouvez case activée cela en interrogeant IsCurrentViewPresentedOnHolographic().

Notifications par vignette

Les notifications par vignette ne prennent actuellement pas en charge l’envoi d’une mise à jour avec une ressource 3D. Cela signifie que les développeurs ne peuvent pas effectuer les opérations suivantes :

  • Notifications Push
  • Interrogation périodique
  • Notifications planifiées

Pour plus d’informations sur les autres fonctionnalités et attributs de vignettes et sur la façon dont ils sont utilisés pour les vignettes 2D, consultez la documentation Vignettes pour les applications UWP.

Voir aussi