Table of Contents

Center mode de AR Session

Center mode est un concept central de Unity AR. Il détermine quel objet la session sélectionne comme point de référence, ou center object, pour tout l'AR tracking pendant le runtime, ainsi que quels objets dans la session peuvent se déplacer librement. Grâce au contenu suivant, vous comprendrez les concepts de base de center mode et son impact sur le comportement de mouvement des objets dans la scene.

Avant de commencer

  • Comprendre les concepts de base, la composition et le workflow de session avec Introduction à AR Session.
  • Comprendre le rôle de la camera dans les AR scenes avec Camera, et comment session contrôle les propriétés de la camera pour garantir une expérience AR correcte.
  • Comprendre les concepts de base, la composition et le lifecycle de XR Origin avec XR Origin.
  • Comprendre les concepts de base, les states et le lifecycle de target avec Target.

Center object et center mode

Dans une session, une ou plusieurs fonctions AR différentes peuvent s'exécuter simultanément. Ces fonctions AR peuvent tracker différents objets et utiliser en même temps motion tracking pour suivre la position et l'orientation de l'appareil lui-même.

Pour garantir que le comportement de mouvement des objets dans la scene corresponde aux attentes, session doit sélectionner un point de référence comme centre de tout l'AR tracking. La représentation de ce point de référence dans la Unity scene est le center object (CenterObject). Center mode (CenterMode) est la règle qui détermine quel objet est ce center object pendant le runtime de session.

Le centre d'une session peut être l'un des objets suivants :

  • Un target suivi
  • XR Origin
  • Camera

Center mode détermine quel objet session sélectionne comme center object, et si cet objet peut se déplacer librement. Les objets autres que celui-ci, y compris camera, XR Origin et target non centraux, sont contrôlés par session et se déplacent avec le center object comme point de référence.

Dans Unity, une session prend en charge les quatre modes centre suivants:

Nom Illustration Description
FirstTarget

SpecificTarget
alt text Utilise un target comme centre, et ce target peut se déplacer librement. Parmi eux,
  • FirstTarget utilise le premier target suivi comme centre.
  • SpecificTarget utilise le target spécifié comme centre.
La camera, XR Origin et les autres target dans la session sont tous contrôlés par la session et se déplacent avec le target central comme point de référence.
SessionOrigin alt text Utilise XR Origin comme centre, et XR Origin peut se déplacer librement.
La camera et les target dans la session sont contrôlés par la session et se déplacent avec le XR Origin central comme point de référence.
Camera alt text Utilise la camera comme centre, et la camera peut se déplacer librement.
XR Origin et les target dans la session sont contrôlés par la session et se déplacent avec la camera centrale comme point de référence.

Les illustrations contiennent trois objets: la sphère bleue représente XR Origin, le cône bleu représente la camera, et l'image jaune représente le target. Dans différents modes centre, la session choisit différents objets comme objet central. Les figures affichent le système de coordonnées local de l'objet correspondant.

Astuce

Si vous avez de l'expérience avec AR Foundation, vous remarquerez peut-être qu'AR Foundation n'a pas de concept similaire. En fait, le comportement d'AR Foundation est cohérent avec le mode centre SessionOrigin.

Dans une session, la relation de mouvement relatif entre target et camera est contrôlée par la session courante. La relation de mouvement relatif entre XR Origin et camera est contrôlée par la session courante ou par un framework tiers, par exemple AR Foundation. L'existence des modes centre garantit que, dans différents environnements d'exécution, la session peut contrôler correctement le comportement de mouvement des objets dans la scène.

Par exemple, si AR Foundation ou un SDK de casque basé sur Unity XR contrôle la relation de mouvement relatif entre XR Origin et camera, XR Origin, selon la conception du framework Unity XR, peut être déplacé sous le contrôle de la session, alors que camera ne le peut pas. À ce moment, la session limite le mode centre à FirstTarget, SpecificTarget ou SessionOrigin. Ainsi, pour la session, le centre est XR Origin ou un certain target, tandis que pour le framework Unity XR, le centre reste XR Origin, et tout le système peut fonctionner parfaitement.

Avertissement

