Table of Contents

Cámaras en unity y fuentes de datos de fotogramas de entrada —— fuente de fotogramas (Frame Source)

La fuente de fotogramas es el proveedor de datos de cámaras y fotogramas de entrada en Unity. Este documento introduce los conceptos básicos, tipos de fuentes de fotogramas y métodos de selección durante el tiempo de ejecución.

Antes de comenzar

¿Qué es una fuente de fotogramas?

La fuente de fotogramas (FrameSource) es el proveedor de fotogramas de entrada (InputFrame), que abstrae cámaras y otros dispositivos o funciones que proporcionan datos de fotogramas de entrada.

El siguiente diagrama muestra la posición de la fuente de fotogramas en la sesión:

flowchart LR
  F[Frame Source]
  A((Input Frame))
  B[Session]
  C([Camera])
  O([Origin])
  T([Target])
  F --> A
  A --> B
  B -. transform .-> C
  B -. transform .-> O
  B -. transform .-> T

  style F fill:#6e6ce6,stroke:#333,color:#fff

La fuente de fotogramas puede simplemente proporcionar datos para funciones de AR aguas abajo, o puede implementar algunas funciones de AR por sí misma, como el seguimiento de movimiento. Algunas fuentes de fotogramas proporcionan interfaces de control para dispositivos de cámara, permitiendo a los usuarios seleccionar parámetros como resolución, modo de enfoque, etc.

Tipos de fuentes de fotogramas

Clasificadas por el paquete de Unity que proporciona la fuente de fotogramas, se pueden dividir en dos categorías principales:

  • Fuentes de fotogramas integradas: proporcionadas por el paquete de complementos de EasyAR Sense Unity, generalmente compatibles con la mayoría de los escenarios comunes y algunos cascos de realidad virtual.
  • Fuentes de fotogramas externas: proporcionadas por paquetes de extensión de complementos de EasyAR Sense Unity, generalmente utilizadas para admitir dispositivos de casco específicos. Muchas veces, las fuentes de fotogramas externas son proporcionadas por fabricantes de cascos o desarrolladores de terceros.

Distinguida de las fuentes de fotogramas externas, la cámara personalizada no es necesariamente proporcionada externamente; algunas fuentes de fotogramas integradas también son cámaras personalizadas.

Las fuentes de fotogramas pueden proporcionar datos de movimiento con diferentes grados de libertad: 0DoF, 3DoF, 5DoF y 6DoF. La misma fuente de fotogramas podría proporcionar datos de movimiento con diferentes grados de libertad en diferentes estados de funcionamiento.

La siguiente tabla enumera las fuentes de fotogramas proporcionadas por EasyAR:

Nombre Integrado Cámara personalizada Datos de movimiento Descripción
CameraDeviceFrameSource No Ninguno (0DoF) Cámara normal, compatible con frontal, trasera y PC
EditorCameraDeviceFrameSource No Ninguno (0DoF) Cámara normal, solo para depuración en el editor
FramePlayer No Determinado por archivo Reproduce archivos EIF para simular ejecución
ThreeDofCameraDeviceFrameSource No 3DoF Proporciona capacidad de seguimiento 3DoF
InertialCameraDeviceFrameSource No 5DoF Proporciona capacidad de navegación inercial
MotionTrackerFrameSource No 6DoF Proporciona seguimiento de movimiento implementado por EasyAR
ARCoreFrameSource No 6DoF Proporciona seguimiento de movimiento de ARCore
ARKitFrameSource No 6DoF Proporciona seguimiento de movimiento de ARKit
AREngineFrameSource 6DoF Proporciona seguimiento de movimiento de AR Engine
VisionOSARKitFrameSource 6DoF Proporciona seguimiento de movimiento de VisionOS ARKit 1
XREALFrameSource 6DoF Proporciona seguimiento de movimiento para dispositivos XREAL 1
ARCoreARFoundationFrameSource 6DoF Proporciona seguimiento de movimiento de ARFoundation para ARCore
ARKitARFoundationFrameSource 6DoF Proporciona seguimiento de movimiento de ARFoundation para ARKit
PicoFrameSource No 6DoF Proporciona seguimiento de movimiento para dispositivos Pico 1
RokidFrameSource No 6DoF Proporciona seguimiento de movimiento para dispositivos Rokid 1

