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
- Comprender los conceptos básicos, componentes y flujo de trabajo de AR Session.
- Comprender conceptos básicos como cámaras, fotogramas de entrada.
¿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 | Sí | No | Ninguno (0DoF) | Cámara normal, compatible con frontal, trasera y PC |
| EditorCameraDeviceFrameSource | Sí | No | Ninguno (0DoF) | Cámara normal, solo para depuración en el editor |
| FramePlayer | Sí | No | Determinado por archivo | Reproduce archivos EIF para simular ejecución |
| ThreeDofCameraDeviceFrameSource | Sí | No | 3DoF | Proporciona capacidad de seguimiento 3DoF |
| InertialCameraDeviceFrameSource | Sí | No | 5DoF | Proporciona capacidad de navegación inercial |
| MotionTrackerFrameSource | Sí | No | 6DoF | Proporciona seguimiento de movimiento implementado por EasyAR |
| ARCoreFrameSource | Sí | No | 6DoF | Proporciona seguimiento de movimiento de ARCore |
| ARKitFrameSource | Sí | No | 6DoF | Proporciona seguimiento de movimiento de ARKit |
| AREngineFrameSource | Sí | Sí | 6DoF | Proporciona seguimiento de movimiento de AR Engine |
| VisionOSARKitFrameSource | Sí | Sí | 6DoF | Proporciona seguimiento de movimiento de VisionOS ARKit 1 |
| XREALFrameSource | Sí | Sí | 6DoF | Proporciona seguimiento de movimiento para dispositivos XREAL 1 |
| ARCoreARFoundationFrameSource | Sí | Sí | 6DoF | Proporciona seguimiento de movimiento de ARFoundation para ARCore |
| ARKitARFoundationFrameSource | Sí | Sí | 6DoF | Proporciona seguimiento de movimiento de ARFoundation para ARKit |
| PicoFrameSource | No | Sí | 6DoF | Proporciona seguimiento de movimiento para dispositivos Pico 1 |
| RokidFrameSource | No | Sí | 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:
![]()
La siguiente captura de pantalla muestra una estructura jerárquica de escena con múltiples componentes de fuente de fotogramas:

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:
- La sesión recorre sus nodos secundarios, recolectando todas las componentes de fuente de datos de fotogramas activas según el orden de transform.
- 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.
- 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).
- (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.
- Verifica secuencialmente la disponibilidad de las componentes candidatas restantes (llamando a FrameSource.CheckAvailability() y accediendo a FrameSource.IsAvailable).
- 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:
- Ejecución en sistemas no compatibles, como AREngineFrameSource en sistemas no Android.
- SDKs de terceros necesarios no instalados, como XREALFrameSource si falta el SDK de XREAL.
- Condiciones de configuración no satisfechas, como MotionTrackerFrameSource si el MotionTrackerCameraDeviceQualityLevel del dispositivo es inferior a MotionTrackerFrameSource.DeviceQualityLevel.
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
- Intente agregar un grupo de fuentes de fotogramas en la escena
Temas relacionados
- Soporte de dispositivos e informe de sesión
- Soporte de cascos de EasyAR
- Crear fuentes de fotogramas externas para usar cámaras personalizadas
-
La compatibilidad con dispositivos se puede consultar en Soporte de cascos de EasyAR.↩↩↩↩