Jak wykryć trudny obiekt

Czasami obiekt może okazać się trudniejszy do wykrycia. Przykład:

  • Gdy duży obszar powierzchni nie jest dostępny, ponieważ obiekt znajduje się na ścianie
  • Gdy obiekt jest zbyt duży i trwa zbyt długo, aby go obejść
  • Gdy powierzchnia obiektu nie jest wykrywana przez czujniki urządzenia

Dostosowywanie wartości zapytania obiektu

Niektóre mechanizmy oferowane przez zestaw SDK usługi Azure Object Anchors, które mogą pomóc w takich sytuacjach, to:

  • Właściwość ObjectQuery.MinSurfaceCoverage . Reprezentuje minimalny wymagany współczynnik pokrycia powierzchni, aby rozważyć wystąpienie obiektu jako prawdziwie dodatnie. Umożliwia ona zakres od 0 do 1,0 (reprezentujący od 0% do 100%). Ustawienie domyślne różni się między obiektami (tym większy obszar powierzchni, tym mniejsze będzie minimalne wymagane pokrycie). Będzie działać w większości sytuacji, tak jak jest. Jednak w obliczu trudnych obiektów zaleca się obniżenie wartości tej właściwości, aby mniej pokrycia powierzchni było wymagane do wykrycia obiektu.

  • Właściwość ObjectQuery.MaxScaleChange . Jeśli oryginalny model nie ma 1:1 skali w kierunku wykrytego obiektu, to ustawienie można dostosować. Umożliwia ona zakres od 0 do 1,0 (reprezentujący od 0% do 100%). Ustawienie domyślne o wartości 0 wyłącza szacowanie skali, co wymaga 1:1 mapowania skali. Ustawienie tej właściwości na wartość 10%, na przykład spowoduje włączenie szacowania skali i umożliwienie pewnej elastyczności w przypadkach, gdy skala modelu nie ma 1:1 dopasowania względem obiektu.

  • Właściwość ObjectQuery.ExpectedMaxVerticalOrientationInDegrees . Reprezentuje maksymalny kąt w stopniach między kierunkiem w górę obiektu a grawitacją. Waha się od 0 do 180. Innymi słowy, reprezentuje skłonność obiektu względem oryginalnego modelu. Ustawienie domyślne, o 3 stopnie, można zwiększyć, aby zapewnić większą elastyczność w przypadkach, gdy skłonność obiektu nie jest zgodna z oryginalnym modelem.

  • Właściwość ObjectQuery.IsExpectedToBeStandingOnGroundPlane . Jest to wartość logiczna reprezentująca, czy obiekt ma stać na poziomie gruntu, czy nie. Wartość domyślna to false. Można go przełączyć na wartość true, aby przyspieszyć wykrywanie w przypadkach, w których obiekt znajduje się na poziomie gruntu.

  • Właściwość ObjectQuery.SearchAreas . Reprezentuje kolekcję regionów do wyszukiwania obiektów. Zapewnienie ciasnych obszarów wyszukiwania, przy jednoczesnym zachowaniu całego lub większości obiektu, zwiększa szybkość i dokładność wykrywania. Możesz wybrać:

    • Ramka ograniczenia zorientowana przy użyciu polecenia ObjectSearchArea.FromOriented.
    • Pole widoku przy użyciu polecenia ObjectSearchArea.FromFieldOfView.
    • Lokalizacja przy użyciu polecenia ObjectSearchArea.FromLocation.
    • Sfera, przy użyciu polecenia ObjectSearchArea.FromSphere.

Aby uzyskać więcej informacji, zobacz klasę ObjectQuery Unitylub HoloLens C++/WinRT.

Następne kroki

W tym przewodniku rozwiązywania problemów przedstawiono sposób rozwiązywania problemów z wykrywaniem trudnych do wykrycia obiektów. Oto kilka powiązanych artykułów: