Table of Contents

Diagnosi e riparazione: il problema del contenuto non visualizzato nell'applicazione

"Posso vedere il mondo reale, ma il contenuto virtuale non appare." Questo è uno dei problemi più comuni nello sviluppo AR. Il problema può originare da molteplici fasi, dal posizionamento Mega stesso alla logica di rendering.

Questa guida vi condurrà attraverso un processo sistematico per identificare e risolvere questo problema.

Processo di risoluzione dei problemi: dall'esterno verso l'interno

Seguendo il principio "prima l'esterno, poi l'interno", è possibile individuare il problema in modo efficiente. Eseguite i seguenti passaggi in ordine:

Step uno: verifica dello stato del posizionamento Mega utilizzando strumenti esterni (nessuna modifica al codice richiesta)

Prima di approfondire il codice della vostra applicazione, confermate che il servizio di posizionamento Mega stesso funzioni correttamente. Questo è il passo più critico, poiché vi aiuta a determinare se il problema risiede nel posizionamento Mega stesso o nell'integrazione dello sviluppo dell'applicazione, come il rendering.

  1. Utilizza Mega Toolbox (lato mobile)

    • Installate l'App Mega Toolbox sul vostro telefono di test (se non già installata).
    • Aprite l'app e accedete allo strumento Verifica e diagnostica in loco.
    • Accedete con il vostro account e selezionate la stessa libreria di posizionamento utilizzata dalla vostra app.
    • Portate il telefono nella stessa posizione in cui la vostra app non visualizzava il contenuto durante il test.
    • Osserva il risultato:
      • Se Toolbox si posiziona con successo (lo stato sull'interfaccia mostra Found): Congratulazioni! Il servizio di posizionamento Mega funziona normalmente. Il problema è interno alla vostra applicazione, in particolare nella logica di rendering e visualizzazione del contenuto. Passate allo Step due.
      • Se Toolbox non riesce a posizionarsi (lo stato sull'interfaccia mostra NotFound o altro): Il problema risiede nel servizio di posizionamento stesso. Fate riferimento alla sezione successiva per un'analisi approfondita.
  2. Utilizza la simulazione su PC (se sono stati acquisiti dati EIF)

    • Se avete registrato dati EIF per questa scena, potete riprodurli nell'editor Unity su PC utilizzando lo strumento di verifica session.
    • Osserva il risultato:
      • Se il posizionamento riesce durante la riproduzione (lo stato sull'interfaccia mostra Found): Il problema è nel codice della vostra applicazione o in un ambiente specifico del dispositivo.
      • Se il posizionamento fallisce durante la riproduzione (lo stato sull'interfaccia mostra NotFound o altro): Il problema risiede nel servizio di posizionamento stesso. Fate riferimento alla sezione successiva per un'analisi approfondita.

Step due: controlla la logica di rendering e contenuto all'interno dell'app

Se il primo step conferma che il servizio di posizionamento Mega stesso funziona, allora il problema risiede nel codice della vostra applicazione. Controllate i seguenti punti:

  1. Il contenuto è posizionato sotto il nodo corretto?:

    • Avete posizionato correttamente gli oggetti 3D sotto i nodi MegaBlocks > Block_* generati automaticamente dallo strumento?
    • Verificate la relazione gerarchica tra il contenuto e i nodi Block per assicurarvi che la posizione di rendering del contenuto virtuale sia corretta durante l'esecuzione.
  2. Il Block Root di MegaTracker è impostato correttamente?:

    • Espandete AR Session, controllate che il Block Root in Mega Tracker sia il nodo MegaBlocks generato dallo strumento.
  3. Il nodo MegaBlocks è stato modificato?:

    • Assicuratevi di non aver modificato i nomi dei nodi Block_* e di non aver alterato alcun valore nelle proprietà local transform.
  4. L'ascolto degli eventi è corretto?:

    • Avete modificato la logica di gestione delle callback di posizionamento di MegaTracker?
    • Il vostro codice esegue l'istanziazione o la visualizzazione del contenuto virtuale solo dopo che l'evento di stato di posizionamento riuscito è stato attivato?
  5. Rendering del visore e trasparenza:

    • Il vostro oggetto virtuale è oscurato da altri oggetti? Controllate la coda di rendering e lo Shader.
    • Se utilizzate un dispositivo VST (video see-through), verificate che il vostro rendering venga sovrapposto correttamente al flusso video.
    • Se utilizzate un dispositivo OST (optical see-through), verificate che il contenuto non sia difficile da vedere a causa di una luce ambientale troppo intensa.
  6. Problemi con il contenuto stesso:

    • Il prefab che istanziavate ha problemi? Ad esempio, file modello mancanti, errori dello Shader, scala a zero, ecc. Provate a posizionare manualmente lo stesso oggetto nella scena per vedere se viene visualizzato correttamente.

Analisi delle cause comuni di fallimento del posizionamento e suggerimenti per il miglioramento

Se durante lo Step uno avete scoperto che anche Mega Toolbox non riesce a posizionarsi, è necessario esaminare e risolvere attentamente il problema di posizionamento. Ecco le cause comuni e le contromisure:

  • Causa uno: mappa e ambiente non corrispondono
    L'ambiente fisico è cambiato significativamente rispetto a quando è stata acquisita la mappa, oppure l'area di esperienza non era coperta durante l'acquisizione, o la mappa stessa è errata.
    Suggerimenti per il miglioramento:

    • Assicuratevi che la mappa caricata nella vostra libreria di posizionamento corrisponda alla scena dello spazio fisico attuale.
    • Se l'ambiente è stato modificato (ad es. ristrutturazione, cambio di arredi), è necessario riacquisire e rigenerare la mappa.
    • Se l'area problematica non era coperta durante l'acquisizione della mappa, è necessario rigenerare la mappa attraverso un aggiornamento supplementare.
  • Causa due: ambiente di inizializzazione sfavorevole
    Avvio dell'applicazione in un'area con texture scarse (come pareti monocromatiche, puntando verso il pavimento).
    Suggerimenti per il miglioramento:

    • Guidate gli utenti ad avviare l'applicazione in aree ricche di texture per aiutare il sistema a completare rapidamente il posizionamento iniziale.
    • Fornite indicazioni chiare nell'interfaccia utente dell'app, come "Alza il telefono e guardati intorno".
  • Causa tre: problemi di rete o del servizio
    Ritardi di rete che causano timeout delle richieste al servizio di posizionamento, oppure il servizio di posizionamento stesso presenta malfunzionamenti, o ha superato il limite di utilizzo concorrente, ecc. Per quest'ultimo caso, contattateci tempestivamente.

  • Causa quattro: raggiungimento del limite delle capacità dell'algoritmo
    Il posizionamento Mega si basa su algoritmi avanzati di visione artificiale, AI, ecc., ma non è onnipotente e ha dei limiti intrinseci. Quando si verifica un fallimento persistente del posizionamento in determinate scene o punti, potete fornirci un feedback tramite registrazione dello schermo, acquisizione di dati EIF, ecc., per aiutarci a migliorare e iterare continuamente l'algoritmo.

Inoltre, è importante specificare che il posizionamento Mega richiede un processo, tipicamente di circa 1-2 secondi. Considerando la complessità degli scenari reali come congestione di rete, alta concorrenza, surriscaldamento e riduzione della frequenza del telefono, questo tempo potrebbe essere più lungo. Pertanto, nell'applicazione è possibile progettare un'interfaccia di caricamento/attesa chiara, informando l'utente "Posizionamento in corso...", per evitare che l'utente interpreti l'attesa come un servizio non funzionante o un posizionamento impossibile.

Nota
  • Il posizionamento iniziale è solitamente più lento di quelli successivi, perché il sistema deve caricare il contenuto corrispondente dopo il primo successo. Questo è normale.
    • Spostare rapidamente il dispositivo può causare la perdita del posizionamento. Guidate gli utenti a muovere il dispositivo in modo stabile.

Riepilogo e best practice

  • **Util