Cette page vous explique la manière dont le modèle de scène est implémenté, la façon dont il est capturé via la fonctionnalité de configuration de l’espace, et comment les ancrages de scène donnent accès aux données de l’environnement réel.
En quoi consistent le modèle de scène et la configuration de l’espace ?
Le modèle de scène est une représentation exhaustive unique de l’environnement physique. Il fournit des informations géométriques et sémantiques qui peuvent facilement être indexées et demandées par une application.
La configuration de l’espace est un processus géré par le système qui simplifie le flux de capture pour les utilisateur·ices, en capturant un modèle de scène unique accessible à toutes les applications auxquelles les utilisateur·ices ont accordé une autorisation d’accès.
Consultez l’article de présentation des scènes pour découvrir d’autres informations fondamentales sur le modèle de scène et la configuration de l’espace.
Comment fonctionnent le modèle de scène et la configuration de l’espace ?
Le modèle de scène est constitué de plusieurs ancrages de scène, chacun contenant des données complémentaires qui décrivent son intention. L’infrastructure d’ancrage est étroitement associée au modèle ECS (Entity-Component-System). Dans ce modèle, une entité désigne un simple type de données stockable avec un identifiant unique, les composants contiennent des données et sont stockés dans les entités et les systèmes agissent globalement sur toutes les entités qui disposent des composants nécessaires. Dans le contexte du modèle de scène, un ancrage de scène est une entité qui peut comporter un nombre quelconque de composants (par exemple, classification sémantique, plan d’encombrement 2D, ancrage localisable).
La configuration de l’espace (anciennement appelée capture de scène) désigne le processus qui capture un modèle de scène. Elle est gérée par le système de manière à ce que toutes les applications exécutées sur un appareil aient accès aux mêmes données d’environnement. Cela contredit le paradigme selon lequel chaque application devrait analyser l’environnement durant son cycle de vie.
La configuration de l’espace est un processus guidé par l’utilisateur·ice : elle commence par scanner l’environnement afin d’obtenir un maillage spatial et d’extraire les informations spatiales (comme la hauteur du sol et du plafond, les murs et les objets), puis l’utilisateur·ice finalise ce processus en corrigeant les éventuelles erreurs (positionnement des murs) et en ajoutant les informations manquantes (objets de la pièce). Ce processus peut être invoqué par le système ou par une application.
Pour l’instant, vous ne pouvez pas effectuer la configuration de l’espace par le biais de Link. Vous devez exécuter ce processus sur l’appareil avant de charger le modèle de scène via Link.
Le modèle de scène contient des données utilisateur sensibles. La possibilité pour une application d’accéder ou non à ces données est donc entièrement contrôlée par l’utilisateur·ice. Les applications doivent déclarer leur intention d’utiliser l’autorisation par l’intermédiaire de leur fichier manifeste, puis effectuer une demande d’autorisation au moment de l’exécution pour requérir l’approbation de l’utilisateur·ice.
Quels composants peuvent être attribués aux ancrages de scène ?
Les ancrages de scène ont besoin de composants pour décrire l’environnement représenté par le modèle de scène. Pour qu’un composant puisse fournir des données, il doit être activé. Les applications doivent donc demander à la fois si un ancrage de scène prend en charge un composant donné et si ce composant a été activé.
Étant donné que les ancrages de scène ne peuvent être créés que par le biais du processus de configuration de l’espace, ces types d’ancrages sont gérés par le système, alors que les ancrages spatiaux sont gérés par l’utilisateur·ice.
Différences entre les ancrages spatiaux et les ancrages de scène
Les ancrages de scène sont créés par Meta Horizon OS lors de la configuration de l’espace, tandis que les ancrages spatiaux sont créés par votre application. Les ancrages de scène contiennent d’autres informations propres à la scène, telles que le positionnement de l’ancrage. Enfin, votre application peut uniquement créer des ancrages spatiaux, mais elle peut interroger des ancrages de scène.
Un composant Locatable informe le système que cet ancrage peut être suivi. Une fois ce composant activé, une application peut demander continuellement les informations de positionnement de l’ancrage, qui peuvent varier en raison d’une différence de précision du suivi pendant le cycle de vie d’un ancrage.
Un composant RoomLayout contient des références aux ancrages qui composent les murs, le plafond et le sol. Un composant AnchorContainer contient une référence à une liste d’ancrages enfants.
Les composants Bounded2D et Bounded3D fournissent des informations sur les dimensions d’un ancrage. Ils possèdent une propriété size qui capture les dimensions, et une propriété offset qui décrit la différence entre l’origine de la boîte d’encombrement 2D/3D et l’origine de l’ancrage définie par le composant Locatable. Le composant TriangleMesh fournit un maillage triangulaire indexé pour un ancrage. Le composant Boundary2D donne accès au contour de polygone d’un ancrage, que l’on trouve généralement dans les ancrages de sol.
Le composant SemanticClassification catégorise l’ancrage en fonction d’un certain nombre de classifications. Vous trouverez ci-après la liste complète des classifications possibles.
Les composants Storable et Shareable s’appliquent uniquement aux ancrages spatiaux.
Ancrages de scène courants
Étant donné que le système gère les ancrages de scène, les composants pris en charge sont prédéterminés.
L’ancrage de scène de la pièce comporte un composant RoomLayout pour faire référence au plafond, aux murs et au sol, ainsi qu’un composant AnchorContainer contenant tous les ancrages de scène de la pièce.
Les ancrages de scène relatifs aux éléments 2D (tels que les murs, les plafonds, les sols, les fenêtres et les décorations murales) comportent un composant Locatable pour obtenir la position de l’ancrage, un composant Semantic Classification pour les étiquettes, un composant Bounded2D pour les dimensions de boîte d’encombrement, ainsi qu’un composant Boundary2D optionnel pour un contour de polygone (les sols utilisent ce composant pour afficher le contour d’une pièce créé à partir des murs).
Les ancrages de scène uniquement en 3D (comme les écrans, les plantes et autres) sont semblables aux ancrages de scène 2D, mais comprennent un composant Bounded3D au lieu d’un composant Bounded2D.
Certains ancrages de scène sont à la fois en 2D et en 3D (comme les tables, les canapés, les lits et les rangements). Dans ce cas, le composant 3D fait référence au volume d’encombrement, tandis que le composant 2D correspond à une zone d’intérêt, appelée surface fonctionnelle. Ces ancrages sont semblables aux ancrages 2D, mais contiennent également un composant Bounded3D.
Maillage de scène
Le maillage de scène est un maillage triangulaire qui couvre la totalité de l’espace avec un seul artefact statique. Il est aligné sur la surface à proximité des éléments de composition de la pièce (comme les murs, le plafond et le sol) et il décrit approximativement les limites de tous les autres objets de l’espace. Il est représenté sous forme d’ancrage de scène commun. Il n’existe toutefois qu’une seule instance de cet objet par espace.
L’ancrage de scène d’un maillage de scène comporte un composant Locatable pour obtenir la position de l’ancrage, un composant Semantic Classification pour l’étiquette GLOBAL_MESH, ainsi qu’un composant TriangleMesh pour fournir la géométrie.
Espace de coordonnées des ancrages de scène
Les ancrages de scène sont définis dans un système de coordonnées cartésiennes fondé sur la règle de la main droite pour correspondre au système de coordonnées OpenXR par défaut, alors que Unity utilise un système de coordonnées basé sur la règle de la main gauche. Cela implique certaines considérations en matière de temps de conception pour faire apparaître des objets qui doivent correspondre à l’orientation et aux dimensions des ancrages de scène, ainsi qu’une conversion au moment de l’exécution de chaque position 3D (la plupart du temps cachée aux développeur·ses).
Classifications sémantiques des scènes
Les classifications sémantiques catégorisent les ancrages de scène en fonction d’une liste de types d’objets prédéterminée et gérée par le système. Les classes sémantiques séparent les objets sur la base de critères qui dépassent leur description géométrique élémentaire pour permettre aux développeurs d’applications d’appliquer une logique de jeu propre à la classification.
Étiquettes sémantiques prises en charge
Étiquette sémantique
Description
Représentation géométrique
Structure de la pièce
CEILING
Plafond
2D
DOOR_FRAME
Un cadre de porte. Doit être présent à l’intérieur d’un mur
2D
FLOOR
Sol
2D
INVISIBLE_WALL_FACE
Surface murale ajoutée par la configuration de l’espace pour fermer une pièce ouverte
2D
WALL_ART
Une œuvre d’art murale. Doit être présent à l’intérieur d’un mur
2D
WALL_FACE
Surface murale
2D
WINDOW_FRAME
Cadre de fenêtre ; doit être placé dans une surface murale
2D
Contenu de la pièce
COUCH
Canapé
2D (siège) et 3D (volume)
TABLE
Table
2D (plateau de table) et 3D (volume)
BED
Lit
2D (surface) et 3D (volume)
LAMP
Lampe
3D
PLANT
Plante
3D
SCREEN
Écran
3D
STORAGE
Conteneur de rangement
2D (une seule étagère) et 3D (volume)
Objets de maillage
GLOBAL_MESH
Maillage triangulaire de l’espace de l’utilisateur·ice capturé lors de la configuration de l’espace
Objets non classés
OTHER
Volume général
3D
Cette liste d’étiquettes évolue régulièrement, à mesure que nous prenons en charge de nouveaux objets 2D et 3D. De ce fait, vous pouvez envisager d’utiliser le type OTHER comme solution de repli. Un objet auquel vous attribuez l’étiquette OTHER peut ne correspondre à aucun autre type à l’avenir ou nécessiter un changement d’étiquette par la suite.
En savoir plus
Maintenant que vous savez comment fonctionnent le modèle de scène et la configuration de l’espace ou la capture de scène, il est temps pour vous d’accéder aux données dans Unity.
Pour accéder directement aux données de scène, utilisez les composants asynchrones de bas niveau OVRAnchor.
Pour découvrir comment la confidentialité des données des utilisateur·ices est protégée par le biais d’autorisations, consultez l’article concernant les autorisations en matière de données spatiales.
Entrez directement dans le vif du sujet en explorant nos exemples de code.
Pour en savoir plus sur l’utilisation pratique des scènes, consultez nos recommandations.