Creación y configuración de la sesión AR
Para usar AR en Unity, primero necesitas crear y configurar una sesión AR en la escena. Este artículo presenta varios métodos principales para crear y configurar una sesión AR. Generalmente, después de crear una sesión exitosamente, puedes ver la siguiente estructura en la vista Hierarchy:

Antes de comenzar
- Comprende los conceptos básicos, componentes y flujo de trabajo de una sesión a través de la Introducción a ARSession.
Crear una sesión con configuración predeterminada
En la vista Hierarchy, haz clic derecho en un espacio vacío, luego selecciona EasyAR Sense > [ Función AR ] > AR Session ([ Función ] Preset) para crear una sesión preconfigurada. La sesión viene con componentes frame source y frame filter preconfigurados para esa función.
En scripts, puedes usar ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) para crear una sesión.
Por ejemplo, selecciona EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset) para crear una sesión para seguimiento de imágenes.

El código de script correspondiente es:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
Nota: al usar ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder y ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, también debes pasar parámetros de recursos. Por ejemplo, este código crea una sesión para construcción de mapas espaciales dispersos y especifica el material de la nube de puntos:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
Si el script solo se ejecuta en el editor, también puedes usar recursos predeterminados del editor:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
El menú EasyAR Sense > AR Session (Preset) > ** lista todas las sesiones predefinidas disponibles.

[!NOTA] Múltiples sesiones ejecutándose simultáneamente en la misma escena entrarán en conflicto, por lo que solo debe haber una sesión habilitada (GameObject.activeInHierarchy ==
true) en la escena.
Agregar componentes
Puedes agregar o eliminar componentes frame source y frame filter después de crear la sesión según sea necesario.
En la vista Hierarchy, selecciona AR Session (EasyAR), haz clic derecho y elige EasyAR Sense > [ Función AR ] > ** para agregar componentes frame source y frame filter adecuados para esa función.
En scripts, usa ARSessionFactory.AddFrameSource<Source>(GameObject, bool) para agregar un frame source, o ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources) para agregar un frame filter.
Por ejemplo, selecciona EasyAR Sense > Image Tracking > Frame Filter : Image Tracker para agregar un nuevo rastreador de imágenes a la sesión actual.

El código correspondiente es:
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
[!PRECAUCIÓN] Los componentes deben agregarse antes del ensamblado. Después de que la sesión comience o complete el ensamblado, cualquier adición o eliminación de componentes hará que la sesión entre en estado Broken y deje de funcionar.
Nota: al agregar SparseSpatialMapBuilderFrameFilter o DenseSpatialMapBuilderFrameFilter, debes pasar parámetros de recursos. Por ejemplo:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
Para solo editor, usa recursos predeterminados:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
Después de crear un frame filter, usa ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) para ajustar parámetros según un preset.
Ejemplo para configurar un rastreador de imágenes con parámetros de ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion:
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
Al usar el menú, configura los parámetros manualmente después de crear el componente.
Eliminar componentes
Para eliminar un componente de la sesión, selecciónalo en Hierarchy y presiona Delete, o destrúyelo (Destroy) en un script.
[!NOTA] Deshabilitar (
SetActive(false)) el GameObject del componente tiene el mismo efecto que eliminarlo.
Ejemplo: selecciona Image Tracker y presiona Delete para eliminarlo.

[!PRECAUCIÓN] Los componentes deben eliminarse antes del ensamblado. Después de que la sesión comience o complete el ensamblado, cualquier adición o eliminación de componentes hará que la sesión entre en estado Broken y deje de funcionar.
Impacto del orden de los componentes
El orden de los nodos hijos frame filter no afecta la ejecución de la sesión.
El orden de los nodos hijos frame source afecta la selección durante el ensamblado. Solo el primer frame source disponible en el orden de transform se seleccionará como frame source real de la sesión.
[!NOTA] El orden de los nodos frame source solo es efectivo si se modifica antes del ensamblado. Después del ensamblado, cambiar el orden no afecta el resultado.
[Opcional] Creación libre de sesión
Si las configuraciones predeterminadas no satisfacen tus necesidades, puedes crear y configurar sesiones libremente.
Usa EasyAR Sense > AR Session (Preset) > AR Session (Empty) para crear una sesión vacía sin componentes frame source o frame filter.
En scripts, usa ARSessionFactory.CreateSession():
ARSessionFactory.CreateSession();
Luego agrega los componentes frame source y frame filter según sea necesario.
Ejemplo para una sesión con funciones de construcción de mapas espaciales dispersos y densos:
var session = ARSessionFactory.CreateSession();
var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);
ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);
List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);
Esto creará una estructura de sesión como:

Próximos pasos
Control de ejecución
- Aprende métodos y propósito de inicialización
- Aprende a determinar disponibilidad y soporte de dispositivos
- Aprende métodos para controlar la ejecución de la sesión
Acceso a componentes y resultados
- Intenta acceder a componentes de funciones AR
- Aprende a obtener resultados de ejecución de la sesión
Referencia de componentes
- Referencia del componente ARSession