Table of Contents

Registrare file EIF in Unity

Questo articolo spiega come registrare file EIF in Unity per l'utilizzo nella simulazione.

Prima di iniziare

Avviare la registrazione

Utilizzare FrameRecorder.enabled = true per avviare la registrazione, ad esempio:

if (Session.State >= ARSession.SessionState.Ready && Session.Assembly.FrameRecorder.OnSome)
{
    var frameRecorder = Session.Assembly.FrameRecorder.Value;
    frameRecorder.enabled = true;
}

Nota: è necessario verificare prima se ARAssembly.FrameRecorder esiste.

Nota

ARAssembly.FrameRecorder in alcuni casi, come quando si usa FramePlayer, non è disponibile.

FrameRecorder.enabled è false per default, indicando che la registrazione è disattivata, e impostarlo nell'editor non ha effetto.

La registrazione inizia quando la session è in esecuzione e FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready.

Se FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready, usare l'evento OnReady per attendere la preparazione.

Session.GetComponent<FrameRecorder>().OnReady.AddListener(() => {
    // Avviare la registrazione
});

Usare OnRecording per confermare l'avvio:

frameRecorder.OnRecording.AddListener((file) =>
{
    Debug.Log($"Recording started: {file}");
});

L'avvio fallito non genera eventi, ma è verificabile controllando se FrameRecorder.Status è Error.

Importante

La simulazione dipende dal dispositivo e dal frame source usati durante la registrazione. Per coerenza, registrare con dispositivi identici o simili a quelli target. Verificare che il motion tracking sia attivo durante la registrazione, altrimenti funzionalità AR dipendenti (es. mappe spaziali dense, Mega) non funzioneranno correttamente in simulazione.

Fermare la registrazione

Usare FrameRecorder.enabled = false per fermare la registrazione, ad esempio:

frameRecorder.enabled = false;

Questa operazione ferma immediatamente la registrazione e blocca finché il file non è scritto.

Importante

Fermare sempre la registrazione, altrimenti il file sarà incompleto e inutilizzabile:

  • Con formato H264: impossibile saltare a punti temporali specifici (seek)
  • Con formato Obsolete: file completamente inutilizzabile

Archiviazione ed esportazione file

Usare OnRecording per ottenere il percorso completo del file:

frameRecorder.OnRecording.AddListener((file) =>
{
    Debug.Log($"Recording started: {file}");
});

Per default, i file sono archiviati nel persistent data path dell'app, accessibile tramite Application.persistentDataPath.

Modificare il percorso tramite FrameRecorder.Configuration.FilePath. Impostare prima dell'avvio, disattivando AutoFilePath. Creare prima le directory.

Importante

Assicurarsi che la directory di archiviazione esista e sia scrivibile, altrimenti l'avvio fallirà.

Esempio di percorso personalizzato con nome basato sul frame source e data:

if (!Directory.Exists(SavePath))
{
    Directory.CreateDirectory(SavePath);
}
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.Configuration.AutoFilePath = false;
frameRecorder.Configuration.FilePath.Type = WritablePathType.Absolute;
frameRecorder.Configuration.FilePath.FolderPath = SavePath;
frameRecorder.Configuration.FilePath.FileName = ARSessionFactory.DefaultName(Session.Assembly.FrameSource.GetType()).Replace(" ", "") + DateTime.Now.ToString("_yyyy-MM-dd_HH-mm-ss.fff");

frameRecorder.enabled = true;

Nell'editor, deselezionare Auto File Path in AR Session (EasyAR) > Inspector:

alt text

Consiglio

FrameRecorder.RecordingConfiguration.FilePath modifica directory e nome file (senza estensione). L'estensione è aggiunta automaticamente:

Per esportare file da percorsi privati:

  • Android: adb pull da /sdcard/Android/data/<app package name>/files
  • iOS: Esportare via Xcode Devices, iTunes o Finder (abilitare UIFileSharingEnabled in Info.plist)
  • Codice: Salvare in directory pubbliche (es. Download o Foto)
Nota

Per la condivisione file su iOS, aggiungere UIFileSharingEnabled con valore YES in Info.plist:

alt text

Cambiare il formato di registrazione

Modificare FrameRecorder.Configuration.Format prima dell'avvio.

Esempio per forzare H264:

frameRecorder.Configuration.Format = FrameRecorder.InternalFormat.H264;

Nell'editor, modificare Format in AR Session (EasyAR) > Inspector:

alt text

Nota

H264 non è supportato su alcuni dispositivi (es. Windows). Auto seleziona automaticamente il formato appropriato.

Nota

Su XREAL:

  • Usare H264 per la simulazione
  • Usare Obsolete solo per segnalare problemi

Usare RecordingFormat per verificare il formato corrente.

Registrazione automatica all'avvio della session

Impostare AutoStart = true prima di avviare la session:

frameRecorder.AutoStart = true;

Nell'editor, selezionare Auto Start in AR Session (EasyAR) > Inspector:

alt text

Nota

Modificare FrameRecorder.enabled nell'editor non ha effetto.

Dati utilizzabili con Mega

Per utilizzare Mega con EIF, sono necessari requisiti specifici. I dati sono compatibili con Mega se:

  • Registrati con Unity plugin 4000+
  • Registrati con Mega Toolbox
  • In formato Obsolete con file JSON associato (es. x.eif.json)

Dati non compatibili:

  • Registrati con Unity plugin 4.6 o precedenti
  • Registrati con EasyAR Sense nativo senza integrazioni equivalenti
Consiglio

Abilitare il motion tracking durante la registrazione per risultati ottimali in simulazione.

Passi successivi