Risoluzione dei problemi di rilevamento oggetti
Questo articolo presuppone che sia già stato convertito un modello 3D in un modello di rilevamento di Ancoraggi oggetti di Azure e che il modello sia stato caricato correttamente in un'applicazione.
Passaggi per la risoluzione dei problemi
- Assicurarsi che il modello rilevato si trovi all'interno delle dimensioni supportate (da 1 a 10 metri) per un'esperienza ottimale.
- Assicurarsi che la stanza abbia trame sufficienti aggiungendo alcuni poster.
- Rimuovere gli ologrammi correnti per reimpostare la mappa come descritto di seguito.
- Analizza l'oggetto più completamente.
- Specificare un rettangolo di selezione stretto come area di ricerca che include tutto o la maggior parte dell'oggetto.
- Cancellare la cache del mapping spaziale e rianalizzare l'oggetto.
- Verificare che la direzione di gravità e la dimensione dell'asset siano state usate durante la conversione del modello, come descritto di seguito.
- Esaminare visivamente il modello di rilevamento come descritto di seguito.
- Modificare i valori di query del modello come descritto di seguito.
- Acquisire la diagnostica come descritto di seguito.
Rimuovere gli ologrammi per reimpostare la mappa
Se vengono rilevati oggetti con uno dei problemi seguenti, la rimozione e la reimpostazione della mappa possono risolvere il problema:
- Orientamento invertito
- Posizione errata
- Modello inclinato
Per rimuovere gli ologrammi e reimpostare la mappa, aprire l'app Impostazioni e passare a System ->Ologrammi. Selezionare quindi Rimuovi tutti gli ologrammi per iniziare con una nuova mappa.
La cancellazione degli ologrammi garantisce che gli oggetti possano essere rilevati correttamente nelle posizioni correnti nel caso in cui siano stati spostati di recente.
Ripetere l'analisi dell'ambiente camminando nell'ambiente indossando HoloLens. Cammina intorno a tutti gli oggetti che intendi rilevare alcune volte da 1 a 2 metri.
Verificare che la direzione della gravità e l'unità dimensione asset siano corrette
Quando si invia un modello 3D per la conversione usando Object Anchors Conversion SDK (vedere qui), è necessario immettere la direzione corretta della gravità () e l'unità di misura (Gravity
AssetDimensionUnit
) per il modello 3D. Se questi valori non sono corretti, è improbabile che gli ancoraggi oggetti rilevino correttamente l'oggetto.
La direzione della gravità è il vettore giù che punta alla terra. Per i modelli CAD, la direzione della gravità è in genere l'opposto di una direzione in su. Ad esempio, in molti casi +Z rappresenta fino, nel qual caso -Z o Vector3(0.0, 0.0, -1.0)
rappresenterebbe la direzione della gravità. Quando si determina la gravità, è necessario considerare anche l'orientamento in cui verrà visualizzato il modello in fase di esecuzione. Se stai cercando di rilevare una sedia nel mondo reale su una superficie piatta, la gravità potrebbe essere Vector3(0.0, 0.0, -1.0)
. Tuttavia, se la sedia si trova su una pendenza di 45 gradi, la gravità potrebbe essere Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)
.
La direzione della gravità può essere determinata con uno strumento di rendering 3D, ad esempio MeshLab.
L'unità di misura rappresenta la scala del modello. Le unità supportate sono disponibili usando l'enumerazione Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit .
È anche possibile seguire le istruzioni riportate qui per visualizzare un modello di rilevamento in Unity per controllare visivamente la direzione della gravità e l'aspetto corretto della scala.
Esaminare visivamente la mesh del modello di rilevamento
A volte può essere utile esaminare visivamente la mesh del modello di rilevamento in modo che sia possibile visualizzare qualsiasi orientamento, scala o problemi di funzionalità. Seguire le istruzioni riportate qui per visualizzare un modello convertito in Unity.
Regolare i valori delle query degli oggetti
- Fornire aree di ricerca strette per coprire idealmente l'oggetto completo per migliorare la velocità e l'accuratezza del rilevamento.
- Il valore predefinito
ObjectQuery.MinSurfaceCoverage
è spesso sufficiente, ma è possibile usare un valore più piccolo per ottenere un rilevamento più rapido. - Usare un valore ridotto per
ObjectQuery.ExpectedMaxVerticalOrientationInDegrees
se si prevede che l'oggetto sia verso destra. - Un'app deve usare sempre un
1:1
modello a oggetti per il rilevamento. La scala stimata dovrebbe essere vicina a 1 idealmente entro l'errore 1%. Un'app può impostareObjectQuery.MaxScaleChange
0
su o0.1
per disabilitare o abilitare la stima della scalabilità e valutare qualitativamente la posizione dell'istanza. - Per altre informazioni, vedere Come rilevare un oggetto difficile.
Acquisire la diagnostica
L'applicazione può acquisire e salvare gli archivi di diagnostica usando l'oggetto ObjectDiagnosticsSession .
L'app di esempio Unity con MRTK scrive la diagnostica nella cartella TempState . Per avviare una sessione di diagnostica, aprire il menu a mano, selezionare Avvia traccia, riprodurre un tentativo di rilevamento e quindi selezionare Arresta traccia per salvare l'archivio di diagnostica. È quindi possibile usare Windows Device Portal per recuperare l'archivio di diagnostica dalla cartella TempState dell'app.
L'archivio di diagnostica può quindi essere condiviso con microsoft in modo che sia possibile eseguire il debug del problema.
Passaggi successivi
In questa guida alla risoluzione dei problemi si è appreso come risolvere i problemi di rilevamento di un oggetto fisico usando Ancoraggi oggetti di Azure. Ecco alcuni articoli correlati: