Table of Contents

Controllo del processo di tracciamento Mega

Questo documento spiega come controllare varie funzionalità e parametri del processo di tracciamento Mega per soddisfare le esigenze di diversi scenari applicativi.

Prima di iniziare

Regolazione del livello di supporto del dispositivo

La proprietà MegaTrackerFrameFilter.MinInputFrameLevel di MegaTrackerFrameFilter viene utilizzata per specificare il livello minimo del dispositivo supportato da Mega.

alt text

Mega può funzionare su quasi tutti i tipi di sorgenti di frame, ma sorgenti diverse hanno un impatto diverso sull'efficacia del tracciamento.

Per impostazione predefinita, Mega seleziona la sorgente di frame di livello più alto supportata dal dispositivo per il tracciamento. La session preconfigurata per Mega è già configurata con sorgenti di frame che supportano 6DoF e 5DoF.

Per supportare una sorgente di frame di un certo livello durante l'esecuzione di Mega, devono essere soddisfatte due condizioni:

Ad esempio, per supportare il tracciamento 3DoF nella session predefinita, è necessario:

Un altro esempio, per rimuovere il supporto al tracciamento 5DoF nella session predefinita, è necessario:

Se non è disponibile alcuna sorgente di frame che soddisfi le condizioni, l'assemblaggio della session fallirà.

Gestione degli obiettivi di tracciamento

Quando si utilizza Mega, è necessario specificare il target, ovvero il block, utilizzato da MegaTrackerFrameFilter.

Controllo dell'origine del block

Nella maggior parte dei casi, si consiglia di mantenere la configurazione predefinita, ovvero importare i block utilizzando Mega Studio nell'editor.

Seleziona l'oggetto Mega Tracker sotto la session, l'opzione Block Root Source dovrebbe rimanere su External (predefinita).

alt text

Inoltre, è necessario specificare Block Root come l'oggetto MegaBlocks nella scena.

alt text

Modificando l'opzione Block Root Source è possibile specificare altri metodi di origine del block. Ad esempio, quando si importano dati utilizzando ema, si seleziona solitamente l'opzione Internal o Mixed.

Nello script, è possibile modificare BlockHolder.BlockRootSource per ottenere lo stesso risultato.

Controllo del tracciamento multi-target

Nella maggior parte degli scenari di utilizzo di Mega, non è necessario utilizzare più target. Prima di padroneggiare come evitare che più block si influenzino a vicenda, si consiglia di inserire un solo block in una libreria di localizzazione.

Consiglio

In linea di principio, Mega calcola la posizione del dispositivo in tutti i block, anziché selezionare il block visto dal dispositivo dalla libreria di localizzazione. Un utilizzo non ponderato potrebbe degradare le prestazioni a causa di confusione dei dati, ecc.

Seleziona l'oggetto Mega Tracker sotto la session, modifica l'opzione Multi Block per abilitare o disabilitare la funzionalità di tracciamento multi-block.

alt text

Nello script, è possibile modificare BlockHolder.MultiBlock per ottenere lo stesso risultato.

Avvertenza

Generalmente, una libreria di localizzazione può contenere solo un block alla volta.

La modifica della configurazione multi-block influisce sull'efficacia del tracciamento e generalmente non è consigliata. Utilizzala solo sotto la guida del supporto tecnico EasyAR.

Se questa configurazione è stata modificata durante l'esecuzione dell'applicazione, assicurati di segnalarlo quando presenti un problema a EasyAR.

Comprendere lo stato corrente del sistema

Nella configurazione predefinita della session, i messaggi UI vengono visualizzati sullo schermo, inclusi informazioni sullo stato di tracciamento di Mega.

Quando la localizzazione ha successo, sotto Mega Block verrà incluso il testo di stato Found insieme al nome e all'ID del block corrente:

alt text

Quando la localizzazione fallisce, sotto Mega Block verrà incluso il testo di stato NotFound:

alt text

Consiglio

NotFound è uno stato normale che si verifica frequentemente durante il funzionamento di Mega. Quando appare, il tracciamento continua. Generalmente, nello sviluppo dell'applicazione non è necessario gestire in modo speciale lo stato NotFound.

Utilizzando l'evento MegaTrackerFrameFilter.LocalizationRespond è possibile ottenere lo stato corrente della localizzazione, comprendendo così se il sistema ha trovato l'obiettivo di tracciamento.

Il seguente codice mostra come utilizzare questo evento e i metodi comuni per gestire gli stati anomali a cui l'applicazione deve prestare attenzione:

private void Awake()
{
    megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
        
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
    var status = response.Status;
    wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
    if (wakingUpCount >= 5)
    {
        // Il servizio si sta svegliando, l'utente finale deve attendere
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // Limite QPS superato, alcuni utenti finali potrebbero fallire la localizzazione (qualità complessiva del tracciamento ridotta)
        // Generalmente è necessario pagare per aumentare il limite QPS e garantire la qualità del tracciamento con il volume utente corrente
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token scaduto, si verifica solo quando si utilizza l'interfaccia Token per accedere al servizio
        // Per risolvere, l'app deve richiedere un Token al proprio backend e chiamare MegaTrackerFrameFilter.UpdateToken per aggiornarlo
    }
}

Se l'applicazione incontra frequentemente lo stato MegaTrackerLocalizationStatus.RequestTimeout, ciò indica generalmente che le condizioni di rete del dispositivo per connettersi al servizio sono scarse. Si consiglia di ottimizzare l'ambiente di rete per migliorare la qualità del tracciamento. In scenari in cui le condizioni di rete non possono essere migliorate, si può considerare di aumentare il timeout della richiesta.

Nota

Non è possibile ottenere la pose restituita dalla localizzazione tramite questo evento.

In effetti, la pose restituita dalla localizzazione non è necessaria nello sviluppo dell'applicazione. EasyAR, dopo il ritorno della localizzazione, calcola una pose più accurata tramite algoritmi locali e la restituisce per l'uso da parte degli sviluppatori. Questa pose è già riflessa nella transform del block. Si può fare riferimento a Ottenere il risultato dell'esecuzione della session.

Pausa e ripresa

Le funzionalità di tracciamento e localizzazione di Mega possono essere messe in pausa e riprese separatamente.

Metti in pausa il tracciamento

Impostare MegaTrackerFrameFilter.enabled su false mette in pausa il tracciamento.

Per impostazione predefinita, dopo la pausa del tracciamento, tutti i contenuti sotto i nodi block verranno nascosti.

Metti in pausa la localizzazione

Impostare MegaTrackerFrameFilter.EnableLocalization su false mette in pausa la localizzazione.

Avvertenza

La pausa della localizzazione influisce sull'efficacia del tracciamento e generalmente non è consigliata. Utilizzala solo sotto la guida del supporto tecnico EasyAR.

Se la localizzazione è stata messa in pausa durante l'esecuzione dell'applicazione, assicurati di segnalarlo quando presenti un problema a EasyAR.

Controllo del servizio e delle richieste

È possibile controllare il comportamento delle richieste al servizio modificando i parametri del componente MegaTrackerFrameFilter.

Intervallo e timeout delle richieste

Seleziona l'oggetto Mega Tracker sotto la session, modifica le opzioni sotto Request Time Parameters per regolare l'intervallo di tempo tra le richieste al servizio e il tempo di attesa.

alt text

Nello script, è possibile modificare MegaTrackerFrameFilter.RequestTimeParameters per ottenere lo stesso risultato.

Avvertenza

La modifica dell'intervallo delle richieste influisce sull'efficacia del tracciamento e generalmente non è consigliata. Utilizzala solo sotto la guida del supporto tecnico EasyAR.

Se l'intervallo delle richieste è stato modificato durante l'esecuzione dell'applicazione, assicurati di segnalarlo quando presenti un problema a EasyAR.

Cambiare libreria di localizzazione

Utilizzando MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) è possibile cambiare la libreria di localizzazione durante l'esecuzione. Quando si utilizza questa interfaccia, il flusso video della fotocamera e la session non vengono interrotti.

Argomenti correlati