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.
- Upewnij się, że platforma jest ustawiona na platformę UWP w ustawieniach kompilacji.
- 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.
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.
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.