Dans Unity AR, tout objet présent dans le système de coordonnées monde de Unity et dont le transform n'a pas été ajusté selon le composant session peut ne pas s'afficher correctement. Comme la session ajuste la position et l'orientation des autres objets dans la scène selon la position et l'orientation de l'objet central, si certains objets ne sont pas contrôlés par la session, leur position et leur orientation peuvent être incohérentes avec celles calculées par la session, ce qui entraîne un comportement inattendu.

Par exemple, si un modèle de panda est placé dans le système de coordonnées monde, la position et l'orientation de ce modèle de panda peuvent ne correspondre à aucun objet du monde réel, et il peut sembler flotter dans les airs ou se déplacer partout.

La bonne pratique consiste à toujours placer le contenu à afficher sous un nœud target donné, ou sous le nœud XR Origin si le contenu doit suivre le mouvement de XR Origin. Ainsi, la position et l'orientation du contenu sont ajustées selon le résultat calculé par la session, ce qui garantit que le contenu peut être correctement superposé au monde réel.

Il est possible d'aligner manuellement le contenu avec la position et l'orientation d'un target ou de XR Origin, mais cela doit être fait au bon moment. Voir choisir un mode centre approprié.

Modes centre valides

Tous les modes centre ne sont pas valides dans toutes les situations. La session décide quels modes centre sont valides selon l'environnement d'exécution courant et le frame source sélectionné, afin de contrôler correctement le comportement de mouvement des objets dans la scène. La propriété ARSession.AvailableCenterMode peut être utilisée pour obtenir la liste des modes centre valides de la session courante.

Selon le frame source finalement sélectionné, les modes centre valides d'une session correspondent aux cas suivants:

frame source camera contrôlée possède des données de mouvement possède une conception origin modes centre valides
  • CameraDeviceFrameSource
  • FramePlayer dont le frame source utilisé lors de l'enregistrement ne contenait pas de données de mouvement
  • ExternalImageStreamFrameSource
Oui Non -
  • FirstTarget
  • SpecificTarget
  • Camera
  • ARCoreFrameSource
  • AREngineFrameSource
  • ARKitFrameSource
  • InertialCameraDeviceFrameSource
  • MotionTrackerFrameSource
  • ThreeDofCameraDeviceFrameSource
  • FramePlayer dont le frame source utilisé lors de l'enregistrement contenait des données de mouvement
Oui Oui Oui
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
  • Camera (*)
* Valide uniquement lorsque camera n'est pas
un nœud enfant de XR Origin
  • ARCoreARFoundationFrameSource
  • ARKitARFoundationFrameSource
  • VisionOSARKitFrameSource
  • XREALFrameSource
  • ExternalDeviceFrameSource où OriginType is XROrigin or Custom, and Origin peut être contrôlé librement
    • PicoFrameSource
    • RokidFrameSource sans UXR
Non Oui Oui
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
Non Oui Oui
  • SessionOrigin
  • ExternalDeviceFrameSource où OriginType est None
    • RokidFrameSource avec UXR
Non Oui Non
  • SessionOrigin

Sauf lors de l'utilisation de FramePlayer, les modes centre valides sont déterminés lors de l'assemblage de la session. Lors de l'utilisation de FramePlayer, les modes centre valides sont déterminés dynamiquement pendant l'exécution de la session, à chaque sortie de données de frame, selon que les données contiennent ou non des informations de mouvement.

Caractéristiques des différents center modes

Ensuite, nous utiliserons une série de vidéos d'exemple pour montrer le comportement de mouvement des objets sous différents center modes.

Le contenu vidéo est le suivant :

Dans le monde réel, il existe deux types différents de trackable objects :

  • L'un est un sapin de Noël, qui est immobile. Il est suivi par la fonction sparse spatial map.
  • L'autre est une feuille de papier A4, sur laquelle une image a été imprimée à l'avance. Elle peut se déplacer. Elle est suivie par la fonction image tracking.

Lors de l'enregistrement de la vidéo, l'observer, le téléphone, commence à l'arrière droit du sapin de Noël et se déplace autour de celui-ci. Le papier A4 oscille de gauche à droite devant l'observer.

