Registrazione di file EIF in Unity
Questo articolo spiega come registrare file EIF in Unity per l'utilizzo in simulazioni.
Prima di iniziare
- Comprendere i concetti base di registrazione file EIF per simulazioni
- Comprendere i concetti base, i componenti e il flusso di lavoro di una AR Session
- Imparare ad accedere ai componenti di registrazione tramite accesso ai componenti AR nella sessione
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:
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):

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 pullper file in/sdcarad/Android/data/<app package name>/files - iOS: Usa Xcode Devices window, iTunes o Finder (attiva
UIFileSharingEnabledinInfo.plist) - Implementa copie in directory pubbliche (es. Download o Foto)
Nota
Per abilitare la condivisione file su iOS, aggiungi UIFileSharingEnabled=YES in Info.plist:

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):

Nota
H264 non è supportato su alcuni dispositivi (es. Windows). Auto seleziona automaticamente il formato adatto.
Nota
Su XREAL:
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):

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.jsonper 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
- Prova Simulazioni con file EIF
- Prova lo Strumento di validazione sessione