L’idée de base
Les systèmes de suivi de la tête intérieur-extérieur constituent une nouvelle technologie exceptionnelle. À leur potentiel maximum, ils sont presque magiques. Mais ils ont également des faiblesses.
Les systèmes de suivi de la tête intérieur-extérieur, comme ceux dans HoloLens, permettent d’indiquer où se trouve la tête par rapport aux caractéristiques physiques à proximité. De même, ils permettent d’indiquer où se trouvent les caractéristiques réelles par rapport à la tête.
Mais ils ne sont pas aussi efficaces pour indiquer où se trouve la tête actuellement par rapport à son emplacement précédent. Lorsque la tête se déplace du point A au point B, en général, le système de suivi se trompe légèrement quant à la distance parcourue par la tête. Cela signifie que le système de suivi sera incorrect sur la distance entre les points A et B. Cet effet est souvent appelé « problème de mise à l’échelle », ce qui n’est pas très clair.
Ensuite, lorsque la tête se déplace du point B vers le point A, le système se trompera à nouveau sur la distance parcourue. Il sera très proche de l’exactitude, mais sera tout de même incorrect de manière notable. Cet effet est également appelé « dérive ».
Ces problèmes sont abordés plus en détails dans cette FAQ.
World Locking Tools peut corriger ces problèmes. Dans le dernier cas, la dérive, World Locking Tools peut reconnaître que la tête est revenue près du point A, grâce aux caractéristiques physiques autour du point A, et corriger les coordonnées de la tête.
Dans le premier cas, le problème de mise à l’échelle, World Locking Tools peut prendre l’entrée de l’application pour savoir où se trouve le point B par rapport au point A, et corriger la distance parcourue.
Pour mieux comprendre comment World Locking Tools résout ces problèmes, une terminologie supplémentaire est nécessaire.
Espaces Spongy et World Locked (universel verrouillé)
Espace Spongy
Au cœur de World Locking Tools se trouve un moteur d’optimisation. Il prend comme entrée un graphe des ancres spatiales actuellement actives dans le monde, ainsi que les informations actuelles de suivi de la tête. Dans ce document, ainsi que dans la documentation et le code associés, cette entrée est communément appelée état Spongy. L’état Spongy est ainsi nommé car il est constamment en flux. Les ancres spatiales sont toujours en mouvement les unes par rapport aux autres, et dans leur espace de coordonnées Spongy natif, car les données de capteur entrantes affinent leur état.
Cet espace Spongy est le seul système de coordonnées précédemment disponible dans lequel le développeur d’applications de réalité mixte pouvait travailler.
Espace World Locked (universel verrouillé)
À partir de l’état Spongy, le moteur World Locking Tools calcule un espace stable, qui aligne de manière optimale l’espace Spongy sur le monde physique. Cet espace stable est désigné par l’expression espace universel verrouillé et son état complet par l’expression état figé.
Il est important de comprendre que l’espace Spongy et l’espace universel verrouillé sont des systèmes de coordonnées cartésiens rigides, et qu’ils diffèrent l’un de l’autre que par la rotation et le décalage. Toutefois, la transformation de l’espace Spongy en espace universel verrouillé change chaque cadre, à mesure que de nouvelles données du capteur sont traitées.
La différence entre les deux espaces est la suivante : alors que les données entrantes du capteur sont libres d’affiner (autrement dit, de déplacer) les ancres spatiales les unes par rapport aux autres et la tête dans l’espace Spongy, l’espace universel verrouillé est choisi pour minimiser ces mouvements. Cette différence permet aux objets de scène placés dans l’espace universel verrouillé d’apparaître fixés dans le monde physique sans être attachés à des ancres spatiales individuelles. À chaque cadre, le moteur calcule l’espace universel verrouillé dans lequel les ancres sous-jacentes sont les plus stables. Autrement dit, l’espace universel verrouillé dans lequel les objets virtuels restent alignés de manière optimale avec les caractéristiques réelles.
Cette transformation est appliquée à la scène dans chaque cadre en ajustant la transformation locale d’un parent de la caméra dans le graphe de la scène. Étant donné que la caméra définit l’espace Spongy d’origine, l’insertion de cette transformation « espace universel verrouillé à partir de l’espace Spongy » dans la hiérarchie de la caméra permet de définir l’espace racine de la scène en tant qu’espace universel verrouillé.
Persistance
L’état Frozen (figé) peut être éventuellement rendu persistant entre les sessions. Il existe des commandes manuelles pour enregistrer l’état actuel et pour charger à partir d’un état enregistré. En outre, les indicateurs de World Locking Tools Manager activent ou désactivent l’enregistrement périodique automatique de l’état figé et le chargement automatique du dernier état enregistré au démarrage.
L’utilisation de ces fonctionnalités permet l’analyse et la stabilisation d’un espace réel à rendre persistant dans plusieurs sessions.
En outre, si la fonctionnalité Space Pin est utilisée pour aligner l’espace de modélisation sur l’espace réel, cet alignement peut être rendu persistant. Dans ce cas, après une session d’alignement initiale pour configurer les Space Pins afin d’aligner la scène modélisée sur un espace physique, les sessions suivantes peuvent charger automatiquement la scène modélisée dans l’espace physique avec les caractéristiques virtuelles et réelles alignées.
Pour plus d’informations, consultez Persistance et Fonctionnalité Space Pin.
Implications sur le mouvement de la caméra
Il y a une chose subtile mais importante à noter ici : en appliquant la transformation de correction à la caméra, le « cadre de référence stationnaire » d’Unity natif a été converti en cadre de référence universel verrouillé optimal. Dans la mesure où aucun objet de la scène n’a été déplacé, cette correction n’interfère pas avec la simulation physique ou d’autres calculs dynamiques.
Toutefois, le déplacement de la caméra dans le cadre de référence stationnaire a des conséquences. Plus précisément, les sous-systèmes, qui supposent que la transformation de la tête est la seule transformation entre le cadre de référence stationnaire et l’espace de la caméra, sont incorrects.
Cette erreur n’est généralement pas un problème, car des fonctionnalités telles que la téléportation s’appuient déjà sur la possibilité de placer une transformation entre la caméra et l’espace racine.
En outre, MRTK prend déjà en compte la nécessité d’utiliser de telles transformations, donc pour les utilisateurs des services MRTK, cela fonctionnera tout simplement.
Pour les utilisateurs qui ont besoin d’un accès direct à des systèmes de niveau inférieur qui ne peuvent pas tirer parti de MRTK, des exemples sont fournis pour créer des adaptateurs. Quelques exemples de ce type sont répertoriés ci-dessous :