Persistenza dei sistemi di coordinate spaziali

In generale, i vantaggi delle funzionalità di persistenza degli strumenti di blocco del mondo sono di maggiore interesse rispetto ai dettagli dell'implementazione.

Questo articolo inizierà quindi con una descrizione delle esperienze abilitate dalla persistenza degli strumenti di blocco del mondo. Successivamente, verrà illustrato come può essere gestita la persistenza dello stato degli strumenti di blocco del mondo. Si chiuderà quindi con una breve descrizione dei dati salvati e caricati.

World Locking Tools tra sessioni

Come definito altrove, lo stato bloccato è tutti i dati necessari per riprendere lo spazio stabile bloccato a livello mondiale corrente.

L'utilità principale della persistenza degli strumenti di blocco del mondo è consentire l'uso nelle sessioni successive dei vantaggi del lavoro di una sessione preliminare, l'analisi di un'area e l'allineamento dello spazio virtuale al mondo reale.

Il ripristino di questo stato consente alle sessioni successive di rinunciare a una configurazione tediosa o dispendiosa in termini di tempo e di accedere direttamente all'esperienza focale.

Salvataggio dello stato degli strumenti di blocco del mondo

Prima di poter essere caricato, è necessario salvare lo stato bloccato.

Il modo più semplice per salvare lo stato bloccato è abilitare il salvataggio automatico in World Locking Tools Manager, nel controllo Unity nel contesto degli strumenti di blocco del mondo o in fase di esecuzione tramite script.

L'impostazione dello stato di World Locking Tools Manager tramite script viene eseguita ottenendo prima lo stato, modificandolo nel modo desiderato e quindi impostando di nuovo lo stato come blocco. Ad esempio, per attivare o disattivare la funzionalità di salvataggio automatico:

var settings = WorldLockingManger.GetInstance().Settings;
settings.AutoSave = !settings.AutoSave;
WorldLockingManager.GetInstance().Settings = settings;

Se la funzionalità di salvataggio automatico passa da abilitata a disabilitata durante una sessione, non verranno emersi altri tentativi di salvataggio periodici. Se passa da disabilitato a abilitato, i salvataggio periodici verranno avviati o ripresi.

La funzionalità di salvataggio automatico mantiene aggiornato lo stato salvato salvando periodicamente lo stato corrente in modo asincrono.

Se è necessario un maggiore controllo sulla tempistica di salvataggio dello stato, il salvataggio automatico può essere impostato su false e il salvataggio manuale può essere eseguito tramite script. Il salvataggio asincrono viene attivato facilmente, come:

WorldLockingManager.GetInstance().Save();

Poiché il salvataggio è asincrono, gli altri tentativi di richiamare Save() mentre è ancora in corso un salvataggio precedente verranno ignorati.

Caricamento dello stato bloccato

Dopo aver salvato uno stato bloccato, potrebbe essere opportuno ricaricare world locking tools in tale stato, in una sessione successiva o anche in un secondo momento nella stessa sessione.

Come si può vedere salvando lo stato bloccato, esistono due percorsi per il caricamento dello stato.

Se il flag AutoLoad in World Locking Tools Manager è abilitato, qualsiasi stato salvato in precedenza verrà caricato all'avvio. Se non è presente alcuno stato salvato da caricare, non viene generato alcun errore e l'avvio procede come se il flag non fosse stato impostato.

L'impostazione del flag AutoLoad da false a true (ad esempio tramite script) in fase di esecuzione non avrà alcun effetto. Il caricamento automatico si verifica al caricamento iniziale o non si verifica affatto.

Tuttavia, un caricamento può essere avviato dallo script in qualsiasi momento tramite la funzione Load di World Locking Tools Manager:

WorldLockingManager.GetInstance().Load();

Analogamente a Save, il caricamento viene eseguito in modo asincrono. Tutte le chiamate successive a Load mentre una è ancora in corso verranno ignorate.

Che cosa viene salvato?

I dati necessari per ricostruire il mapping degli strumenti di blocco del mondo, cio' l'allineamento del mondo virtuale al mondo reale, possono essere suddivisi in quattro gruppi.

  • Ancoraggi nello stato: la rete sottostante di ancoraggi spaziali creata e gestita internamente da World Locking Tools ' Anchor Manager fornisce il binding necessario al mondo reale. Questi ancoraggi vengono resi persistenti tramite il meccanismo di archiviazione sottostante della piattaforma.

  • Stato del motore: lo stato del motore è persistente per consentire al motore di riprendere il mapping corrente. Il ripristino di questo stato rimuove tali indeterminanze come posizione iniziale della testa nelle sessioni precedenti.

  • Blocco dello spazio: se l'applicazione ha applicato altri segnaposto dello spazio per forzare l'allineamento delle coordinate di modellazione al mondo reale in un set discreto di punti, anche tale mapping viene reso persistente.

  • Spazio delle coordinate: gli strumenti di blocco del mondo salvano in modo permanente lo spazio delle coordinate rispetto al mondo fisico salvando un grafico interno degli ancoraggi nello spazio locali.

Cosa non viene salvato?

Impostazioni non vengono salvati e Gli strumenti di blocco non salvano o ripristinano singoli oggetti applicazione. Viene salvato solo lo stato. Tutte le modifiche di configurazione apportate dall'applicazione, ad esempio le modifiche apportate tramite l'API WorldLockingManager, vengono reimpostate sui valori impostati in Unity Inspector a ogni avvio dell'applicazione. In caso contrario, se non sono impostati nel controllo, vengono impostati sui valori predefiniti nel codice.

Si supponga, ad esempio, che l'applicazione voglia presentare all'utente la possibilità di salvare automaticamente lo stato di blocco del mondo e che le preferenze dell'utente permangono tra le sessioni fino a quando non vengono modificate. L'applicazione deve quindi:

  1. Presentare all'utente l'esperienza utente per l'impostazione delle preferenze di salvataggio automatico (presumibilmente con altre impostazioni dell'applicazione).
  2. Inoltrare le preferenze dell'utente a WorldLockingManager.
  3. Registrare la preferenza per il file (presumibilmente con altre impostazioni dell'applicazione).
  4. All'avvio dell'applicazione, caricare la preferenza salvata (se presente) e inoltrarla a WorldLockingManager.

Vedere le note in WorldLockingContext relative ai problemi di temporizzazione quando si combinano le impostazioni di stato tra asset e script.

Vedi anche