Ancres spatiales

Une ancre spatiale représente un point important dans le monde que le système suit au fil du temps. Chaque ancre a un système de coordonnées ajustable, basé sur d’autres ancres ou cadres de référence, pour garantir que les hologrammes ancrés restent précisément en place. Le rendu d’un hologramme dans le système de coordonnées d’une ancre vous donne le positionnement le plus précis pour cet hologramme à tout moment. Cela se fait au prix de petits ajustements au fil du temps de la position de l’hologramme, car le système le replace continuellement en place en fonction du monde réel.

Vous pouvez également conserver et partager des ancres spatiales entre les sessions d’application et les appareils :

  • En enregistrant les ancres spatiales locales sur le disque et en les chargeant ultérieurement, votre application peut calculer le même emplacement dans le monde réel sur plusieurs sessions d’application sur un seul HoloLens.
  • En utilisant Azure Spatial Anchors pour créer une ancre cloud, votre application peut partager une ancre spatiale sur plusieurs appareils HoloLens, iOS et Android. En demandant à chaque appareil de restituer un hologramme à l’aide de la même ancre spatiale, les utilisateurs verront l’hologramme apparaître au même endroit dans le monde réel. Cette technique autorise les expériences partagées en temps réel.
  • Vous pouvez également utiliser Azure Spatial Anchors pour la persistance asynchrone des hologrammes sur les appareils HoloLens, iOS et Android. En partageant une ancre spatiale cloud durable, plusieurs appareils peuvent observer le même hologramme persistant au fil du temps, même si ces appareils ne sont pas présents ensemble en même temps.

Pour les expériences à l’échelle permanente ou à l’échelle de la salle pour les casques de bureau attachés qui resteront dans un diamètre de 5 mètres, vous pouvez généralement utiliser le cadre de référence intermédiaire au lieu d’ancres spatiales, qui vous fournit un système de coordonnées unique dans lequel afficher tout le contenu. Toutefois, si votre application permet aux utilisateurs d’aller au-delà de 5 mètres dans HoloLens, peut-être de fonctionner sur tout un étage d’un bâtiment, vous aurez besoin d’ancres spatiales pour maintenir la stabilité du contenu.

Bien que les ancres spatiales soient idéales pour les hologrammes qui doivent rester fixes dans le monde, une fois placée, une ancre ne peut pas être déplacée. Il existe des alternatives aux ancres qui conviennent mieux aux hologrammes dynamiques qui marquent avec l’utilisateur. Il est préférable de positionner des hologrammes dynamiques à l’aide d’un cadre de référence stationnaire (base des coordonnées mondiales d’Unity) ou d’un cadre de référence attaché.

Bonnes pratiques

Les recommandations ci-après sur les ancres spatiales vous aident à afficher des hologrammes stables qui suivent avec précision le monde réel.

Créer les ancres spatiales là où les utilisateurs les placent

En règle générale, ce sont les utilisateurs qui placent explicitement des ancres spatiales.

Par exemple, sur HoloLens, une application peut croiser le rayon du regard de l’utilisateur avec le maillage de mappage spatial pour permettre à l’utilisateur de décider où placer un hologramme. Lorsque l’utilisateur appuie pour placer cet hologramme, créez une ancre spatiale au point d’intersection, puis placez l’hologramme à l’origine du système de coordonnées de cette ancre.

Les ancres spatiales locales sont faciles et performantes à créer. Le système combine des données internes si plusieurs ancres peuvent partager leurs données de capteur sous-jacentes. Nous vous recommandons de créer une nouvelle ancre spatiale locale pour chaque hologramme qu’un utilisateur place explicitement, sauf dans les cas décrits ci-dessous, tels que des groupes rigides d’hologrammes.

Toujours afficher les hologrammes ancrés à une distance maximale de 3 mètres de leur ancre

Les ancres spatiales stabilisent leur système de coordonnées près de leur origine. Si vous affichez des hologrammes à plus de 3 mètres de l’origine, les hologrammes peuvent rencontrer des erreurs de position notables proportionnellement à leur distance par rapport à cette origine en raison d’effets de levier-bras. Cela fonctionne si l’utilisateur se trouve près de l’ancre, car l’hologramme est également loin de l’utilisateur. En d’autres termes, l’erreur angulaire de l’hologramme distant sera petite. Toutefois, si l’utilisateur marche jusqu’à cet hologramme distant, il sera grand dans sa vue, ce qui rend évident les effets de levier-bras de l’origine d’ancre lointaine.

Regrouper les hologrammes qui doivent former un cluster rigide

Plusieurs hologrammes peuvent partager la même ancre spatiale si l’application s’attend à ce que ces hologrammes conservent des relations fixes entre eux.

Par exemple, si vous animez un système solaire holographique dans une pièce, il est préférable de lier tous les objets du système solaire à une seule ancre au centre. De cette façon, ils se déplaceront sans problème en fonction l’un de l’autre. Dans ce cas, c’est le système solaire dans son ensemble qui est ancré, même si ses composants se déplacent dynamiquement autour de l’ancre.

La principale mise en garde pour maintenir la stabilité des hologrammes est de suivre la règle de 3 mètres ci-dessus.

Afficher les hologrammes hautement dynamiques à l’aide du cadre de référence stationnaire au lieu d’une ancre spatiale locale

Si vous avez un hologramme très dynamique, tel qu’un caractère se promenant dans une pièce ou une interface utilisateur flottante qui suit le mur près de l’utilisateur, il est préférable d’ignorer les ancres spatiales locales et de restituer ces hologrammes directement dans le système de coordonnées fourni par le cadre de référence stationnaire. Dans Unity, vous pouvez y parvenir en plaçant les hologrammes directement dans les coordonnées du monde sans WorldAnchor. Les hologrammes dans un cadre de référence stationnaire peuvent rencontrer une dérive lorsque l’utilisateur est loin de l’hologramme. Mais cela est moins probable pour les hologrammes dynamiques : soit l’hologramme se déplace constamment de toute façon, soit son mouvement le maintient constamment proche de l’utilisateur où la dérive sera réduite au minimum.

Un cas intéressant d’hologrammes dynamiques est un objet qui s’anime d’un système de coordonnées ancré à un autre. Par exemple, vous pouvez avoir deux châteaux séparés de 10 mètres, chacun sur leur propre ancre spatiale avec un château tirant un boulet de canon sur l’autre château. Lorsque le boulet de canon est tiré, vous pouvez le rendre à l’emplacement approprié dans le cadre stationnaire de référence pour coïncider avec le canon dans le système de coordonnées ancré du premier château. Il peut ensuite suivre sa trajectoire dans le cadre stationnaire de référence quand il parcourt 10 mètres dans l’air. Lorsque le boulet de canon atteint l’autre château, vous pouvez le déplacer dans le système de coordonnées ancré du second château pour permettre des calculs physiques avec les corps rigides de ce château.

Si vous partagez un hologramme hautement dynamique entre des appareils, choisissez une ancre spatiale cloud pour qu’elle joue le rôle de parent, car les cadres de référence stationnaires ne peuvent pas être partagés entre les appareils. Toutefois, vous devez vous assurer que l’hologramme dynamique ou les appareils qui l’affichent restent dans le rayon de 3 mètres de l’ancre afin que l’hologramme apparaisse stable sur tous les appareils.

Éviter de créer une grille d’ancres spatiales

Vous pouvez être tenté de demander à votre application de supprimer une grille régulière d’ancres spatiales à mesure que l’utilisateur se déplace, en faisant passer les objets dynamiques d’une ancre à une ancre à mesure qu’ils se déplacent. Toutefois, cela implique davantage de gestion pour votre application, sans l’avantage des données de capteur approfondies que le système lui-même gère en interne. Dans ce cas, vous obtiendrez de meilleurs résultats en plaçant vos hologrammes dans le cadre de référence stationnaire, comme décrit dans la section ci-dessus. Lorsque vous pré-positionnez un ensemble d’ancres spatiales cloud autour d’un espace statique, envisagez de placer les ancres spatiales aux emplacements des hologrammes clés que l’utilisateur rencontre conformément au principe ci-dessus plutôt que de créer une grille arbitraire d’ancres. Ainsi, vous obtenez une stabilité maximale pour ces hologrammes clés.

Libérer les ancres spatiales locales dont vous n’avez plus besoin

Alors qu’une ancre spatiale locale est active, le système donne la priorité à la conservation des données de capteur qui se situent à proximité de cette ancre. Si vous n’utilisez plus d’ancre spatiale, arrêtez d’accéder à son système de coordonnées. Cela permet de supprimer les données de capteur sous-jacentes si nécessaire.

Cela est particulièrement important pour les ancres locales que vous avez conservées dans le magasin d’ancres spatiales. Les données de capteur derrière ces ancres seront conservées de manière permanente pour permettre à votre application de trouver cette ancre dans les sessions futures, ce qui réduit l’espace disponible pour suivre d’autres ancres. Conservez uniquement les ancres locales que vous devez retrouver dans les sessions ultérieures. Nous vous recommandons de les supprimer du magasin lorsqu’ils ne sont plus significatifs pour l’utilisateur.

Pour les ancres spatiales cloud, votre stockage peut évoluer en fonction de votre scénario. Vous pouvez stocker autant d’ancres cloud que nécessaire, en les libérant lorsque vous savez que vos utilisateurs n’auront plus besoin de l’ancre.

Voir aussi