Concepts de World Locking Tools
La problématique
Dans le monde physique quotidien, l’espace est bien décrit par un système de coordonnées stationnaire. Un objet immobile dans un système de coordonnées stationnaire gardera les mêmes coordonnées pour toujours. Un groupe d’objets disposés dans une configuration spécifique conservera cette configuration. Deux objets se déplaçant à des vitesses identiques resteront à une distance fixe l’un de l’autre.
Ces lois et d’autres lois semblables sont une partie tellement fondamentale de l’existence que lorsqu’elles ne tiennent plus, l’intuition sur le monde n’est plus fiable.
Solutions précédentes
L’espace de coordonnées global et les ancres spatiales d’Unity répondent chacun à différents aspects des problèmes provoqués par les imprécisions et la dérive des capteurs.
L’espace de coordonnées global d’Unity fournit un cadre de référence stable dans lequel les objets holographiques restent fixes les uns par rapport aux autres. Bien que les objets de cet espace se comportent de manière cohérente les uns par rapport aux autres, la cohérence avec le monde physique n’est ni garantie ni fournie en règle générale. Des incohérences se développent en particulier lorsque l’utilisateur se déplace.
Les ancres spatiales d’Unity peuvent maintenir la position d’un hologramme dans le monde physique lorsque l’utilisateur est mobile, mais au sacrifice de l’auto-cohérence au sein du monde virtuel. Les différentes ancres se déplacent constamment les unes par rapport aux autres. Elles se déplacent également dans l’espace de coordonnées global, ce qui complique des tâches simples comme la disposition, et rend problématique la simulation physique.
La source du problème
La discussion est ici axée sur la technologie HoloLens, mais ces concepts s’appliquent généralement aux techniques de suivi sans marqueur de l’intérieur vers l’extérieur, en particulier lorsqu’elles sont complétées par des systèmes inertiels.
HoloLens détermine avec une précision extraordinaire où il se trouve par rapport aux caractéristiques visibles de son environnement. Par extension, il est également capable de positionner d’autres objets virtuels en fonction de ces mêmes caractéristiques visibles. Lorsque l’utilisateur est assis ou debout dans une position à peu près constante, l’appareil est très efficace pour garder les objets virtuels enregistrés avec les points de référence physiques visibles. Une tasse virtuelle placée sur une table physique restera le plus souvent au même endroit sur la surface de la table.
C’est le cas lorsque HoloLens est confiné au même petit volume, avec un ensemble constant de caractéristiques visibles en vue pour référence. Mais il existe d’autres scénarios intéressants.
Lorsque l’utilisateur se lève et se déplace dans la pièce, voire d’une pièce à l’autre, HoloLens doit basculer entre les anciennes caractéristiques qui quittent la vue et les nouvelles qui apparaissent. Sans entrer dans les détails d’implémentation, il est clair que pendant le transit, la précision du suivi sera très dégradée.
Voici un scénario simpliste pour le contexte.
Illustration
L’utilisateur se trouve au point A. En regardant autour de lui, de nombreuses caractéristiques de référence sont visibles, donc la qualité du suivi de la tête est excellente et tous les hologrammes placés resteront au même endroit.
L’utilisateur parcourt ensuite 10 mètres dans l’espace physique jusqu’au point B. Le suivi en transit est moins fidèle, si bien qu’une fois que l’utilisateur a atteint le point B, l’appareil enregistre qu’il n’a parcouru que 9 mètres. C’est une différence conséquente pour illustrer le problème, mais elle est conforme aux spécifications de l’appareil, qui autorise une erreur de distance de + ou -10 % dans de telles situations.
Lorsque l’appareil regarde autour de lui au point B, les bonnes caractéristiques visibles sont enregistrées. Le suivi et la stabilité des hologrammes au point B sont également excellents.
Lorsque l’utilisateur se trouve à un point particulier, les choses autour de ce point apparaissent très bien. Mais il existe une incohérence. Les 10 mètres entre les points A et B dans l’espace physique ne sont que 9 mètres dans l’espace virtuel. C’est ce qu’on appelle souvent « le problème de l’échelle », bien que « le problème de la distance » soit plus exact. Nous nous pencherons bientôt sur ce problème.
Revenons à notre scénario : pour l’action suivante, l’utilisateur retourne au point A. Cette fois, les erreurs de suivi font que les 10 mètres de marche de B à A dans l’espace physique produisent 10,5 mètres dans l’espace virtuel. Cela signifie que la marche complète de A à B, puis de B à A représente une distance nette de 1,5 mètre, alors qu’elle devrait être de 0,0 mètre. Il s’agit d’un problème évident. Un hologramme placé au point A avant la marche apparaîtra maintenant à 1,5 mètre du point A.
C’est là que les ancres spatiales peuvent vous aider. Après avoir fait l’aller-retour jusqu’au point B, le système reconnaît qu’il est de retour au point A, alors que les coordonnées Unity de la tête ont changé de 1,5 mètre. Mais si l’hologramme au point A a une ancre spatiale attachée, l’ancre spatiale peut se dire « Je suis au point A, la tête est au point A, mais mes coordonnées diffèrent des coordonnées de la tête de 1,5 mètre. Je vais simplement changer mes coordonnées de 1,5 mètre pour que nous soyons à nouveau en accord. » Et une ancre spatiale au point C, à un mètre à gauche de l’utilisateur, passe par le même processus. En fait, l’ancre spatiale redéfinit constamment l’emplacement du point A dans l’espace de l’unité afin que les coordonnées de la tête soient toujours correctes. Et chaque ancre spatiale effectue cet ajustement indépendamment pour sa place dans le monde physique.
World Locking Tools pour Unity
World Locking Tools maintient un approvisionnement interne des ancres spatiales qu’il propage à mesure que l’utilisateur se déplace. Il analyse les coordonnées de la caméra et les ancres spatiales de chaque image. Il détecte quand toutes ces ancres spatiales se déplacent de plus de 1,5 mètre pour correspondre aux coordonnées de la tête, et se dit « Hmm, au lieu de changer les coordonnées de tout le monde pour compenser le fait que la tête a des coordonnées différentes de celles qu’elle avait la dernière fois qu’elle était là, je vais plutôt me contenter de corriger les coordonnées de la tête ».
Cela signifie que, plutôt que d’avoir une ancre spatiale qui fait glisser un hologramme à travers l’espace d’Unity pour qu’il reste fixé dans l’espace physique, l’espace entier du monde d’Unity est fermé à l’espace physique. Si un hologramme est immobile dans l’espace d’Unity, il restera immobile par rapport aux éléments du monde physique qui l’entourent. Et il est tout aussi important qu’il reste fixe par rapport aux caractéristiques virtuelles qui l’entourent.
Évidemment, c’est plus compliqué en coulisses. Par exemple, rappelez-vous que le problème avec les ancres spatiales est qu’elles se déplacent indépendamment, et donc qu’elles ne sont pas toujours en accord les unes avec les autres. Le moteur FrozenWorld sous-jacent arbitre ces désaccords pour proposer la correction de caméra la plus correcte du point de vue de la perception, et ce à chaque image.
Encore le problème de l’échelle
Si l’utilisateur marche d’un point A à un point B et revient au point A, le système dispose de suffisamment d’informations pour corriger la dérive qui s’est produite pendant le trajet. Il ne sait peut-être pas où se trouve le point B (et en général, il ne sait pas exactement où se trouve un point B par rapport au point A), mais il sait s’il se trouve au point A ou non. Lorsqu’il revient au point A, il s’attend à ce que les choses soient à peu près dans l’état dans lequel il les a laissées. Si ce n’est pas le cas, le système peut s’adapter.
Mais qu’en est-il du point B ? Il pensait que la marche de 10 mètres n’était que de 9 mètres. Et il n’a aucun moyen de savoir si ces 9 mètres sont corrects et, si ce n’est pas le cas, de combien la distance est erronée. Les ancres spatiales ne sont d’aucune utilité ici. Les ancres spatiales ont le même problème que le dispositif de suivi de tête : chacun sait où il se trouve dans le monde physique (par rapport aux caractéristiques visibles), mais une ancre spatiale ne sait rien d’une autre ancre spatiale. Plus précisément, les ancres spatiales ne savent pas de quelle distance elles sont éloignées.
Cela peut être gênant à différents niveaux, mais cela devient un problème bloquant lorsque les objets, ou les systèmes d’objets, ont une taille supérieure à un mètre environ. Considérez le modèle d’une pièce, d’un bâtiment, d’un ensemble de bureaux ou même d’une voiture. Alors qu’une ancre spatiale peut permettre à une extrémité du modèle de correspondre à un élément du monde physique, lorsque l’autre extrémité du modèle est atteinte, une erreur importante peut s’être accumulée. L’autre extrémité ne sera pas correctement alignée. Et l’erreur sera différente d’un appareil à l’autre, voire d’une exécution à l’autre sur le même appareil.
Jusqu’ici, dans cette discussion, les informations minimales requises pour résoudre le problème n’ont pas été introduites.
World Locking Tools aborde ce problème avec l’API Space Pins, qui permet à l’application de fournir suffisamment d’informations relatives au monde physique et au monde holographique pour corriger les erreurs de distance parcourue. Cela permet aux grands hologrammes d’apparaître alignés avec le monde physique partout.
Présentation du système de base
Maintenant que nous avons une vue d’ensemble des concepts de World Locking Tools, prenons un peu de recul et jetons un coup d’œil au système de base. Comprendre quels services l’opération de base fournit et ne fournit pas vous aidera à déterminer l’utilisation appropriée des concepts avancés plus tard, et si ces techniques avancées sont en premier lieu nécessaires pour une application spécifique.