Observateur de compréhension de scène — MRTK2
Scene Understanding renvoie une représentation sémantique des entités de scène ainsi que leurs formes géométriques sur HoloLens 2 (HoloLens 1st Gen n’est pas pris en charge).
Voici quelques cas d’usage attendus de cette technologie :
- Placer les objets sur la surface la plus proche d’un certain type (par exemple, mur et plancher)
- Construire nav-mesh pour les jeux de style de plateforme
- Fournir une géométrie compatible avec le 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 (à la fois OpenXR (à partir de MRTK 2.7) et plug-in Windows XR). Dans les deux cas, le WindowsSceneUnderstandingObserver
est utilisé.
Notes
L’utilisation de Scene Understanding 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 Windows XR 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 d’autres comportements d’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 de lecture de l’éditeur.
Programme d’installation
Important
Scene Understanding est pris en charge uniquement sur HoloLens 2 et Unity 2019.4 et versions ultérieures.
- Vérifiez que la plateforme est définie sur UWP dans les paramètres de build.
- Acquérir le package Scene Understanding via Mixed Reality Feature Tool.
Utilisation de Scene Understanding
Le moyen le plus rapide de commencer à utiliser Scene Understanding consiste à case activée l’exemple de scène.
Exemple de scène Understanding
Dans Unity, utilisez la Explorer project pour ouvrir le fichier de scène dans Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity
et appuyez sur Lecture !
Important
S’applique uniquement à MRTK 2.6.0 : lors de l’utilisation de l’outil de fonctionnalité Mixed Reality ou d’une autre 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 montre ce qui suit :
- Visualisation des objets 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
Important
Par défaut, la ShouldLoadFromFile
propriété de l’observateur a la valeur false. Pour voir la visualisation d’un exemple de salle sérialisée, reportez-vous à la section configuration du service d’observateur ci-dessous et définissez la propriété sur true dans l’éditeur.
Notes
L’exemple de scène est basé sur le pipeline XR hérité. Si vous utilisez le pipeline du 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.
Notes
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.
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 sur le 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’instanciation de prefabs illustre la création d’objets dont la taille s’adapte à tous les objets SpatialAwarenessSceneObject, regroupés proprement sous un objet parent.
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 chutes de puits en effectuant des 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 cela est le cas, aucun maillage mondial 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.