Controllare il processo di tracking di Mega Go
Questo articolo spiega come controllare le funzioni e i parametri del processo di tracking di Mega Go per soddisfare le esigenze di diversi scenari applicativi.
Prima di iniziare
- Controlla La mia funzione di localizzazione è utilizzabile? per confermare che la mappa corretta sia stata scaricata.
Flusso di lavoro del tracker
Il flusso di lavoro del tracker è il seguente:
flowchart LR
subgraph startup_graph[Avvio]
direction TB
sstart((Avvio della session))
create[Creazione nativa]
load(Carica target)
verify[Verifica trial]
init_g[[Inizializzazione]]
end
subgraph init_graph[Inizializzazione]
direction TB
init_{Inizializzazione 6DoF riuscita<br>o non 6DoF}
init[[Processo di inizializzazione del tracking locale]]
detecting[[Rilevamento]]
tracking_g[[Tracking]]
end
subgraph tracking_graph[Tracking]
direction TB
tracking[[Tracking continuo]]
end
subgraph stopping_graph[Arresto]
direction TB
unload(Scarica target)
dispose[Distruzione nativa]
sstop([Arresto della session])
end
sstart --> create --> load --> verify --> init_g
init --> init_ --> |Yes| detecting --> tracking_g
unload --> dispose --> sstop
init_ --> |No| init
startup_graph --> init_graph
init_graph --> tracking_graph
tracking_graph --> stopping_graph
Il processo è suddiviso approssimativamente in più fasi:
- Avvio:
- Dopo l'avvio della session, il tracker del livello nativo viene creato.
- Dopo il Start() del target, questo viene caricato nel tracker corrispondente.
- Per i dati di prova, è necessario verificare online l'idoneità alla prova; solo dopo la verifica riuscita si passa alla fase successiva.
- Inizializzazione:
- Quando si usa una frame source 6DoF, inizia il processo di inizializzazione del tracking locale.
- L'inizializzazione del tracking locale può richiedere un po' di tempo; dipende dalla complessità della scena e dalle capacità del dispositivo, e di solito è anche legata all'algoritmo usato dal livello inferiore della frame source.
- Quando si usa una frame source non 6DoF, la fase di inizializzazione locale viene saltata e si passa direttamente al rilevamento.
- Anche il processo di rilevamento può richiedere del tempo, a seconda di quanto sia facile localizzare la scena e della qualità di acquisizione e mappatura dei dati.
- Con la configurazione predefinita, il contenuto di questa fase non viene mostrato; questo comportamento può essere controllato tramite le opzioni del componente ActiveController.
- Quando si usa una frame source 6DoF, inizia il processo di inizializzazione del tracking locale.
- Tracking:
- Il tracker segue continuamente il block corrente.
- Con la configurazione predefinita, viene mostrato solo il contenuto sotto i nodi target che sono in stato di tracking (TargetController.IsTracked ==
true); questo comportamento può essere controllato tramite le opzioni del componente ActiveController.
- Arresto:
- Dopo l'arresto della session, il target viene scaricato e il tracker del livello nativo viene distrutto.
Regolare il livello di supporto del dispositivo
La proprietà MegaGoTrackerFrameFilter.MinInputFrameLevel di MegaGoTrackerFrameFilter viene usata per specificare il livello minimo di dispositivo supportato da Mega.
![]()
Mega Go può funzionare con quasi tutti i tipi di frame source, ma ogni frame source influenza in modo diverso il risultato del tracking.
Per impostazione predefinita, Mega seleziona per il tracking la frame source del livello più alto supportato dal dispositivo. La session compatibile con Mega Go nella configurazione predefinita è già configurata con frame source che supportano 6DoF e 5DoF.
Per fare in modo che Mega supporti una frame source di un certo livello in runtime, devono essere soddisfatte due condizioni:
- La frame source richiesta si trova nel gruppo di frame source opzionali della session.
- MegaGoTrackerFrameFilter.MinInputFrameLevel è maggiore o uguale al livello CameraTransformType della frame source richiesta.
Per esempio, per supportare il tracking 3DoF nella session predefinita, è necessario:
- Aggiungere ThreeDofCameraDeviceFrameSource al gruppo di frame source della session.
- Modificare MegaGoTrackerFrameFilter.MinInputFrameLevel in ThreeDof.
Per un altro esempio, per rimuovere il supporto al tracking 5DoF dalla session predefinita, è necessario:
- Rimuovere InertialCameraDeviceFrameSource dal gruppo di frame source della session.
- Modificare MegaGoTrackerFrameFilter.MinInputFrameLevel in SixDof (anche senza modifiche, poiché non esiste alcuna frame source 5DoF, il 5DoF non verrà comunque usato).
Quando non è disponibile nessuna frame source che soddisfa le condizioni, l'assemblaggio della session fallisce.
Comprendere lo stato attuale del sistema
Con la configurazione predefinita della session, i messaggi UI vengono mostrati sullo schermo e includono informazioni sullo stato di Mega Go.
Lo stato del tracker viene mostrato accanto a Mega Go: , ad esempio Tracking o VerifyingTrial. Durante il rilevamento e il tracking vengono inoltre mostrate sotto le informazioni di localizzazione aggiornate.
![]()
Lo stato di tracking del block attualmente caricato viene mostrato sotto Mega Go: nel formato Block (<trackingStatus>): <name> (<id>). <name> è il nome del block e <id> è l'ID del block. trackingStatus può essere Tracking o NotTracking, e indica rispettivamente se il block corrente è in tracking.

