Utilizzo di file EIF per la simulazione in Unity
Questo articolo spiega come utilizzare file EIF per la simulazione in Unity, consentendo di svolgere la maggior parte dello sviluppo sul computer e vedere visivamente i risultati.
Prima di iniziare
La simulazione utilizza file EIF come input, quindi prima di iniziare è necessario registrare un file EIF:
- Fare riferimento a Registrazione di file EIF per registrare un file EIF
Inoltre, è necessario conoscere:
- Concetti fondamentali di Registrazione di file EIF e utilizzo per la simulazione
- Concetti fondamentali, composizione e flusso di lavoro di AR Session
- Come accedere ai componenti di registrazione tramite Accesso ai componenti funzionali AR nella sessione
Abilitare il frame player della sessione
ARSession.AssembleOptions offre diversi modi per configurare la combinazione dei componenti della sessione. Un modo è impostare AssembleOptions.FrameSource su FramePlayer per abilitare il componente frame player, consentendo così l'utilizzo di file EIF per la simulazione.
Ad esempio:
Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;
È anche possibile, nell'editor, selezionare AR Session (EasyAR) e modificare l'opzione corrispondente in Assemble Options nella finestra Inspector:

In questo modo, all'avvio della sessione verrà abilitato il componente frame player, senza selezionare altri componenti frame source.
L'effetto della riproduzione di un file EIF con frame player è mostrato in questo video:
Questo video mostra l'effetto dell'utilizzo di frame player per la mappatura spaziale densa in movimento sul computer. A sinistra è la vista
Hierarchy, al centro la vistaScene, a destra la vistaGame. Il contenuto della vistaGameè identico a ciò che l'utente vedrebbe nel mondo reale con il telefono.
Durante la riproduzione del file EIF, tutti i componenti funzionali AR nella sessione possono funzionare normalmente, i contenuti e la logica interattiva nella scena possono funzionare correttamente, consentendo di svolgere la maggior parte dello sviluppo sul computer e vedere visivamente i risultati.
Consiglio
L'effetto visto sul computer utilizzando frame player per riprodurre EIF è sostanzialmente coerente con l'effetto sul telefono durante la registrazione del file EIF.
Importante
L'effetto di esecuzione durante la riproduzione di EIF nella scena è correlato al dispositivo utilizzato per la registrazione e alla frame source selezionata su quel dispositivo in quel momento. Pertanto, durante la registrazione di file EIF, si consiglia di utilizzare un dispositivo identico o simile a quello di destinazione, per garantire che l'effetto durante la riproduzione sia coerente con l'effetto sul dispositivo di destinazione. Allo stesso tempo, è necessario prestare particolare attenzione al fatto che la funzionalità di tracciamento del movimento nella scena di registrazione sia abilitata. Se il tracciamento del movimento non era abilitato durante la registrazione, non potrà essere abilitato durante la riproduzione e le funzionalità AR che dipendono dal tracciamento del movimento (ad esempio, mappe spaziali dense, Mega, ecc.) non funzioneranno in modo coerente con il dispositivo.
Riproduzione all'avvio della sessione
Per impostazione predefinita, il frame player inizia automaticamente a riprodurre il file EIF all'avvio della sessione, ma prima della riproduzione è necessario specificare il percorso del file EIF. Questo può essere impostato tramite le proprietà FramePlayer.FilePathType e FramePlayer.FilePath.
Ad esempio:
var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;
È anche possibile, nell'editor, selezionare AR Session (EasyAR) e modificare le opzioni corrispondenti nel componente Frame Player nella finestra Inspector:

Se il file non è specificato o il percorso non è valido, il frame player non si avvierà all'avvio della sessione e verrà registrato un messaggio di errore:
File not found:
Riproduzione manuale
Per controllare manualmente il momento della riproduzione, è possibile impostare FramePlayer.enabled su false prima di avviare la sessione,
Session.GetComponent<FramePlayer>().enabled = false;
È anche possibile, nell'editor, selezionare AR Session (EasyAR) e deselezionare Enabled per il componente Frame Player nella finestra Inspector:

Quando si desidera riprodurre, utilizzare Play() per avviare la riproduzione.
Ad esempio:
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Ogni chiamata a Play() interromperà la riproduzione precedente (se presente) e ricomincerà dall'inizio.
Attenzione
Quando vengono riprodotti nuovi dati, i dati originali nella scena non vengono cancellati. Lo stato dei componenti AR non viene reimpostato; si comporteranno come se i dati della fotocamera fossero improvvisamente passati dal punto in cui i dati precedenti si erano interrotti all'inizio dei nuovi dati.
Sebbene ciò non abbia un grande impatto su alcune funzionalità, per le funzionalità che dipendono dal tracciamento del movimento (ad esempio, mappe spaziali dense, Mega, ecc.) potrebbe causare uno stato anomalo della funzionalità, influenzando l'effetto di esecuzione. Pertanto, si consiglia di riavviare la sessione prima di riprodurre nuovi dati per reimpostare lo stato di tutti i componenti AR.
Sospensione e ripresa
Utilizzare FramePlayer.enabled per controllare la sospensione e la ripresa della riproduzione.
Ad esempio, impostare FramePlayer.enabled = false per sospendere la riproduzione:
player.enabled = false;
Dopo la sospensione della riproduzione, tutti i componenti funzionali AR si fermeranno. I contenuti e la logica interattiva nella scena potrebbero non fermarsi, a seconda del contenuto stesso. Dopo la ripresa, i componenti funzionali AR riprenderanno dal punto in cui erano stati sospesi.
Arresto della riproduzione
Utilizzare Stop() per arrestare la riproduzione.
player.Stop();
Dopo l'arresto della riproduzione, tutti i componenti funzionali AR si fermeranno. I contenuti e la logica interattiva nella scena potrebbero non fermarsi, a seconda del contenuto stesso.
Passaggio a un punto temporale specifico per la riproduzione (seek)
Utilizzare Seek(double) per passare a un punto temporale specifico per la riproduzione.
Ad esempio, passare a 5 secondi dopo per la riproduzione:
player.Seek(player.Time + 5);
Nota
Dopo il passaggio, la riproduzione potrebbe non iniziare dal punto temporale esatto, a seconda del metodo di codifica del file EIF e dell'intervallo dei frame chiave.
Non tutti i file EIF supportano la riproduzione con passaggio; è possibile utilizzare la proprietà IsSeekable per verificare se il file EIF attualmente in riproduzione supporta il passaggio.
Nota
Solo i file EIF registrati in formato H264 e con registrazione interrotta correttamente supportano il passaggio. Se il file EIF non supporta il passaggio, chiamare Seek(double) non avrà alcun effetto.
Controllo della velocità di riproduzione
Utilizzare la proprietà Speed per controllare la velocità di riproduzione.
Ad esempio, impostare la velocità di riproduzione con un aumento di 0,1 volte rispetto all'originale:
player.Speed += 0.1;
Non tutti i file EIF supportano il controllo della velocità di riproduzione; è possibile utilizzare la proprietà IsSpeedChangeable per verificare se il file EIF attualmente in riproduzione supporta il controllo della velocità.
Nota
Solo i file EIF registrati in formato H264 e con registrazione interrotta correttamente supportano il controllo della velocità. Se il file EIF non supporta il controllo della velocità, impostare Speed non avrà alcun effetto.
Argomenti correlati
- Provare Utilizzo dello strumento di convalida della sessione, questo strumento include un semplice lettore EIF che consente di utilizzare file EIF per la simulazione in modo più rapido