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 réglable, 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 donné. Cela vient au coût de petits ajustements au fil du temps à la position de l’hologramme, car le système la déplace continuellement en place en fonction du monde réel.
Vous pouvez également conserver et partager des ancres spatiales entre les sessions d’application : 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 dans plusieurs sessions d’application sur un seul HoloLens.
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 des 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 tout au long d’un étage d’un bâtiment, vous aurez besoin d’ancres spatiales pour maintenir le contenu stable.
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 plus appropriées pour les hologrammes dynamiques qui balisent avec l’utilisateur. Il est préférable de positionner des hologrammes dynamiques à l’aide d’un cadre stationnaire de référence (la 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, les utilisateurs sont ceux qui placent explicitement des ancres spatiales.
Par exemple, sur HoloLens, une application peut croiser le rayon de 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 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 de plus de 3 mètres de l’origine, les hologrammes peuvent rencontrer des erreurs positionnelles notables en proportion de leur distance par rapport à cette origine en raison des effets du levier-bras. Cela fonctionne si l’utilisateur se trouve près de l’ancre, car l’hologramme est loin de l’utilisateur, également. En d’autres termes, l’erreur angulaire de l’hologramme distant est petite. Toutefois, si l’utilisateur monte jusqu’à cet hologramme distant, il sera grand dans leur vue, ce qui rend les effets de levier-bras de l’origine d’ancre éloignée évidente.
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 maintiennent des relations fixes entre elles.
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 vont se déplacer sans problème en fonction les uns des autres. 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 mise en garde clé pour maintenir la stabilité de l’hologramme consiste à 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 disposez d’un hologramme hautement dynamique, tel qu’un caractère qui se déplace autour d’une pièce ou d’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 stationnaire de référence. Dans Unity, vous obtenez cela en plaçant des hologrammes directement dans des coordonnées mondiales sans WorldAnchor. Les hologrammes dans un cadre stationnaire de référence peuvent rencontrer une dérive lorsque l’utilisateur est loin de l’hologramme. Mais cela est moins susceptible d’être remarqué pour les hologrammes dynamiques : soit l’hologramme se déplace constamment de toute façon, soit son mouvement le maintient constamment près de l’utilisateur où la dérive sera réduite.
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 de 10 mètres à part, chacun sur leur propre ancre spatiale avec un château tirant un boulet de canon à l’autre château. Lorsque la boule de canon est déclenchée, vous pouvez la 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. Comme 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 les appareils, choisissez une ancre spatiale cloud pour agir en tant que parent, car les trames stationnaires de référence ne peuvent pas être partagées 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 faire en sorte que votre application supprime une grille régulière d’ancres spatiales lorsque l’utilisateur se déplace, en passant des objets dynamiques de l’ancre à l’ancre au fur et à mesure qu’ils se déplacent. Toutefois, cela implique davantage de gestion pour votre application, sans bénéficier des données de capteur profond que le système gère en interne. Pour ces cas, vous obtiendrez de meilleurs résultats en plaçant vos hologrammes dans le cadre stationnaire de référence, 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 par le 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
Bien qu’une ancre spatiale locale soit active, le système hiérarchise la conservation des données de capteur proches de cette ancre. Si vous n’utilisez plus d’ancre spatiale, arrêtez d’accéder à son système de coordonnées. Cela permet à ses données de capteur sous-jacentes d’être supprimées 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, les libérer lorsque vous savez que vos utilisateurs n’auront plus besoin de l’ancre.