La proprietà MegaGoTrackerFrameFilter.Status può essere usata per ottenere lo stato corrente e capire il funzionamento del tracker. Quando compare uno stato di errore, è possibile ottenere lo stato di errore tramite MegaGoTrackerFrameFilter.Error e gestirlo di conseguenza.
Il codice seguente mostra come usare queste proprietà e come gestire gli stati anomali comuni che richiedono attenzione da parte dell'applicazione:
void HandleTrackerStatus()
{
if (tracker.Status == MegaGoTrackerStatus.Error)
{
if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
{
// la verifica locale non e riuscita; si consiglia di controllare se data e scaduto o non valido (i dati di test diventano non validi dopo la conversione dalla versione di test a quella ufficiale).
}
else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
{
// la verifica locale non e riuscita; si consiglia di controllare se il file target e completo.
}
else
{
// altri errori.
}
}
else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
{
// verifica del target di prova in corso. Se la verifica richiede troppo tempo, si consiglia di controllare la connessione di rete.
}
else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
{
// input VIO in inizializzazione. Se l inizializzazione richiede troppo tempo, si consiglia di suggerire all utente di ottimizzare il modo d uso.
// ad esempio: "prova a orientare la fotocamera in diagonale in avanti e a muovere ampiamente il dispositivo a sinistra e a destra 5 volte."
}
}
Usa l'evento MegaGoTrackerFrameFilter.LocalizationRespond per ottenere gli aggiornamenti di localizzazione.
Mettere in pausa e riprendere
Imposta MegaGoTrackerFrameFilter.enabled su false per mettere in pausa il tracking.
Per impostazione predefinita, dopo la pausa del tracking, tutti i contenuti sotto i nodi block verranno nascosti.
Argomenti correlati
- Best practice per AR Session per Mega Go spiega come creare e configurare una AR Session adatta a Mega Go
- Aggiungere target di tracking Mega Go spiega come aggiungere block target di tracking Mega Go e come caricare modelli block in Unity Editor per aiutare lo sviluppo
- Aggiungere un gruppo di frame source spiega come modificare il gruppo di frame source della session
- Ottenere il risultato di esecuzione della session spiega come ottenere il risultato di tracking del componente session
- Messaggi UI spiega come usare i messaggi UI per mostrare lo stato della session