Centro de tracking de movimiento AR en Unity: XR Origin
XR Origin es el concepto central del tracking motion en Unity. En las aplicaciones AR modernas, el tracking motion se está convirtiendo poco a poco en una función esencial. Gracias al tracking motion, la aplicación puede conocer la posición y orientación del usuario en el mundo real sin depender de otros objetos de reconocimiento, logrando una experiencia AR inmersiva. En lo siguiente conocerás el concepto básico de XR Origin, su composición y ciclo de vida, así como en qué casos debes usarlo.
Antes de empezar
- Comprende el concepto básico de session a través de introducción a ARSession.
Qué es XR Origin
Cuando se inicializa el tracking motion, se elige un punto de referencia como origin del tracking. Este punto de referencia suele ser la ubicación del dispositivo cuando el usuario inicia la aplicación o cuando arranca el AR service del sistema. En la scene de Unity, la representación de este punto es XR Origin. En la mayoría de los casos, la posición inicial de XR Origin en la scene también es la posición inicial predeterminada de la camera.
Este video muestra una scene AR sencilla donde solo se ejecuta tracking motion. A la izquierda está la vista
Hierarchy, en el centro la vistaSceney a la derecha la vistaGame. El video se grabó en Unity editor en modoPlayusando datos de simulation run. El contenido deGamees el mismo que ve el usuario en el mundo real a través del teléfono.Se puede ver que en este video XR Origin (la esfera azul) está fijo en la scene, mientras que la camera que representa al usuario (icono de camera) se mueve según el desplazamiento del usuario en el mundo real. Los conos blancos muestran la trayectoria pasada de la posición y orientación de la camera para entender mejor su movimiento. Estos conos blancos se crean bajo el node de XR Origin, y esta es también la estructura típica de los objetos en este tipo de scene.
En el sistema de tracking motion de Unity, la camera normalmente se mueve siguiendo a XR Origin. Aunque la camera no siempre sea un child node de XR Origin, AR Session calcula la posición de la camera según la posición de XR Origin para garantizar que el contenido visto por el usuario coincida con el mundo real.
Este video muestra la misma scene, pero esta vez XR Origin (la esfera azul) se mueve durante el runtime. Se puede ver que, después de mover XR Origin, la camera también se mueve siguiendo a XR Origin, mientras que el contenido de
Gameno cambia.
En una scene AR real, esta relación de movimiento es mucho más compleja.
Comportamiento de XR Origin en diferentes center mode
En Unity, todos los puntos de referencia centrales del tracking AR se llaman session center, y la regla que determina ese centro durante la session se llama center mode. Según el center mode, el comportamiento de XR Origin cambia:
En el center mode SessionOrigin, XR Origin puede moverse libremente.
Normalmente el modo SessionOrigin se usa en scene donde solo corre tracking motion. Cuando otras funciones también están activas, normalmente no se usa este modo.
Sin embargo, al usar un headset, si el fabricante no implementa correctamente el reference point del tracking motion en Unity, entonces hay que usar Unity world center para forzar el modo SessionOrigin. Este caso exige que el root content se mueva siguiendo a la AR function, lo que puede afectar el resultado del contenido, pero mientras el fabricante de terceros no haga cambios no hay otra opción.
En otros center mode, por ejemplo FirstTarget, XR Origin no puede moverse libremente.
Normalmente el modo FirstTarget se usa en scene sin tracking motion o en scene donde otras funciones AR funcionan junto con tracking motion.
En este modo, la posición de XR Origin la determina la AR function, por lo que no debe moverse libremente.
Para más detalles sobre center mode y sobre cómo se mueven los objetos dentro de la scene, consulte center mode.
Forma y composición de XR Origin
EasyAR puede usar dos formas distintas de XR Origin:
- XR Origin proporcionado por EasyAR
- XR Origin proporcionado por Unity XR framework
XR Origin (EasyAR)
La estructura típica de XR Origin es la siguiente:

