Registrare file EIF in Unity
Questo articolo spiega come registrare file EIF in Unity per l'utilizzo nella simulazione.
Prima di iniziare
- Comprendere i concetti base di registrazione file EIF per la simulazione
- Comprendere i concetti base, i componenti e il flusso di lavoro di AR Session
- Apprendere come accedere al componente di registrazione tramite accesso ai componenti AR in session
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:
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:

Consiglio
FrameRecorder.RecordingConfiguration.FilePath modifica directory e nome file (senza estensione). L'estensione è aggiunta automaticamente:
Per esportare file da percorsi privati:
- Android:
adb pullda/sdcard/Android/data/<app package name>/files - iOS: Esportare via Xcode Devices, iTunes o Finder (abilitare
UIFileSharingEnabledinInfo.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:

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:

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

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
- Provare simulazione con file EIF
- Utilizzare lo strumento di verifica session