Unity AR - le centre de suivi de mouvement : XR Origin
XR Origin est un concept central pour le suivi de mouvement dans Unity. Dans les applications AR modernes, le suivi de mouvement devient progressivement une fonctionnalité indispensable. Grâce au suivi de mouvement, une application peut comprendre la position et l'orientation de l'utilisateur dans le monde réel sans recourir à d'autres marqueurs, permettant ainsi une expérience AR immersive. À travers le contenu suivant, vous découvrirez les concepts de base, la composition et le cycle de vie de XR Origin, ainsi que les cas où vous devez l'utiliser.
Avant de commencer
- Comprenez les concepts fondamentaux, la composition et le flux de travail d'une session via Introduction à ARSession.
Qu'est-ce que XR Origin
Lorsque la fonction de suivi de mouvement est initialisée, un point de référence est sélectionné comme origine du suivi. Ce point de référence est généralement la position de l'appareil lorsque l'utilisateur lance l'application ou lorsque le service AR du système démarre. La représentation de ce point de référence dans la scène Unity est XR Origin. Dans la plupart des cas, la position de départ de XR Origin dans la scène est également la position par défaut de la caméra.
Cette vidéo montre une scène AR simple avec uniquement le suivi de mouvement en fonctionnement. À gauche se trouve la vue
Hierarchy, au centre la vueScene, et à droite la vueGame. La vidéo a été enregistrée en modePlayde l'éditeur Unity en utilisant des données de simulation. Le contenu de la vueGameest identique à ce que l'utilisateur verrait dans le monde réel avec son téléphone.On peut voir que dans cette vidéo, XR Origin (sphère bleue) a une position fixe dans la scène, tandis que la caméra représentant l'utilisateur (icône de caméra) se déplace en fonction des mouvements de l'utilisateur dans le monde réel. Les cônes blancs capturent la trajectoire de la position et de l'orientation de la caméra au cours d'une période récente, aidant à mieux comprendre le mouvement de la caméra dans la scène. On remarque que ces cônes blancs sont générés sous le nœud de XR Origin, ce qui est typique de l'organisation des objets dans ce type de scène.
Dans le système de suivi de mouvement de Unity, la caméra suit généralement le mouvement de XR Origin. Bien que la caméra ne soit pas nécessairement un enfant du nœud XR Origin, AR Session calcule la position de la caméra en fonction de la position de XR Origin, garantissant ainsi la cohérence entre ce que l'utilisateur voit et le contenu du monde réel.
Cette vidéo montre la même scène, mais cette fois nous déplaçons XR Origin (sphère bleue) pendant l'exécution. On peut voir qu'après le déplacement de XR Origin, la caméra suit son mouvement, tandis que le contenu de la vue
Gamene change pas.
Dans les scènes AR réelles, cette relation de mouvement est plus complexe.
Comportement de XR Origin dans différents modes de centre
Dans Unity, tous les points de référence centraux pour le suivi AR sont appelés centre de session, et la règle déterminant ce centre pendant l'exécution de la session est appelée mode de centre. Le comportement de XR Origin varie selon les modes de centre :
En mode centre SessionOrigin, XR Origin peut être déplacé librement.
Généralement, le mode SessionOrigin est utilisé dans des scènes où seul le suivi de mouvement est actif. Lorsque d'autres fonctionnalités fonctionnent simultanément, ce mode n'est généralement pas utilisé.
Cependant, lors de l'utilisation d'un casque, si le fabricant n'a pas correctement implémenté le point de référence pour le suivi de mouvement dans Unity, il est alors nécessaire d'utiliser le centre du monde de Unity, forçant ainsi l'utilisation du mode SessionOrigin. Cette situation exige que le nœud racine du contenu suive le mouvement des fonctionnalités AR, ce qui peut affecter l'apparence du contenu, mais il n'y a pas d'autre solution tant que le fabricant tiers n'apporte pas de modifications.
Dans les autres modes de centre (comme FirstTarget), XR Origin ne peut pas être déplacé librement.
Généralement, le mode FirstTarget est utilisé dans des scènes sans suivi de mouvement ou avec d'autres fonctionnalités AR fonctionnant simultanément avec le suivi de mouvement.
Dans ce mode, la position de XR Origin est déterminée par les fonctionnalités AR, elle ne peut donc pas être déplacée librement.
Pour des détails sur les modes de centre et la manière dont les objets se déplacent dans la scène, consultez : Mode de centre.
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 le framework Unity XR
XR Origin (EasyAR)
Une structure typique de XR Origin se présente comme suit :