El root node de XR Origin es un GameObject vacío, y puede tener uno o varios child node XR Origin Child. XR Origin Child contiene un componente XROriginChildController, que se usa para actuar como proxy de la lógica de control de XR Origin.
Durante el runtime, si la estructura de XR Origin en la scene no es correcta, se crearán automáticamente XR Origin y un XR Origin Child. Mientras se ejecuta, XR Origin Child quedará restringido a la misma posición y orientación que XR Origin.
Los objetos generados por session, como el point cloud del sparse spatial mapping o el mesh del dense spatial mapping, se crearán bajo el node XR Origin Child.
Este video muestra el efecto de ejecutar dense spatial mapping junto con tracking motion en la misma scene. Se puede ver que el mesh generado se crea bajo el node XR Origin Child.
Nota: para facilitar la comprensión, el video desactiva la generación de depth map, por lo que el contenido de la vista
Scenedel video es distinto del runtime real. El efecto visible enGamees el mismo que con la transparencia del mesh desactivada.
[Opcional] XR Origin (Unity XR)
Si lo necesita, puede usar el componente XR Origin proporcionado por Unity XR framework.
Al usar el XR Origin de Unity XR framework, la estructura típica es la siguiente:

En un scene de headset, la estructura típica es la siguiente:

El root node XR Origin es un GameObject creado y mantenido por Unity XR framework, y puede tener uno o varios child node XR Origin Child. XR Origin Child contiene un componente XROriginChildController, que se usa para actuar como proxy de la lógica de control de XR Origin.
Durante el runtime, si la estructura de XR Origin Child en la scene no es correcta, XR Origin Child se creará automáticamente. Mientras se ejecuta, XR Origin Child quedará restringido a la misma posición y orientación que XR Origin.
XR Origin proporcionado por Unity XR framework da soporte principalmente a dos situaciones:
- Ya está usando AR Foundation en el project y quiere que funcione junto con EasyAR o alternar entre ambos según el soporte del dispositivo.
- El SDK del headset que usa emplea el componente XR Origin proporcionado por Unity XR framework.
Nota
Cuando el paquete principal de Unity XR com.unity.xr.core-utils todavía no se ha importado en el project, si la camera de la scene está en la misma jerarquía que el XR Origin proporcionado por Unity XR framework (Camera y un node padre llamado Camera Offset), el session asumirá que esa estructura fue creada por Unity XR framework y la usará. Esto se hace para ofrecer la máxima compatibilidad de scene, es decir, una scene creada con AR Foundation seguirá funcionando aunque AR Foundation no esté importado en el project, mientras el resto de funciones AR siguen normales. Salvo las funciones que solo puede ofrecer AR Foundation, esto incluso no afecta la funcionalidad general de AR ni la compatibilidad de dispositivos.
La mayoría de las scene de ejemplo de EasyAR usan este método para seguir funcionando sin AR Foundation y, cuando AR Foundation está presente, mostrar también la capacidad de cooperación con él.
En la definición de AR Foundation, su XR Origin es el centro del tracking espacial en la XR scene. Sin embargo, hay que notar que, en el concepto de AR Foundation, el tracking motion se considera una función obligatoria, y el tracking que describe en la XR scene es tracking motion.
En el sistema EasyAR, el tracking motion es una función opcional, por lo que XR Origin también lo es. XR Origin solo se crea y usa cuando se habilita tracking motion.
Ciclo de vida de XR Origin
El ciclo de vida de XR Origin depende de session. Cuando session se inicia, XR Origin se selecciona o se crea (si la estructura de XR Origin en la scene no es correcta). Cuando session se detiene, XR Origin permanece en su lugar hasta que sea usado por el siguiente session o eliminado manualmente.
Siguientes pasos
Creación
- Pruebe a crear XR Origin en la scene
Control del runtime
- Aprenda la estrategia de control Active para XR Origin