Rozwiązywanie problemów z wykrywaniem obiektów
W tym artykule założono, że model 3D został już przekonwertowany na model wykrywania usługi Azure Object Anchors i pomyślnie załadowano go do aplikacji.
Kroki rozwiązywania problemów
- Upewnij się, że wykrywany model mieści się w obsługiwanym rozmiarze (od 1 do 10 metrów), aby zapewnić najlepsze środowisko.
- Upewnij się, że pomieszczenie ma wystarczającą ilość tekstur, dodając kilka plakatów.
- Usuń bieżące hologramy, aby zresetować mapę zgodnie z poniższym opisem.
- Skanuj obiekt bardziej całkowicie.
- Podaj ciasne pole ograniczenia jako obszar wyszukiwania, który zawiera wszystkie lub większość obiektu.
- Wyczyść pamięć podręczną mapowania przestrzennego i ponownie przeskanuj obiekt.
- Upewnij się, że podczas konwersji modelu użyto prawidłowego kierunku grawitacji i wymiaru zasobu, jak opisano poniżej.
- Wizualnie sprawdź model wykrywania zgodnie z poniższym opisem.
- Dostosuj wartości zapytania modelu zgodnie z poniższym opisem.
- Przechwyć diagnostykę zgodnie z poniższym opisem.
Usuwanie hologramów w celu zresetowania mapy
Jeśli widzisz wykryte obiekty z dowolnym z następujących problemów, usunięcie i zresetowanie mapy może rozwiązać problem:
- Odwrócona orientacja
- Niepoprawna pozycja
- Model pochylony
Aby usunąć hologramy i zresetować mapę, otwórz aplikację Ustawienia i przejdź do pozycji System ->Hologramy. Następnie wybierz pozycję Usuń wszystkie hologramy , aby rozpocząć od nowej mapy.
Wyczyszczenie hologramów gwarantuje, że obiekty mogą być prawidłowo wykrywane w bieżących pozycjach na wypadek, gdyby zostały ostatnio przeniesione.
Przeskanuj ponownie środowisko, przechodząc w środowisku na urządzeniu HoloLens. Spacer po wszystkich obiektach, które zamierzasz wykryć kilka razy od 1 do 2 metrów.
Upewnij się, że kierunek grawitacji i jednostka wymiaru zasobu są poprawne
Podczas przesyłania modelu 3D do konwersji przy użyciu zestawu SDK konwersji zakotwiczeń obiektów (zobacz tutaj), należy wprowadzić prawidłowy kierunek grawitacji (Gravity
) i jednostkę miary (AssetDimensionUnit
) dla modelu 3D. Jeśli te wartości nie są poprawne, kotwice obiektów jest mało prawdopodobne, aby poprawnie wykryć obiekt.
Kierunek grawitacji jest wektorem w dół wskazującym ziemię. W przypadku modeli CAD kierunek grawitacji jest zazwyczaj przeciwieństwem kierunku w górę. Na przykład w wielu przypadkach +Z reprezentuje wartość w górę, w takim przypadku wartość -Z lub Vector3(0.0, 0.0, -1.0)
reprezentuje kierunek grawitacji. Podczas określania grawitacji należy również wziąć pod uwagę orientację, w której model będzie widoczny podczas wykonywania. Jeśli próbujesz wykryć krzesło w świecie rzeczywistym na płaskiej powierzchni, grawitacja może mieć wartość Vector3(0.0, 0.0, -1.0)
. Jeśli jednak krzesło znajduje się na 45-stopniowym nachyleniu, grawitacja może wynosić Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)
.
Kierunek grawitacji można określić za pomocą narzędzia renderowania 3D, takiego jak MeshLab.
Jednostka miary reprezentuje skalę modelu. Obsługiwane jednostki można znaleźć przy użyciu wyliczenia Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit .
Możesz również postępować zgodnie z instrukcjami w tym miejscu , aby wizualizować model wykrywania w a środowisku Unity, aby wizualnie sprawdzić kierunek grawitacji i poprawić wygląd skali.
Wizualnie sprawdź siatkę modelu wykrywania
Czasami warto wizualnie sprawdzić siatkę modelu wykrywania, aby zobaczyć wszelkie problemy z orientacją, skalowaniem lub funkcjami. Postępuj zgodnie z instrukcjami podanymi tutaj , aby zwizualizować przekonwertowany model w aucie Unity.
Dostosowywanie wartości zapytania obiektu
- Zapewnij ciasne obszary wyszukiwania, aby najlepiej pokryć pełny obiekt w celu zwiększenia szybkości i dokładności wykrywania.
- Wartość domyślna
ObjectQuery.MinSurfaceCoverage
jest często wystarczająca, ale można użyć mniejszej wartości w celu szybszego wykrywania. - Użyj małej wartości,
ObjectQuery.ExpectedMaxVerticalOrientationInDegrees
jeśli obiekt ma być w górę w prawo. - Aplikacja powinna zawsze używać
1:1
modelu obiektów do wykrywania. Szacowana skala powinna być zbliżona do 1 idealnie w ramach błędu 1%. Aplikacja może ustawićObjectQuery.MaxScaleChange
wartość na0
lub0.1
wyłączyć lub włączyć szacowanie skali, a jakościowo ocenić pozowanie wystąpienia. - Aby uzyskać więcej informacji, zobacz Jak wykryć trudny obiekt.
Przechwytywanie danych diagnostycznych
Aplikacja może przechwytywać i zapisywać archiwa diagnostyczne przy użyciu obiektu ObjectDiagnosticsSession .
Przykładowa aplikacja aparatu Unity z zestawem narzędzi MRTK zapisuje diagnostykę w folderze TempState . Sesję diagnosyczną można uruchomić, otwierając menu strony, wybierając pozycję Rozpocznij śledzenie, odtwarzając próbę wykrywania, a następnie wybierając pozycję Zatrzymaj śledzenie , aby zapisać archiwum diagnostyczne. Następnie możesz użyć portalu urządzeń z systemem Windows, aby pobrać archiwum diagnostyczne z folderu TempState aplikacji.
Archiwum diagnostyki można następnie udostępnić nam, aby pomóc w debugowanie problemu.
Następne kroki
W tym przewodniku rozwiązywania problemów przedstawiono sposób rozwiązywania problemów z wykrywaniem obiektu fizycznego przy użyciu usługi Azure Object Anchors. Oto kilka powiązanych artykułów: