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.
![]()
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:
- La sorgente di frame richiesta deve essere nel gruppo di sorgenti di frame opzionali della session.
- MegaTrackerFrameFilter.MinInputFrameLevel deve essere 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 esiste una sorgente di frame 5DoF, il 5DoF non verrà utilizzato).
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).
![]()
Inoltre, è 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, 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.
![]()
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:
![]()
Quando la localizzazione fallisce, sotto Mega Block verrà incluso il testo di stato NotFound:
![]()
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.
![]()
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
- Migliori pratiche per AR Session con Mega spiega come creare e configurare una AR Session adatta a Mega
- Aggiungere un obiettivo di tracciamento Mega spiega come aggiungere un block target di Mega e come caricare modelli 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 il risultato dell'esecuzione della session spiega come ottenere i risultati di tracciamento dai componenti della session
- Messaggi UI spiega come utilizzare i messaggi UI per visualizzare lo stato della session