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.
![]()
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:
- La sorgente di frame richiesta è nel gruppo di sorgenti di frame opzionali della session.
- MegaTrackerFrameFilter.MinInputFrameLevel è maggiore o uguale al livello CameraTransformType della sorgente di frame richiesta.
Ad esempio, per supportare il tracciamento 3DoF nella session predefinita, è necessario:
- Aggiungere ThreeDofCameraDeviceFrameSource al gruppo di sorgenti di frame della session.
- Modificare MegaTrackerFrameFilter.MinInputFrameLevel in ThreeDof.
Un altro esempio, per rimuovere il supporto al tracciamento 5DoF nella session predefinita, è necessario:
- Rimuovere InertialCameraDeviceFrameSource dal gruppo di sorgenti di frame della session.
- Modificare MegaTrackerFrameFilter.MinInputFrameLevel in SixDof (anche senza modifica, poiché non c'è una sorgente di frame 5DoF, il 5DoF non verrà utilizzato).
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).
![]()
Allo stesso tempo, è necessario specificare Block Root come l'oggetto MegaBlocks nella scena.
![]()
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.
![]()
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:
![]()
Quando la localizzazione fallisce, sotto Mega Block verrà visualizzato il testo di stato NotFound:
![]()
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.
![]()
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
- Migliori pratiche per AR Session con Mega spiega come creare e configurare una AR Session adatta a Mega
- Aggiungere obiettivi di tracciamento Mega spiega come aggiungere block come obiettivi di tracciamento Mega e come caricare modelli di block nell'editor Unity per supportare lo sviluppo
- Aggiungere un gruppo di sorgenti di frame spiega come modificare il gruppo di sorgenti di frame della session
- Ottenere i risultati di esecuzione della session spiega come ottenere i risultati di tracciamento dei componenti della session
- Messaggi UI spiega come utilizzare i messaggi UI per visualizzare lo stato della session