Problemen met objectdetectie oplossen
In dit artikel wordt ervan uitgegaan dat u al een 3D-model hebt geconverteerd naar een Detectiemodel van Azure Object Anchors en het model in een toepassing hebt geladen.
Stappen voor probleemoplossing
- Zorg ervoor dat het model dat u detecteert binnen de ondersteunde grootte (1-10 meter) valt voor de beste ervaring.
- Zorg ervoor dat de ruimte voldoende patronen heeft door een paar posters toe te voegen.
- Verwijder huidige hologrammen om de kaart opnieuw in te stellen, zoals hieronder wordt beschreven.
- Scan het object volledig.
- Geef een strak begrenzingsvak op als zoekgebied dat alle of het grootste deel van het object bevat.
- Wis de cache voor ruimtelijke toewijzing en scan het object opnieuw.
- Zorg ervoor dat de juiste zwaartekrachtrichting en assetdimensie zijn gebruikt tijdens de modelconversie, zoals hieronder wordt beschreven.
- Inspecteer het detectiemodel visueel zoals hieronder wordt beschreven.
- Pas de modelquerywaarden aan zoals hieronder wordt beschreven.
- Leg diagnostische gegevens vast zoals hieronder wordt beschreven.
Hologrammen verwijderen om de kaart opnieuw in te stellen
Als er objecten worden gedetecteerd met een van de volgende problemen, kan het probleem worden opgelost door de kaart te verwijderen en opnieuw in te stellen:
- Omgekeerde afdrukstand
- Onjuiste houding
- Kantelend model
Als u hologrammen wilt verwijderen en de kaart opnieuw wilt instellen, opent u de Instellingen-app en gaat u naar System ->Hologrammen. Selecteer vervolgens Alle hologrammen verwijderen om te beginnen met een nieuwe kaart.
Als u de hologrammen wist, kunnen objecten correct worden gedetecteerd in hun huidige posities voor het geval ze onlangs zijn verplaatst.
Scan uw omgeving opnieuw door in de omgeving te lopen met de HoloLens. Loop rond alle objecten die u een paar keer van 1-2 meter wilt detecteren.
Zorg ervoor dat de zwaartekrachtrichting en assetdimensie-eenheid juist zijn
Wanneer u een 3D-model verzendt voor conversie met behulp van de Object Anchors Conversion SDK (zie hier), moet u de juiste zwaartekrachtrichting (Gravity
) en maateenheid (AssetDimensionUnit
) invoeren voor uw 3D-model. Als deze waarden niet juist zijn, is het onwaarschijnlijk dat Object Anchors uw object correct detecteert.
De zwaartekrachtrichting is de omlaagvector die naar de aarde wijst. Voor CAD-modellen is de zwaartekrachtrichting doorgaans het tegenovergestelde van een oprichting. In veel gevallen vertegenwoordigt +Z zich bijvoorbeeld omhoog, in dat geval -Z of Vector3(0.0, 0.0, -1.0)
de zwaartekrachtrichting. Bij het bepalen van de zwaartekracht moet u ook rekening houden met de richting waarin het model tijdens runtime wordt gezien. Als u probeert een stoel in de echte wereld op een plat oppervlak te detecteren, kan de zwaartekracht zijn Vector3(0.0, 0.0, -1.0)
. Als de stoel zich echter op een helling van 45 graden bevindt, kan de zwaartekracht zijn Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)
.
De zwaartekrachtrichting kan worden bepaald met een 3D-renderingtool, zoals MeshLab.
De maateenheid vertegenwoordigt de schaal van het model. Ondersteunde eenheden vindt u met behulp van de opsomming Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit .
U kunt hier ook de instructies volgen om een detectiemodel in Unity te visualiseren om die zwaartekrachtrichting en schaal visueel te inspecteren.
De mesh van het detectiemodel visueel inspecteren
Soms kan het handig zijn om de mesh van het detectiemodel visueel te inspecteren, zodat u eventuele oriƫntatie-, schaal- of functieproblemen kunt zien. Volg de instructies hier om een geconverteerd model in Unity te visualiseren.
Objectquerywaarden aanpassen
- Zorg voor strakke zoekgebieden om het volledige object te bedekken om de detectiesnelheid en nauwkeurigheid te verbeteren.
- De standaardwaarde
ObjectQuery.MinSurfaceCoverage
is vaak voldoende, maar u kunt een kleinere waarde gebruiken om sneller te detecteren. - Gebruik een kleine waarde voor
ObjectQuery.ExpectedMaxVerticalOrientationInDegrees
als het object naar verwachting rechtsboven is. - Een app moet altijd een
1:1
objectmodel gebruiken voor detectie. De geschatte schaal moet dicht bij 1 liggen binnen 1% fout. Een app kan instellenObjectQuery.MaxScaleChange
of0
0.1
de schaalschatting uitschakelen of inschakelen en de instantiehouding kwalitatief evalueren. - Zie Een moeilijk object detecteren voor meer informatie.
Diagnostische gegevens vastleggen
De toepassing kan diagnostische archieven vastleggen en opslaan met behulp van het ObjectDiagnosticsSession-object .
De Unity-voorbeeld-app met MRTK schrijft diagnostische gegevens naar de map TempState . U kunt een diagnostische sessie starten door het handmenu te openen, Tracering starten te selecteren, een detectiepoging te reproduceren en vervolgens Tracering stoppen te selecteren om het diagnostische archief op te slaan. Vervolgens kunt u windows-apparaatportal gebruiken om het diagnostische archief op te halen uit de map TempState van de app.
Het diagnostische archief kan vervolgens met ons worden gedeeld, zodat we kunnen helpen bij het opsporen van het probleem.
Volgende stappen
In deze gids voor probleemoplossing hebt u geleerd hoe u problemen met detectie van een fysiek object kunt oplossen met behulp van Azure Object Anchors. Hier volgen enkele verwante artikelen: