Table of Contents

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

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.
  • 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.

alt text

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:

Per esempio, per supportare il tracking 3DoF nella session predefinita, è necessario:

Per un altro esempio, per rimuovere il supporto al tracking 5DoF dalla session predefinita, è necessario:

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.

alt text

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.

alt text

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