Table of Contents

Class ARSession

Espacio de nombres
easyar
Ensayo
EasyAR.Sense.dll

El MonoBehaviour que controla la sesión AR en la escena. Una sesión contiene un conjunto de componentes ensamblados en un ARAssembly y controla el flujo de datos durante todo su ciclo de vida. Este componente es la entrada a la AR. No se permiten múltiples instancias activas simultáneamente.

Todas las funciones de los componentes de EasyAR solo se pueden usar después de StartSession().

La transform relativa entre Camera y algunos componentes AR está controlada por la sesión. Uno de estos objetos se denomina CenterObject; permanece inmóvil en la escena, mientras que otros objetos se mueven en relación con este CenterObject. Este objeto se selecciona según el valor de CenterMode. Para una explicación más detallada, consulte la descripción de ARSession.ARCenterMode.

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
Herencia
ARSession

Campos

AutoStart

Inicia automáticamente la sesión en MonoBehaviour.Start. Si se establece en falso, debe llamar manualmente a StartSession() para iniciar la sesión.

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

Modo de centro AR. Se puede modificar en cualquier momento y surte efecto inmediato. Si el modo especificado no está disponible, se cambiará automáticamente a un modo disponible.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

Modo de renderizado de espejo horizontal. Se puede modificar en cualquier momento y surte efecto inmediato. Solo disponible cuando se utiliza seguimiento de imágenes u objetos.

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

Propiedades

AssembleOptions

Opciones de ensamblaje de la sesión, deben establecerse antes de Assemble() (si no se llamó antes, StartSession() lo llama implícitamente).

public AssembleOptions AssembleOptions { get; }

Assembly

Ensamblaje de componentes AR.

public ARAssembly Assembly { get; }

AvailableCenterMode

Modos centrales disponibles para la sesión actual.

public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

CenterObject

El objeto central utilizado por esta sesión en el fotograma actual.

Este objeto representa un objeto o su nodo padre que no se mueve en el espacio Unity. Podría ser Origin, Camera o algún `target`. `Target` puede ser un objeto que contenga un componente TargetController o BlockRootController. Al usar mapas espaciales dispersos o EasyAR Mega, el centro real GameObject es el objeto map o block ubicado específicamente bajo el nodo raíz; CenterObject es el nodo padre de este objeto. Para una explicación más detallada, consulte la descripción de ARSession.ARCenterMode.

public GameObject CenterObject { get; }

Diagnostics

Componente de diagnóstico de la sesión.

public DiagnosticsController Diagnostics { get; }

Origin

Origen de la sesión cuando cualquier función de seguimiento de movimiento está activa.

Se seleccionará automáticamente de la escena; si no existe, lo creará EasyAR o una extensión de fuente de fotogramas de terceros. Al usar fuentes de fotogramas integradas, si existe XROrigin del marco XR de Unity, se seleccionará. Si el paquete AR Foundation no está presente, solo se seleccionará un XR Origin con su estructura de árbol predeterminada intacta.

public GameObject Origin { get; }

Report

Informe de la sesión. Está disponible para su inspección después de completar el ensamblaje y se actualiza cuando cambia el estado de la sesión. Se utiliza para ver detalles como información sobre daños en la sesión o disponibilidad de componentes.

public SessionReport Report { get; }

SpecificTargetCenter

Objeto central especificado manualmente. Cuando CenterMode == SpecificTarget, CenterObject se establecerá en este objeto. Se puede modificar en cualquier momento y surte efecto inmediato.

Este objeto debe contener un componente TargetController o BlockRootController.

public GameObject SpecificTargetCenter { get; set; }

State

Estado actual de la sesión.

public ARSession.SessionState State { get; }

TrackingStatus

Estado del seguimiento de movimiento cuando cualquier función de seguimiento de movimiento está activa.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

Métodos

Assemble()

Ensambla la sesión usando AssembleOptions. Si se llama, se invoca automáticamente en StartSession().

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

Transforma desde el sistema de coordenadas de pantalla ([0, 1]^2) al sistema de coordenadas de imagen ([0, 1]^2). pointInView debe normalizarse a [0, 1]^2. No disponible en visores.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

Parámetros

pointInView

StartSession()

Inicia la sesión. Si AutoStart es verdadero, se llama automáticamente en MonoBehaviour.Start.

public void StartSession()

StopSession(bool)

Detiene la sesión en ejecución. Todas las actualizaciones de transform y renderizado de imágenes se detendrán. Puede optar por conservar la última imagen renderizada al detenerse, pero solo es efectivo cuando EasyAR controla el renderizado de imágenes (no válido para AR Foundation, visores, etc.).

public void StopSession(bool keepLastFrame)

Parámetros

keepLastFrame

Eventos

AssembleUpdate

Evento de actualización de Assemble() de la sesión. Este evento se activa 1-2 veces durante un Assemble() (si no se llamó antes, StartSession() lo llama implícitamente). La primera vez es cuando se completa el Ensamblaje. Si la actualización de la lista de dispositivos ya se completó cuando finaliza el Ensamblaje, no habrá una segunda llamada; de lo contrario, la segunda llamada ocurrirá cuando se complete la actualización de la lista de dispositivos.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

Evento de actualización del fotograma de entrada, activado solo cuando cambia el InputFrame mostrado por la sesión. No se recibe este evento en visores, y si existe una imagen de paso, su renderizado lo realiza el dispositivo.

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

Evento de finalización de la actualización de la sesión, con la misma frecuencia que MonoBehaviour.Update (requiere que los autores de extensiones para visores lo implementen correctamente). Cuando se activa este evento, todos los cambios de transform controlados por EasyAR en este fotograma ya se han completado.

public event Action PostSessionUpdate

StateChanged

Evento de cambio de State de la sesión.

public event Action<ARSession.SessionState> StateChanged