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ść na 0 lub 0.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: