Table of Contents

Controllo del processo di tracciamento Mega

Questo articolo spiega come controllare varie funzioni e parametri nel 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 diverse sorgenti di frame influenzano diversamente l'effetto di 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 il funzionamento 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:

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

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

alt text

Allo stesso tempo, è 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, solitamente si seleziona l'opzione Internal o Mixed.

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

Controllo del tracciamento multi-obiettivo

Nella maggior parte degli scenari di utilizzo di Mega, non è necessario utilizzare più obiettivi. 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 dalla libreria di localizzazione il block che il dispositivo vede. Un utilizzo non ponderato potrebbe causare un deterioramento dell'effetto a causa di confusione dei dati, ecc.

Selezionando l'oggetto Mega Tracker sotto la session, modificando l'opzione Multi Block è possibile abilitare o disabilitare la funzionalità di tracciamento multi-obiettivo.

alt text

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

Avvertenza

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

La modifica della configurazione multi-obiettivo influisce sull'effetto di tracciamento e generalmente non è consigliata. Utilizzare solo sotto la guida del supporto tecnico EasyAR.

Se questa configurazione è stata modificata durante l'esecuzione dell'applicazione, assicurarsi di segnalarlo quando si fornisce feedback a EasyAR.

Comprendere lo stato attuale del sistema

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

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

alt text

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

alt text

Consiglio

NotFound è uno stato normale che si verifica frequentemente durante l'intero processo di funzionamento di Mega. Quando appare questo stato, il tracciamento continua. Generalmente, nello sviluppo dell'applicazione non è necessario un trattamento speciale per lo stato NotFound.

Utilizzando l'evento MegaTrackerFrameFilter.LocalizationRespond è possibile ottenere lo stato di localizzazione corrente, 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, è necessario far attendere l'utente finale
    }

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

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token API scaduto, si verifica solo quando si utilizza l'interfaccia Token per accedere al servizio
        // Per risolvere questo problema, l'applicazione 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, è possibile 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, calcolerà una pose più accurata attraverso algoritmi locali e la restituirà agli sviluppatori per l'utilizzo. Questa pose è già riflessa nella transform del block, è possibile fare riferimento a ottenere i risultati di esecuzione della session.

Sospensione e ripresa

Le funzionalità di tracciamento e localizzazione di Mega possono essere sospese e riprese separatamente.

Sospensione del tracciamento

Impostare MegaTrackerFrameFilter.enabled su false sospende il tracciamento.

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

Sospensione della localizzazione

Impostare MegaTrackerFrameFilter.EnableLocalization su false sospende la localizzazione.

Avvertenza

La sospensione della localizzazione influisce sull'effetto di tracciamento e generalmente non è consigliata. Utilizzare solo sotto la guida del supporto tecnico EasyAR.

Se la localizzazione è stata sospesa durante l'esecuzione dell'applicazione, assicurarsi di segnalarlo quando si fornisce feedback 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

Selezionando l'oggetto Mega Tracker sotto la session, modificando le opzioni sotto Request Time Parameters è possibile regolare l'intervallo di tempo e il timeout per le richieste al servizio.

alt text

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

Avvertenza

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

Se l'intervallo delle richieste è stato modificato durante l'esecuzione dell'applicazione, assicurarsi di segnalarlo quando si fornisce feedback a EasyAR.

Cambiare la libreria di localizzazione

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

Argomenti correlati