Pour faciliter l'observation, nous avons ajouté quelques markers aux différents objets de la scene.

  • Sapin de Noël : lorsqu'il est en état de tracking, un nuage de points bleu vif est superposé dans l'espace qu'il occupe. Ces markers disparaissent lorsque le tracking est perdu.
  • Papier A4 : lorsqu'il est en état de tracking, un panda est superposé juste au-dessus. La vue Game affiche également une image exactement identique au contenu et à la taille du papier A4. Ces markers disparaissent lorsque le tracking est perdu.
  • XR Origin : une sphère bleue est placée à sa position
  • Camera : un cône bleu est placé à sa position, et l'axe principal du cône est aligné avec la direction de vue de la camera.

Ces vidéos sont enregistrées en mode Play du Unity editor avec des simulated runtime data. La partie gauche de la vidéo est la vue Scene, la partie droite est la vue Game. Le contenu de la vue Game est identique à ce que l'utilisateur voit sur le téléphone dans le monde réel.

Center modes FirstTarget et SpecificTarget

Les modes center FirstTarget et SpecificTarget utilisent un certain target comme objet central. Dans ces deux modes, à l'exception du target central, la camera, XR Origin et les autres objets target dans la session sont contrôlés par la session et se déplacent en prenant le target central comme point de référence.

Certains targets peuvent se déplacer dans le monde réel, par exemple la feuille A4 dans la vidéo.

Dans la vidéo ci-dessus, l'objet central est la feuille A4 suivie par image tracking. On peut voir qu'en l'absence d'opération externe, la feuille A4 (panda) reste immobile, tandis que la camera (cône bleu), XR Origin (sphère bleue) et le sapin de Noël (point cloud bleu clair) se déplacent.

Certains targets sont immobiles dans le monde réel, par exemple le sapin de Noël dans la vidéo.

Dans la vidéo ci-dessus, l'objet central est le sapin de Noël suivi par sparse spatial map. On peut voir qu'en l'absence d'opération externe, le sapin de Noël (point cloud bleu clair) reste immobile, tandis que la camera (cône bleu) et la feuille A4 (panda) se déplacent. XR Origin (sphère bleue) ne se déplace pas non plus, mais c'est parce qu'il est immobile par rapport au sapin de Noël.

Dans ces deux modes, le target central utilisé comme point de référence peut se déplacer librement. À ce moment, la camera, XR Origin et les autres target de la session se déplacent avec lui, et leur transform ne peut pas être contrôlé de l'extérieur.

Dans la vidéo ci-dessus, l'objet central est la feuille A4 suivie par image tracking. On peut voir que, comme nous avons déplacé manuellement la feuille A4 (panda), la camera (cône bleu), XR Origin (sphère bleue) et le sapin de Noël (point cloud bleu clair) se déplacent avec elle. Il faut noter que le contenu affiché dans la vue Game ne change pas à ce moment, car la position et l'orientation de la camera par rapport à la feuille A4 et aux autres objets ne changent pas.

La différence entre les modes FirstTarget et SpecificTarget est que pendant runtime, le target central peut changer, mais la méthode de sélection du centre est différente au moment du changement. Pour expliquer cela, il faut considérer le processus de tracking réussi et de perte de tracking.

Lorsque l'objet central dans une session change, ARSession.CenterObject reflète toujours l'objet central actuel, mais ARSession.CenterMode ne change pas.

Changements de center dans center mode FirstTarget

En mode centre FirstTarget, la session utilise toujours le premier target suivi comme centre. Si le tracking de ce target est perdu, la session resélectionne le centre. Lorsque la session suit ou suit à nouveau un autre target, cet autre target est sélectionné comme nouvel objet central.

La resélection du centre se produit dans les cas suivants:

  • Aucun target n'est en état de tracking dans la frame courante
    À ce moment, si le mode SessionOrigin est valide, la session revient au mode SessionOrigin et sélectionne XR Origin comme objet central; sinon, la session revient au mode Camera et sélectionne camera comme objet central.

  • Un target est en état de tracking dans la frame courante, et aucun target n'était en état de tracking dans la frame précédente
    À ce moment, la session sélectionne l'un des objets target suivis comme objet central.

  • Un target est en état de tracking dans la frame courante, et le target central de la frame précédente a perdu le tracking dans la frame courante
    À ce moment, la session sélectionne l'un des objets target suivis comme nouvel objet central.

