Table of Contents

Registrazione di file EIF in Unity

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

Prima di iniziare

Avvio della registrazione

Utilizza 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 (ad esempio quando si usa FramePlayer) potrebbe non essere disponibile.

FrameRecorder.enabled ha valore predefinito false, indicando che la registrazione è disattivata. Anche le impostazioni manuali nell'editor non avranno effetto.

La registrazione inizierà solo quando durante l'esecuzione della sessione, FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready.

Se FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready, puoi usare l'evento OnReady per attendere che la registrazione sia pronta.

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

Puoi utilizzare l'evento OnRecording per confermare l'avvio riuscito:

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

Non esiste un evento per gli avvii falliti, ma puoi verificare se FrameRecorder.Status è Error.

Importante

La simulazione con file EIF dipende dal dispositivo e dal frame source utilizzati durante la registrazione. Si consiglia di registrare con dispositivi identici o simili a quelli target per garantire coerenza. Verifica inoltre se il tracciamento del movimento è abilitato durante la registrazione: se disattivato, non potrà essere utilizzato durante la simulazione, e funzionalità AR dipendenti (come mappe spaziali dense o Mega) non funzioneranno come sul dispositivo reale.

Interruzione della registrazione

Utilizza FrameRecorder.enabled = false per interrompere la registrazione, ad esempio:

frameRecorder.enabled = false;

Questa operazione interrompe immediatamente la registrazione e blocca finché il file non viene completamente scritto.

Importante

È essenziale chiamare questo metodo, altrimenti il file risulterà incompleto e inutilizzabile:

  • Con formato H264, il file EIF non potrà saltare a punti temporali specifici (seek)
  • Con formato Obsolete, il file EIF non sarà utilizzabile

Archiviazione ed esportazione dei file

Utilizza l'evento OnRecording per ottenere il percorso completo del file:

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

Per impostazione predefinita, i file vengono salvati nella cartella dati persistente dell'applicazione, accessibile tramite Application.persistentDataPath.

Puoi modificare il percorso tramite FrameRecorder.Configuration.FilePath. Questo percorso deve essere impostato prima dell'avvio della registrazione e richiede la disattivazione di AutoFilePath. La cartella deve esistere.

Importante

Garantire che la directory di salvataggio esista e sia scrivibile dall'applicazione, altrimenti l'avvio della registrazione fallirà.

Esempio di salvataggio in directory personalizzata con nome file generato dinamicamente:

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;

In alternativa, nell'editor: deseleziona Auto File Path in Frame Recorder sotto AR Session (EasyAR):

alt text

Consiglio

FrameRecorder.RecordingConfiguration.FilePath consente di modificare directory e nome file (senza estensione). L'estensione viene aggiunta automaticamente in base al formato:

Per esportare file da directory private:

  • Android: Usa adb pull per file in /sdcarad/Android/data/<app package name>/files
  • iOS: Usa Xcode Devices window, iTunes o Finder (attiva UIFileSharingEnabled in Info.plist)
  • Implementa copie in directory pubbliche (es. Download o Foto)
Nota

Per abilitare la condivisione file su iOS, aggiungi UIFileSharingEnabled=YES in Info.plist:

alt text

Cambio formato di registrazione

Modifica FrameRecorder.Configuration.Format prima di avviare la registrazione.

Esempio per forzare il formato H264:

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

Nell'editor: modifica Format in Frame Recorder sotto AR Session (EasyAR):

alt text

Nota

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

Nota

Su XREAL:

  • Obsolete non è utilizzabile per simulazioni
  • H264 è richiesto per simulazioni
  • Obsolete è solo per segnalazione problemi

Usa RecordingFormat per verificare il formato corrente.

Avvio automatico con la sessione

Imposta AutoStart = true prima di avviare la sessione:

frameRecorder.AutoStart = true;

Nell'editor: seleziona Auto Start in Frame Recorder sotto AR Session (EasyAR):

alt text

Nota

Le modifiche a FrameRecorder.enabled nell'editor sono inefficaci.

Dati compatibili con Mega

Per utilizzare Mega con dati EIF:

  • Registrazioni con Unity plugin 4000+ o Mega Toolbox
  • File <nome>.eif + <nome>.eif.json per formato Obsolete

Non compatibili:

  • Registrazioni con Unity plugin 4.6 o inferiori
  • Dati nativi EasyAR Sense senza integrazioni equivalenti
Consiglio

Abilita il tracciamento del movimento durante la registrazione per risultati ottimali durante la simulazione con Mega.

Passi successivi