Table of Contents

Soporte de dispositivos e informes de session

Debido a las diferencias en hardware y rendimiento de los dispositivos, las funciones de AR a menudo no pueden funcionar en todos los dispositivos. Por lo tanto, es crucial determinar con precisión la compatibilidad del dispositivo actual al utilizar funciones de AR. Este artículo explica cómo se expresa la disponibilidad del dispositivo en Unity y cómo obtener información sobre el soporte del dispositivo y la disponibilidad de la session a través de los informes de session (ARSession.Report).

Antes de comenzar

  • Comprende los conceptos básicos, la composición y el flujo de trabajo de una session a través de la Introducción a ARSession

Soporte de dispositivos, disponibilidad de session y ensamblaje

Cada función de AR puede admitir diferentes dispositivos. Por ejemplo, el seguimiento de movimiento tiene ciertos requisitos para los componentes de hardware y generalmente requiere la calibración del dispositivo, mientras que la función de seguimiento de imágenes puede funcionar en casi cualquier dispositivo con una cámara disponible. Por lo tanto, determinar si una aplicación de AR puede ejecutarse en un dispositivo específico generalmente requiere saber qué funciones de AR se están utilizando actualmente, o dicho de otra manera, determinar si una session puede ejecutarse en el dispositivo.

En Unity, este proceso de determinación se realiza durante la fase de ensamblaje de la session (Assemble()). El proceso de ensamblaje determina el estado final de la session antes de su inicio según los componentes incluidos en la session y el soporte del dispositivo actual.

Si el ensamblaje es exitoso, la session entrará en el estado Ready y podrá iniciarse y ejecutarse; si el ensamblaje falla, la session entrará en el estado Broken y se puede consultar la razón específica del fallo a través del informe de session (ARSession.Report).

Informes de session

La propiedad ARSession.Report proporciona el informe de ejecución de la session. Un informe de session contiene los siguientes campos:

Propiedad Descripción
Availability Informe completo de disponibilidad
BrokenReason Razón de daño de la session, válido cuando el estado de la session es Broken
Exception Excepción específica de daño de la session, válido cuando el estado de la session es Broken

En el informe de session, puedes consultar la disponibilidad de cada componente a través de Availability, o consultar la razón detallada del daño cuando la session está dañada mediante BrokenReason.

Ejemplo de un informe de session

Por ejemplo, en Windows, si una session incluye ImageTrackerFrameFilter, CameraDeviceFrameSource y varios otros componentes de fuente de frame, el proceso de ensamblaje verificará la disponibilidad de cada componente y generará un informe como el siguiente:

alt text

Se puede observar que, aunque la Availability del componente ARCoreFrameSource es Unavailable, la Availability de ImageTrackerFrameFilter y CameraDeviceFrameSource es Available, por lo que todo el ensamblaje de la session es exitoso y la session entra correctamente en el estado Ready.

Si eliminamos CameraDeviceFrameSource de la session, el proceso de ensamblaje generará el siguiente informe:

alt text

Se puede ver que la lista FrameSources se redujo de 9 a 8 elementos, y aunque la Availability del componente ImageTrackerFrameFilter sigue siendo Available, al no haber componentes de fuente de frame disponibles, todo el ensamblaje de la session falla y la session entra en el estado Broken. En este caso, el valor del campo BrokenReason en el informe es NoAvailabileFrameSource, lo que indica que no hay fuentes de frame disponibles.

Además del proceso de ensamblaje, la session también puede dañarse durante su ejecución, por ejemplo, si un componente en ejecución se elimina accidentalmente. En ese caso, también se puede consultar la razón específica del daño a través del informe de session.

Actualización del informe

El informe de session cambiará en los siguientes puntos:

  • Finalización de la primera fase de ensamblaje
    En este momento se genera un informe completo de session, que incluye el informe de disponibilidad de componentes. La parte Availability del informe de session se determina en este punto y no cambia más.
    Puedes obtener actualizaciones del informe de disponibilidad de componentes a través del evento AssembleUpdate.
    Si la session se inicia directamente después del ensamblaje, también puedes obtener actualizaciones del informe de session a través del evento StateChanged. Los estados de session a observar incluyen: Ready y Broken.

  • Finalización de la segunda fase de ensamblaje
    En este punto se genera un nuevo informe de disponibilidad de componentes. A menos que la session se reinicie, el informe de session no se actualizará.
    Puedes obtener actualizaciones del informe de disponibilidad de componentes a través del evento AssembleUpdate.

  • Cuando la session se daña durante el inicio o la ejecución
    Los campos BrokenReason y Exception del informe de session se actualizarán.
    Puedes obtener actualizaciones del informe de session a través del evento StateChanged. El estado de session a observar es: Broken.

Contenido del informe: razones de daño de la session

BrokenReason indica la razón del daño de la session, con las siguientes posibilidades:

Razón Descripción
Uninitialized Proceso de ensamblaje, EasyAR Sense no se inicializó correctamente
LicenseInvalid Proceso de ensamblaje, falló la validación de la licencia de EasyAR Sense o no es aplicable al uso actual
SessionObjectIncomplete Proceso de ensamblaje, el objeto de session está incompleto. Por ejemplo, RendererFeature no está configurado correctamente en URP
NoAvailabileFrameSource Proceso de ensamblaje, no hay fuente de frame disponible. Por ejemplo, todas las fuentes de frame no están disponibles o no se agregó ninguna. En y solo en la configuración predeterminada de session, esto indica que el dispositivo no admite la función de AR seleccionada actualmente
FrameSourceIncomplete Proceso de ensamblaje, la fuente de frame está incompleta. Suele ocurrir cuando no se implementa correctamente la interfaz de fuente de frame en fuentes personalizadas
FrameFilterNotAvailabile Proceso de ensamblaje, existe un filtro de frame no disponible. Esto solo ocurre bajo ciertas opciones de ensamblaje.
StartFailed Fallo al iniciar. Por ejemplo, ocurrió una excepción durante el inicio
RunningFailed Fallo durante la ejecución. Por ejemplo, un componente en ejecución se eliminó accidentalmente, o RendererFeature no está configurado correctamente en URP, etc.

Contenido del informe: información de disponibilidad

Availability proporciona información sobre la disponibilidad de cada componente en la session. Contiene los siguientes campos:

Campo Descripción
FrameFilters Lista de disponibilidad de filtros de frame verificados durante el ensamblaje
FrameSources Lista de disponibilidad de fuentes de frame verificadas durante el ensamblaje
PendingDeviceList Tareas pendientes de descarga de la lista de dispositivos
DeviceList Resultado de la descarga de la lista de dispositivos

Los campos PendingDeviceList y DeviceList se utilizan para indicar el estado de descarga de la lista de soporte de dispositivos. Cuando finaliza la primera fase de ensamblaje, si y solo si PendingDeviceList no está vacío, el ensamblaje pasará a la segunda fase. Puedes usar esta condición para determinar si AssembleUpdate se ejecutará por segunda vez.

Pasos siguientes