Udostępnij za pośrednictwem


Obserwator zrozumienia sceny — MRTK2

Funkcja Scene Understanding zwraca semantyczną reprezentację jednostek sceny, a także ich geometryczne formy w HoloLens 2 (urządzenie HoloLens 1. generacji nie jest obsługiwane).

Oto niektóre oczekiwane przypadki użycia tej technologii:

  • Umieść obiekty na najbliższej powierzchni określonego rodzaju (np. ściana i podłoga)
  • Konstruowanie siatki nawigacji dla gier w stylu platformy
  • Zapewnianie przyjaznej geometrii silnika fizyki jako czworokąta
  • Przyspieszanie opracowywania dzięki unikaniu konieczności pisania podobnych algorytmów

Opis sceny jest wprowadzana jako funkcja eksperymentalna w zestawie narzędzi MRTK 2.6. Jest on zintegrowany z zestawem narzędzi MRTK jako obserwator przestrzenny o nazwie WindowsSceneUnderstandingObserver. Rozwiązanie Scene Understanding współdziała zarówno z potokiem starszego środowiska XR, jak i potokiem zestawu SDK XR (zarówno OpenXR (począwszy od zestawu MRTK 2.7) jak i wtyczki XR systemu Windows). W obu przypadkach używany jest element WindowsSceneUnderstandingObserver .

Uwaga

Używanie usługi Scene Understanding w komunikacji zdalniej jest obsługiwane tylko w zestawie narzędzi MRTK 2.7.3 i nowszych. Obsługiwane są tylko projekty korzystające z biblioteki OpenXR. Projekty korzystające ze starszego potoku XR lub wtyczki XR systemu Windows nie są obsługiwane.

Omówienie obserwatora

Po wyświetleniu monitu WindowsSceneUnderstandingObserver funkcja zwróci obiekt SpatialAwarenessSceneObject z atrybutami przydatnymi dla aplikacji w celu zrozumienia jej otoczenia. Częstotliwość obserwacji, zwracany typ obiektu (np. ściana, podłoga) i inne zachowania obserwatora są zależne od konfiguracji obserwatora za pośrednictwem profilu. Jeśli na przykład wymagana jest maska okluzji, obserwator musi być skonfigurowany do generowania czworokątów. Obserwowaną scenę można zapisać jako serializowany plik, który można później załadować, aby odtworzyć scenę w trybie odtwarzania edytora.

Konfigurowanie

Ważne

Usługa Scene Understanding jest obsługiwana tylko w systemach HoloLens 2 i Unity 2019.4 i nowszych.

  1. Upewnij się, że platforma jest ustawiona na platformę UWP w ustawieniach kompilacji.
  2. Uzyskaj pakiet Scene Understanding za pomocą narzędzia Mixed Reality Feature Tool.

Korzystanie ze rozumienia scen

Najszybszym sposobem rozpoczęcia pracy z usługą Scene Understanding jest sprawdzenie przykładowej sceny.

Scena z przykładową sceną usługi Scene Understanding

W środowisku Unity użyj Eksploratora projektu, aby otworzyć plik sceny w Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity pliku i nacisnąć klawisz Play!

Ważne

Dotyczy tylko zestawu narzędzi MRTK 2.6.0 — w przypadku korzystania z narzędzia Mixed Reality Feature Tool lub w inny sposób importowania za pośrednictwem narzędzia UPM zaimportuj przykład Demos — SpatialAwareness przed zaimportowaniem przykładu Experimental — SceneUnderstanding z powodu problemu z zależnością. Aby uzyskać więcej informacji, zobacz ten problem z usługą GitHub .

Scena przedstawia następujące elementy:

  • Wizualizacja obserwowanych obiektów sceny w interfejsie użytkownika aplikacji na potrzeby konfigurowania obserwatora
  • Przykładowy DemoSceneUnderstandingController skrypt pokazujący, jak zmienić ustawienia obserwatora i nasłuchiwać odpowiednich zdarzeń
  • Zapisywanie danych sceny na urządzeniu na potrzeby programowania w trybie offline
  • Ładowanie wcześniej zapisanych danych sceny (plików bajtów) w celu obsługi przepływu pracy programowania w edytorze

