Simular ejecución usando archivos EIF en Unity
Este artículo explica cómo usar archivos EIF en Unity para simular ejecución, permitiendo realizar la mayor parte del desarrollo en la computadora y ver los efectos visualmente.
Antes de comenzar
La simulación usa archivos EIF como entrada, por lo que antes de comenzar necesitas grabar un archivo EIF:
- Consulta Grabar archivo EIF para grabar un archivo EIF
También necesitas comprender:
- Los conceptos básicos de Grabar archivos EIF y usarlos para simulación
- Los conceptos básicos, composición y flujo de trabajo de AR Session
- Cómo acceder al componente de grabación mediante Acceder a componentes de funcionalidad AR en la sesión
Habilitar el frame player de la sesión
ARSession.AssembleOptions ofrece varias formas de configurar la combinación de componentes de la sesión. Una de ellas es establecer AssembleOptions.FrameSource como FramePlayer para habilitar el componente frame player, permitiendo usar archivos EIF para simulación.
Por ejemplo:
Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;
También puedes, en el editor, seleccionar AR Session (EasyAR) y modificar la opción correspondiente en Assemble Options en la ventana Inspector:

Así, al iniciar la sesión se habilitará el componente frame player sin seleccionar otros componentes frame source.
El efecto de reproducir un archivo EIF con frame player se muestra en este video:
Este video muestra el efecto de mapeo espacial denso usando frame player en una computadora. A la izquierda está la vista
Jerarquía, en el centro la vistaEscenay a la derecha la vistaJuego. El contenido de la vistaJuegoes idéntico a lo que el usuario vería en el mundo real con un teléfono.
Durante la reproducción del archivo EIF, todos los componentes AR de la sesión funcionan normalmente. Los contenidos y lógicas interactivas en la escena también funcionan, permitiendo realizar la mayor parte del desarrollo en la computadora y ver los efectos visualmente.
Consejo
El efecto visto al reproducir un archivo EIF en la computadora es básicamente idéntico al efecto en el teléfono durante la grabación.
Importante
El efecto de ejecución al reproducir EIF depende del dispositivo usado durante la grabación y del frame source seleccionado en ese momento. Por lo tanto, al grabar archivos EIF, se recomienda usar un dispositivo idéntico o similar al dispositivo objetivo para garantizar consistencia. Además, presta atención a si la función de seguimiento de movimiento estaba habilitada durante la grabación. Si no estaba habilitada, no podrá habilitarse durante la reproducción, y las funcionalidades AR que dependen del seguimiento de movimiento (como el mapa espacial denso o Mega) no funcionarán igual que en el dispositivo.
Reproducir al iniciar la sesión
Por defecto, el frame player comienza automáticamente a reproducir el archivo EIF al iniciar la sesión. Pero antes de reproducir, debes especificar la ruta del archivo EIF usando las propiedades FramePlayer.FilePathType y FramePlayer.FilePath.
Por ejemplo:
var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;
También puedes, en el editor, seleccionar AR Session (EasyAR) y modificar las opciones correspondientes en el componente Frame Player en la ventana Inspector:

Si no se especifica archivo o la ruta es inválida, el frame player fallará al iniciar la sesión y mostrará un error:
File not found:
Reproducción manual
Para controlar manualmente el momento de reproducción, desactiva FramePlayer.enabled antes de iniciar la sesión:
Session.GetComponent<FramePlayer>().enabled = false;
También puedes, en el editor, seleccionar AR Session (EasyAR) y desmarcar Enabled en el componente Frame Player en la ventana Inspector:

Cuando quieras reproducir, usa Play() para iniciar la reproducción.
Por ejemplo:
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Cada llamada a Play() detendrá la reproducción anterior (si había una) y comenzará desde el inicio.
Precaución
Al reproducir nuevos datos, los datos existentes en la escena no se borran. El estado de los componentes AR no se reinicia; se comportarán como si los datos de la cámara saltaran repentinamente desde donde terminaron los datos anteriores hasta donde comienzan los nuevos.
Aunque esto no afecta a algunas funcionalidades, puede causar estados anómalos en funcionalidades que dependen del seguimiento de movimiento (como el mapa espacial denso o Mega), afectando su comportamiento. Por lo tanto, se recomienda reiniciar la sesión antes de reproducir nuevos datos para restablecer el estado de todos los componentes AR.
Pausar y continuar
Usa FramePlayer.enabled para controlar la pausa y continuación de la reproducción.
Por ejemplo, establece FramePlayer.enabled = false para pausar:
player.enabled = false;
Al pausar, todos los componentes AR dejan de funcionar. Los contenidos y lógicas interactivas en la escena pueden no detenerse, dependiendo de su implementación. Al continuar, los componentes AR retomarán desde el punto de pausa.
Detener la reproducción
Usa Stop() para detener la reproducción.
player.Stop();
Al detenerse, todos los componentes AR dejan de funcionar. Los contenidos y lógicas interactivas en la escena pueden no detenerse, dependiendo de su implementación.
Saltar a un punto temporal específico (seek)
Usa Seek(double) para saltar a un punto temporal específico.
Por ejemplo, saltar 5 segundos adelante:
player.Seek(player.Time + 5);
Nota
Es posible que la reproducción no comience exactamente en el punto temporal especificado, dependiendo de la codificación del archivo EIF y del intervalo de fotogramas clave.
No todos los archivos EIF soportan saltos. Usa la propiedad IsSeekable para verificar si el archivo EIF actual soporta saltos.
Nota
Solo los archivos EIF grabados en formato H264 y detenidos correctamente soportan saltos. Si el archivo no soporta saltos, llamar a Seek(double) no tendrá efecto.
Control de velocidad de reproducción
Usa la propiedad Speed para controlar la velocidad de reproducción.
Por ejemplo, aumentar la velocidad en 0.1x:
player.Speed += 0.1;
No todos los archivos EIF soportan cambios de velocidad. Usa la propiedad IsSpeedChangeable para verificar si el archivo EIF actual soporta cambios de velocidad.
Nota
Solo los archivos EIF grabados en formato H264 y detenidos correctamente soportan cambios de velocidad. Si el archivo no soporta cambios de velocidad, establecer Speed no tendrá efecto.
Temas relacionados
- Prueba Usar la herramienta de validación de sesión, que incluye un reproductor EIF simple para simulaciones más rápidas con archivos EIF