Table of Contents

Centre de suivi de mouvement AR dans Unity - XR Origin

XR Origin est le concept central du tracking motion dans Unity. Dans les applications AR modernes, le tracking motion devient progressivement une fonction indispensable. Grâce au tracking motion, l'application peut connaître la position et l'orientation de l'utilisateur dans le monde réel sans autre objet de reconnaissance, ce qui permet une expérience AR immersive. Le contenu ci-dessous vous aidera à comprendre le concept de base de XR Origin, sa composition et son cycle de vie, ainsi que les cas où il faut l'utiliser.

Avant de commencer

Qu'est-ce que XR Origin

Lorsque le tracking motion est initialisé, un point de référence est choisi comme origin du tracking. Ce point de référence correspond généralement à l'emplacement de l'appareil lorsque l'utilisateur lance l'application ou lorsque le AR service du système démarre. Dans la scene Unity, la représentation de ce point est XR Origin. Dans la plupart des cas, la position initiale de XR Origin dans la scene est aussi la position de départ par défaut de la camera.

Cette video montre une scene AR simple dans laquelle seul le tracking motion est actif. À gauche se trouve la vue Hierarchy, au centre la vue Scene, et à droite la vue Game. La video a été enregistrée dans l'Unity editor en mode Play avec des données de simulation run. Le contenu de la vue Game est le même que celui vu par l'utilisateur dans le monde réel sur son téléphone.

On voit que dans cette video, XR Origin (la sphère bleue) reste fixe dans la scene, tandis que la camera représentant l'utilisateur (icône camera) se déplace en fonction du mouvement de l'utilisateur dans le monde réel. Les cônes blancs affichent la trajectoire passée de la position et de l'orientation de la camera afin de mieux comprendre son mouvement. Ces cônes blancs sont créés sous le node de XR Origin, ce qui correspond aussi à la structure typique des objets dans ce type de scene.

Dans le système de tracking motion de Unity, la camera se déplace généralement en suivant XR Origin. Même si la camera n'est pas toujours un child node de XR Origin, AR Session calcule sa position à partir de celle de XR Origin afin que le contenu vu par l'utilisateur reste cohérent avec le monde réel.

Cette video montre la même scene, mais cette fois XR Origin (la sphère bleue) est déplacé pendant le runtime. On voit que, après le déplacement de XR Origin, la camera suit le mouvement, alors que le contenu de la vue Game ne change pas.

Dans une scene AR réelle, cette relation de mouvement est bien plus complexe.

Comportement de XR Origin selon les différents center mode

Dans Unity, tous les points de référence centraux du tracking AR sont appelés session center, et la règle qui détermine ce centre pendant la session est appelée center mode. Selon le center mode, le comportement de XR Origin change :

  • Dans le center mode SessionOrigin, XR Origin peut être déplacé librement.

    Le mode SessionOrigin est généralement utilisé dans les scenes où seul le tracking motion est actif. Lorsque d'autres fonctions sont également actives, ce mode n'est généralement pas utilisé.

    Toutefois, lors de l'utilisation d'un headset, si le fabricant n'a pas correctement implémenté le point de référence du tracking motion dans Unity, il faut alors utiliser le Unity world center pour forcer le mode SessionOrigin. Dans ce cas, le root content doit suivre le déplacement de la AR function, ce qui peut influencer l'effet du contenu, mais tant qu'un fabricant tiers n'a pas modifié cela, il n'existe pas d'autre solution.

  • Dans les autres center mode, par exemple FirstTarget, XR Origin ne peut pas être déplacé librement.

    Le mode FirstTarget est généralement utilisé dans les scenes sans tracking motion ou dans les scenes où d'autres fonctions AR fonctionnent en même temps que le tracking motion.

    Dans ce mode, la position de XR Origin est déterminée par la AR function, il ne faut donc pas le déplacer librement.

Pour plus de détails sur le center mode et sur le mouvement des objets dans la scene, consultez center mode.

Forme et composition de XR Origin

EasyAR peut utiliser deux formes différentes de XR Origin :

  • XR Origin fourni par EasyAR
  • XR Origin fourni par Unity XR framework