Le nœud racine de XR Origin est un GameObject vide, qui peut avoir un ou plusieurs nœuds enfants XR Origin Child. XR Origin Child contient un composant XROriginChildController qui agit comme proxy pour la logique de contrôle de XR Origin.
Lorsque la session s'exécute, si la scène ne contient pas la structure correcte de XR Origin, XR Origin et un XR Origin Child sont créés automatiquement. Pendant l'exécution, XR Origin Child est contraint à la même position et orientation que XR Origin.
Les objets générés par la session, comme les nuages de points de la carte spatiale clairsemée ou les maillages de la cartographie spatiale dense, sont créés sous le nœud XR Origin Child.
Cette vidéo montre l'effet de l'exécution simultanée de la cartographie spatiale dense avec le suivi de mouvement dans la même scène. On peut voir que le maillage généré est créé sous le nœud XR Origin Child.
Remarque : pour faciliter la compréhension, la génération de la carte de profondeur a été désactivée dans la vidéo, donc le contenu de la vue
Scenediffère de ce qui serait affiché lors d'une exécution réelle. L'affichage de la vueGameest identique à celui obtenu lorsque la transparence du maillage est désactivée.
[Optionnel] XR Origin (Unity XR)
Si nécessaire, vous pouvez choisir d'utiliser le composant XR Origin fourni par le framework Unity XR.
Lorsque vous utilisez XR Origin fourni par Unity XR, une structure typique se présente comme suit :

Dans une scène avec casque, une structure typique est la suivante :

Le nœud racine de XR Origin est un GameObject créé et maintenu par le framework Unity XR, qui peut avoir un ou plusieurs nœuds enfants XR Origin Child. XR Origin Child contient un composant XROriginChildController qui agit comme proxy pour la logique de contrôle de XR Origin.
Lorsque la session s'exécute, si la scène ne contient pas la structure correcte de XR Origin Child, celui-ci est créé automatiquement. Pendant l'exécution, XR Origin Child est contraint à la même position et orientation que XR Origin.
XR Origin fourni par le framework Unity XR offre principalement un support dans deux cas :
- Vous utilisez déjà AR Foundation dans votre projet et souhaitez qu'il fonctionne simultanément avec EasyAR ou basculer entre les deux en fonction de la prise en charge par l'appareil.
- Le SDK de votre casque utilise le composant XR Origin fourni par le framework Unity XR.
Note
Lorsque le package core com.unity.xr.core-utils de Unity XR n'est pas importé dans le projet, si la caméra de la scène se trouve dans la même hiérarchie que XR Origin fourni par Unity XR (caméra et nœud parent nommé Camera Offset), la session supposera que cette structure a été créée par Unity XR et l'utilisera. Cela permet une compatibilité maximale avec la scène, c'est-à-dire qu'une scène créée avec AR Foundation continuera de fonctionner normalement avec les fonctionnalités AR restantes même si AR Foundation n'est pas importé dans le projet. À l'exception des fonctionnalités exclusives à AR Foundation, cela n'affecte même pas la fonctionnalité globale de l'application AR ni sa compatibilité avec les appareils.
La plupart des scènes d'exemple d'EasyAR utilisent cette approche pour garantir leur fonctionnement même en l'absence d'AR Foundation, tout en démontrant leur capacité à travailler avec AR Foundation lorsqu'il est présent.
Dans la définition d'AR Foundation, son XR Origin est le centre de l'espace de suivi dans la scène XR. Cependant, il est important de noter que dans le concept d'AR Foundation, le suivi de mouvement est une fonctionnalité obligatoire, et l'espace de suivi qu'il décrit dans la scène XR correspond au suivi de mouvement.
Dans le système EasyAR, le suivi de mouvement est une fonctionnalité optionnelle, donc XR Origin est également optionnel. XR Origin n'est créé et utilisé que lorsque la fonctionnalité de suivi de mouvement est activée.
Cycle de vie de XR Origin
Le cycle de vie de XR Origin dépend de la session. Lorsque la session démarre, XR Origin est sélectionné ou créé (si la scène ne contient pas la structure correcte de XR Origin). Lorsque la session s'arrête, XR Origin reste en place jusqu'à ce qu'il soit utilisé par la session suivante ou supprimé manuellement.
Étapes suivantes
Création
- Essayez de créer XR Origin dans une scène
Contrôle d'exécution
- Comprenez la stratégie de contrôle Active de XR Origin