Dans la vidéo ci-dessus, l'objet central initial est la feuille A4 suivie par la fonction image tracking. On voit que lorsque le tracking de la feuille A4 (panda) est perdu, la session resélectionne l'objet central. À ce moment, le sapin de Noël (point cloud bleu vif) devient le nouvel objet central. À la fin de la vidéo, la feuille A4 est de nouveau suivie, mais elle ne devient pas l'objet central, car le sapin de Noël est déjà l'objet central.

Changements de centre en mode centre SpecificTarget

En mode centre SpecificTarget, la session utilise toujours le target spécifié comme centre. Si le tracking de ce target est perdu, la session resélectionne le centre, mais elle ne sélectionne pas d'autre target comme nouvel objet central. Lorsque la session suit de nouveau ce target spécifié, il est toujours sélectionné comme objet central.

La resélection du centre se produit dans les cas suivants:

  • Le target spécifié n'est pas suivi dans la frame courante
    À ce moment, si le mode SessionOrigin est valide, la session revient au mode SessionOrigin et sélectionne XR Origin comme objet central; sinon, la session revient au mode Camera et sélectionne camera comme objet central.

  • Le target spécifié est en état de tracking dans la frame courante, et le target spécifié n'était pas suivi dans la frame précédente
    À ce moment, la session sélectionne le target spécifié comme objet central.

Dans la vidéo ci-dessus, l'objet central est spécifié comme la feuille A4 suivie par la fonction image tracking. On voit que lorsque le tracking de la feuille A4 (panda) est perdu, la session ne sélectionne pas d'autre target comme nouvel objet central. À ce moment, le sapin de Noël (point cloud bleu vif) ne devient pas l'objet central. À la fin de la vidéo, la feuille A4 est de nouveau suivie et redevient l'objet central.

Mode centre SessionOrigin

Le mode centre SessionOrigin utilise XR Origin comme objet central. Dans ce mode, la camera et le target dans la session sont contrôlés par la session et se déplacent avec le XR Origin central comme point de référence.

Dans la vidéo ci-dessus, l'objet central est XR Origin. On voit qu'en l'absence d'opération externe, XR Origin (sphère bleue) reste immobile, tandis que la camera (cône bleu) et la feuille A4 (panda) se déplacent. Le sapin de Noël (point cloud bleu vif) ne se déplace pas non plus, mais c'est parce qu'il est immobile par rapport à XR Origin.

Dans ce mode, le XR Origin central utilisé comme point de référence peut se déplacer librement. À ce moment, la camera et le target dans la session se déplacent avec lui, et leur transform ne peut pas être contrôlé de l'extérieur.

Dans la vidéo ci-dessus, l'objet central est XR Origin. On voit que, comme nous avons déplacé manuellement XR Origin (sphère bleue), la camera (cône bleu), le sapin de Noël (point cloud bleu vif) et la feuille A4 (panda) se sont tous déplacés avec lui. Il faut noter que le contenu affiché dans la vue Game ne change pas à ce moment, car la position et l'orientation de la camera par rapport à XR Origin et aux autres objets n'ont pas changé.

En mode SessionOrigin, XR Origin doit être valide; l'objet central ne change donc pas dans ce mode.

Mode centre Camera

Le mode centre camera utilise camera comme objet central. Dans ce mode, XR Origin et target dans la session sont contrôlés par la session et se déplacent avec la camera centrale comme point de référence.

Dans la vidéo ci-dessus, l'objet central est la camera. On voit qu'en l'absence d'opération externe, la camera (cône bleu) reste immobile, tandis que XR Origin (sphère bleue), le sapin de Noël (point cloud bleu vif) et la feuille A4 (panda) se déplacent.

Dans ce mode, la camera centrale utilisée comme point de référence peut se déplacer librement. À ce moment, XR Origin et target dans la session se déplacent avec elle, et leur transform ne peut pas être contrôlé de l'extérieur.

Dans la vidéo ci-dessus, l'objet central est la camera. On voit que, comme nous avons déplacé manuellement la camera (cône bleu), XR Origin (sphère bleue), le sapin de Noël (point cloud bleu vif) et la feuille A4 (panda) se sont tous déplacés avec elle. Il faut noter que le contenu affiché dans la vue Game ne change pas à ce moment, car la position et l'orientation de la camera par rapport à XR Origin et aux autres objets n'ont pas changé.

En mode Camera, camera doit être valide; l'objet central ne change donc pas dans ce mode.

Étapes suivantes

Rubriques connexes