XR Origin (EasyAR)

La structure typique de XR Origin est la suivante :

alt text

Le root node de XR Origin est un GameObject vide, et peut avoir un ou plusieurs child node XR Origin Child. XR Origin Child contient un composant XROriginChildController, utilisé pour porter la logique de contrôle de XR Origin.

Pendant la session, si la structure de XR Origin dans la scene n'est pas correcte, XR Origin et un XR Origin Child seront créés automatiquement. Pendant l'exécution, XR Origin Child sera contraint à la même position et orientation que XR Origin.

Les objets générés par la session, comme le point cloud du sparse spatial mapping ou le mesh du dense spatial mapping, seront créés sous le node XR Origin Child.

Cette video montre l'effet du dense spatial mapping exécuté en même temps que le tracking motion dans la même scene. On voit que le mesh généré est créé sous le node XR Origin Child.

Note : pour faciliter la compréhension, la génération de depth map est désactivée dans la video, donc le contenu de la vue Scene diffère du runtime réel. L'effet visible dans la vue Game est le même que lorsque la transparence du mesh est désactivée.

[Optionnel] XR Origin (Unity XR)

Si nécessaire, vous pouvez utiliser le composant XR Origin fourni par Unity XR framework.

Lors de l'utilisation du XR Origin de Unity XR framework, la structure typique est la suivante :

alt text

Dans une scene headset, la structure typique est la suivante :

alt text

Le root node de XR Origin est un GameObject créé et géré par Unity XR framework, et peut avoir un ou plusieurs child node XR Origin Child. XR Origin Child contient un composant XROriginChildController, utilisé pour porter la logique de contrôle de XR Origin.

Pendant la session, si la structure de XR Origin Child dans la scene n'est pas correcte, XR Origin Child sera créé automatiquement. Pendant l'exécution, XR Origin Child sera contraint à la même position et orientation que XR Origin.

XR Origin fourni par Unity XR framework prend principalement en charge deux situations :

  • Vous utilisez déjà AR Foundation dans le project et souhaitez qu'il fonctionne avec EasyAR ou basculer entre les deux selon la prise en charge du device.
  • Le SDK du headset que vous utilisez emploie le composant XR Origin fourni par Unity XR framework.
Note

Lorsque le package principal de Unity XR com.unity.xr.core-utils n'a pas encore été importé dans le project, si la camera dans la scene se trouve dans la même hiérarchie que le XR Origin fourni par Unity XR framework (Camera et un node parent nommé Camera Offset), la session supposera que cette structure a été créée par Unity XR framework et l'utilisera. Cela est fait pour offrir une compatibilité maximale de la scene, c'est-à-dire qu'une scene créée avec AR Foundation continuera à fonctionner même si AR Foundation n'est pas importé dans le project, tandis que le reste des fonctions AR reste normal. À part les fonctions qu'AR Foundation peut seul fournir, cela n'affecte même pas la fonctionnalité AR globale ni la compatibilité des devices.

La plupart des scenes d'exemple EasyAR utilisent cette méthode pour continuer à fonctionner sans AR Foundation tout en montrant aussi la capacité de collaboration avec AR Foundation lorsqu'il est présent.

Dans la définition d'AR Foundation, son XR Origin est le centre du tracking spatial dans la XR scene. Il faut toutefois noter que, dans le concept d'AR Foundation, le tracking motion est considéré comme une fonction obligatoire, et le tracking décrit dans la XR scene correspond au tracking motion.

Dans le système EasyAR, le tracking motion est une fonction optionnelle, donc XR Origin est aussi optionnel. XR Origin n'est créé et utilisé que lorsque le tracking motion est activé.

Cycle de vie de XR Origin

Le cycle de vie de XR Origin dépend de la session. Au démarrage de la session, XR Origin est sélectionné ou créé si la structure de XR Origin dans la scene n'est pas correcte. À l'arrêt de la session, XR Origin reste en place jusqu'à ce qu'il soit utilisé par la session suivante ou supprimé manuellement.

Étapes suivantes

Créer

Contrôler le runtime

Sujets associés