Observateur de compréhension de scène — MRTK2

La compréhension des scènes renvoie une représentation sémantique des entités de scène ainsi que de leurs formes géométriques sur HoloLens 2 (HoloLens 1ère génération n’est pas pris en charge).

Voici quelques cas d’usage attendus de cette technologie :

  • Placer des objets sur la surface la plus proche d’un certain type (par exemple, mur et sol)
  • Construire un maillage de navigation pour les jeux de style de plateforme
  • Fournir une géométrie conviviale du moteur physique sous forme de quads
  • Accélérer le développement en évitant d’avoir à écrire des algorithmes similaires

Scene Understanding est introduit en tant que fonctionnalité expérimentale dans MRTK 2.6. Il est intégré à MRTK en tant qu’observateur spatial appelé WindowsSceneUnderstandingObserver. Scene Understanding fonctionne à la fois avec le pipeline XR hérité et le pipeline sdk XR (OpenXR (à partir de MRTK 2.7) et plug-in Windows XR). Dans les deux cas, le WindowsSceneUnderstandingObserver est utilisé.

Remarque

L’utilisation de La compréhension de scène dans la communication à distance est uniquement prise en charge dans MRTK 2.7.3 et versions ultérieures. Seuls les projets utilisant OpenXR sont pris en charge. Les projets utilisant le pipeline XR hérité ou le plug-in XR Windows ne sont pas pris en charge.

Vue d’ensemble de l’observateur

Lorsque vous y êtes invité, le WindowsSceneUnderstandingObserver renvoie SpatialAwarenessSceneObject avec des attributs utiles pour que l’application comprenne son environnement. La fréquence d’observation, le type d’objet retourné (par exemple, mur, plancher) et les autres comportements de l’observateur dépendent de la configuration de l’observateur via le profil. Par instance, si le masque d’occlusion est souhaité, l’observateur doit être configuré pour générer des quads. La scène observée peut être enregistrée en tant que fichier sérialisé qui peut être chargé ultérieurement pour recréer la scène en mode lecture de l’éditeur.

Installation

Importante

Scene Understanding est pris en charge uniquement sur HoloLens 2 et Unity 2019.4 et versions ultérieures.

  1. Vérifiez que la plateforme est définie sur UWP dans les paramètres de build.
  2. Acquérir le package Scene Understanding via Mixed Reality Feature Tool.

Utilisation de La compréhension des scènes

Le moyen le plus rapide de commencer à utiliser La compréhension de la scène consiste à case activée l’exemple de scène.

Exemple de scène De compréhension de la scène

Dans Unity, utilisez le Explorer Project pour ouvrir le fichier de scène dans Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity et appuyez sur Lecture !

Importante

S’applique uniquement à MRTK 2.6.0 : lorsque vous utilisez l’outil de fonctionnalité Mixed Reality ou que vous effectuez une importation via UPM, importez l’exemple Demos - SpatialAwareness avant d’importer l’exemple Experimental - SceneUnderstanding en raison d’un problème de dépendance. Pour plus d’informations, consultez ce problème GitHub .

La scène illustre les éléments suivants :

  • Visualisation des objets de scène observés avec dans l’interface utilisateur de l’application pour la configuration de l’observateur
  • Exemple de DemoSceneUnderstandingController script qui montre comment modifier les paramètres de l’observateur et écouter les événements pertinents
  • Enregistrement des données de scène sur l’appareil pour le développement hors connexion
  • Chargement des données de scène précédemment enregistrées (fichiers .bytes) pour prendre en charge le workflow de développement dans l’éditeur

Importante

Par défaut, la ShouldLoadFromFile propriété de l’observateur est définie sur false. Pour voir la visualisation d’un exemple de salle sérialisée, reportez-vous à la section configuration du service observateur ci-dessous et définissez la propriété sur true dans l’éditeur.

Remarque

L’exemple de scène est basé sur le pipeline XR hérité. Si vous utilisez le pipeline du Kit de développement logiciel (SDK) XR, vous devez modifier les profils en conséquence. Le profil Scene Understanding Spatial Awareness System fourni (DemoSceneUnderstandingSystemProfile) et les profils Scene Understanding Observer (DefaultSceneUnderstandingObserverProfile et DemoSceneUnderstandingObserverProfile) fonctionnent pour les deux pipelines.

Remarque

L’exemple de scène enregistre un There is no active AsyncCoroutineRunner when an action is posted. avertissement dans certaines circonstances en raison de l’ordre d’initialisation/d’exécution du thread. Si vous pouvez confirmer que le AsyncCoroutineRunner composant est attaché au GameObject « Demo Controller » et que le composant/GameObject reste activé/actif dans la scène (cas par défaut), l’avertissement peut être ignoré en toute sécurité. Toutefois, lors de la création d’une scène avec Scene Understanding, veillez à créer un GameObject vide à la racine et à y attacher le AsyncCoroutineRunner script, sinon Scene Understanding risque de ne pas fonctionner correctement.

Configuration du service d’observateur

Sélectionnez l’objet de jeu « MixedRealityToolkit » et case activée l’inspecteur.

emplacement de compréhension de scène dans la hiérarchie

Emplacement MRTK dans l’inspecteur

Ces options permettent de configurer le WindowsSceneUnderstandingObserver.

Exemple de script

L’exemple de script DemoSceneUnderstandingController.cs illustre les principaux concepts de l’utilisation du service Scene Understanding.

  • Abonnement aux événements Scene Understanding
  • Gestion des événements Scene Understanding
  • Configuration de au moment de l’exécution WindowsSceneUnderstandingObserver

Les bascules du panneau de la scène modifient le comportement de l’observateur de compréhension de scène en appelant des fonctions publiques de cet exemple de script.

L’activation de l’option Instanciation prefabs illustre la création d’objets dont la taille s’adapte à tous les objets SpatialAwarenessSceneObject, soigneusement regroupés sous un objet parent.

options du contrôleur de démonstration

Notes d’application générées

Générez et déployez sur HoloLens de manière standard. Une fois en cours d’exécution, un certain nombre de boutons doivent apparaître pour jouer avec les fonctionnalités.

Notez qu’il y a des problèmes lors de la création de requêtes à l’observateur. Une configuration incorrecte d’une demande d’extraction entraîne que votre charge utile d’événement ne contient pas les données attendues. Par exemple, si l’on ne demande pas de quads, aucune texture de masque d’occlusion n’est présente. Comme sage, aucun maillage de monde n’apparaît si l’observateur n’est pas configuré pour demander des maillages. Le DemoSceneUnderstandingController script prend en charge certaines de ces dépendances, mais pas toutes.

Les fichiers de scène enregistrés sont accessibles via le portail de l’appareil à l’adresse User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Ces fichiers de scène peuvent être utilisés dans l’éditeur en les spécifiant dans le profil d’observateur trouvé dans l’inspecteur.

Emplacement du fichier d’octets dans le portail d’appareil

Octets de scène sérialisés dans l’observateur

Voir aussi