Ważne

Domyślnie ShouldLoadFromFile właściwość obserwatora jest ustawiona na wartość false. Aby wyświetlić wizualizację serializowanego przykładowego pokoju, zapoznaj się z sekcją dotyczącą konfigurowania usługi obserwatora poniżej i ustaw właściwość na true w edytorze.

Uwaga

Przykładowa scena jest oparta na potoku starszej wersji XR. Jeśli używasz potoku zestawu SDK XR, należy odpowiednio zmodyfikować profile. Podany profil systemu rozpoznawania przestrzennego usługi Scene Understanding (DemoSceneUnderstandingSystemProfile) i profile obserwatora usługi Scene Understanding (DefaultSceneUnderstandingObserverProfile i DemoSceneUnderstandingObserverProfile) działają dla obu potoków.

Uwaga

Przykładowa scena rejestruje There is no active AsyncCoroutineRunner when an action is posted. ostrzeżenie w pewnych okolicznościach ze względu na kolejność inicjowania/wykonywania wątku. Jeśli możesz potwierdzić, AsyncCoroutineRunner że składnik jest dołączony do obiektu GameObject "Demo Controller", a składnik/GameObject pozostają włączone/aktywne w scenie (przypadek domyślny), ostrzeżenie można bezpiecznie zignorować. Jednak podczas tworzenia nowej sceny za pomocą funkcji Scene Understanding upewnij się, że utworzono pusty obiekt GameObject w katalogu głównym i dołącz AsyncCoroutineRunner do niego skrypt. W przeciwnym razie funkcja Scene Understanding może nie działać prawidłowo.

Konfigurowanie usługi obserwatora

Wybierz obiekt gry "MixedRealityToolkit" i sprawdź inspektora.

opis sceny w hierarchii

Lokalizacja zestawu narzędzi MRTK w inspektorze

Te opcje umożliwią skonfigurowanie programu WindowsSceneUnderstandingObserver.

Przykładowy skrypt

Przykładowy skrypt DemoSceneUnderstandingController.cs demonstruje główne pojęcia dotyczące pracy z usługą Scene Understanding.

  • Subskrybowanie zdarzeń usługi Scene Understanding
  • Obsługa zdarzeń usługi Scene Understanding
  • Konfigurowanie WindowsSceneUnderstandingObserver środowiska uruchomieniowego

Przełączanie na panelu w scenie zmienia zachowanie obserwatora sceny przez wywołanie funkcji publicznych tego przykładowego skryptu.

Włączenie tworzenia wystąpień prefab spowoduje pokazanie tworzenia obiektów, które mają rozmiar pasujący do wszystkich obiektów SpatialAwarenessSceneObject, zebranych starannie pod obiektem nadrzędnym.

opcje kontrolera pokazu

Notatki dotyczące aplikacji skompilowanych

Skompiluj i wdróż je na urządzeniu HoloLens w standardowy sposób. Po uruchomieniu kilka przycisków powinno wydawać się odtwarzane za pomocą funkcji.

Należy pamiętać, że istnieją pewne spadki w tworzeniu zapytań do obserwatora. Błędna konfiguracja żądania pobierania powoduje, że ładunek zdarzenia nie zawiera oczekiwanych danych. Jeśli na przykład nie zażąda się czworokątów, nie będą obecne tekstury maski okluzji. Podobnie jak mądry, żadna siatka świata nie będzie wyświetlana, jeśli obserwator nie jest skonfigurowany do żądania siatki. Skrypt DemoSceneUnderstandingController zajmuje się niektórymi z tych zależności, ale nie wszystkimi.

Dostęp do zapisanych plików sceny można uzyskać za pośrednictwem portalu urządzenia pod adresem User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Te pliki sceny mogą być używane w edytorze, określając je w profilu obserwatora znajdującym się w inspektorze.

Lokalizacja pliku bajtów w portalu urządzenia

Serializowane bajty sceny w obserwatorze

Zobacz też