Table of Contents

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:

También necesitas comprender:

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:

alt text

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 vista Escena y a la derecha la vista Juego. El contenido de la vista Juego es 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:

alt text

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:

alt text

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