Selección de fuente de fotogramas en tiempo de ejecución

La estructura jerárquica de escena de la sesión contiene uno o más componentes de fuente de fotogramas. Durante el tiempo de ejecución de la sesión, no todos los componentes de fuente de fotogramas se utilizan.

La siguiente captura de pantalla muestra una estructura jerárquica de escena con un solo componente de fuente de fotogramas:

alt text

La siguiente captura de pantalla muestra una estructura jerárquica de escena con múltiples componentes de fuente de fotogramas:

alt text

Las diferentes fuentes de datos de fotogramas tienen funciones distintas, lo que también determina sus escenarios y dispositivos aplicables. Al ensamblar la sesión, se seleccionará una y solo una de estas componentes como fuente de datos de fotogramas de la sesión.

La propiedad AssembleOptions.FrameSourceSelection define el método de selección de la fuente de datos de fotogramas durante el tiempo de ejecución de la sesión:

Nombre Método
Auto (predeterminado) Selección automática, elige el primer nodo secundario disponible y activo según el orden de transform.
Manual Especificación manual. Solo se puede especificar un nodo secundario de la sesión.
FramePlayer Usa FramePlayer.
Consejo

El orden de transform de los objetos de Unity se puede verificar usando Transform.GetSiblingIndex() o mediante la clasificación de objetos en la vista Hierarchy, pero se debe desactivar la siguiente opción (desactivada por defecto): Edit > Preferences > General > Enable Alphanumeric Sorting.

Durante el ensamblaje de la sesión, la fuente de datos de fotogramas se selecciona siguiendo estos pasos:

  1. La sesión recorre sus nodos secundarios, recolectando todas las componentes de fuente de datos de fotogramas activas según el orden de transform.
  2. Filtra la lista de candidatos según la estrategia de selección de fuente (AssembleOptions.FrameSource) en AssembleOptions:
    • Auto (predeterminado): Mantiene todos los candidatos.
    • Manual: Mantiene solo la fuente de datos de fotogramas especificada manualmente.
    • FramePlayer: Reemplaza la lista de candidatos por FramePlayer.
  3. Filtra nuevamente la lista de candidatos, eliminando estas componentes:
    • Componentes deshabilitadas por sí mismas.
    • Todas las componentes de cámara personalizada cuando la cámara personalizada está desactivada (AssembleOptions.EnableCustomCamera es false).
  4. (Plataforma Android) Si el tiempo de espera de AssembleOptions.DeviceList es mayor que 0, y la lista de candidatos incluye MotionTrackerFrameSource, ARCoreFrameSource o AREngineFrameSource, intenta descargar las listas de compatibilidad de dispositivos más recientes. Tras la actualización, la disponibilidad de estas fuentes puede cambiar. Tras completar la descarga o agotar el tiempo, continúa con los pasos siguientes.
  5. Verifica secuencialmente la disponibilidad de las componentes candidatas restantes (llamando a FrameSource.CheckAvailability() y accediendo a FrameSource.IsAvailable).
  6. Selecciona la primera fuente de datos de fotogramas cuyo resultado de verificación sea disponible.

Las condiciones de deshabilitación propias de la componente se definen internamente, siendo comunes estos casos:

Si finalmente no se selecciona ninguna fuente de datos de fotogramas, la sesión entrará en estado Broken, y el campo BrokenReason en el informe de sesión tendrá el valor NoAvailabileFrameSource.

Nota

Tras actualizar la lista de dispositivos, si esta cambia, la disponibilidad de las fuentes de datos de fotogramas también puede alterarse. Consulta Compatibilidad de dispositivos e informe de sesión para entender el comportamiento de la sesión en este caso.

Próximos pasos

Temas relacionados


  1. La compatibilidad con dispositivos se puede consultar en Soporte de cascos de EasyAR.