Udostępnij za pośrednictwem


Opis sceny

Zrozumienie sceny zapewnia deweloperom Mixed Reality ustrukturyzowaną reprezentację środowiska wysokiego poziomu zaprojektowaną w celu zapewnienia intuicyjnego tworzenia aplikacji obsługujących środowisko. Zrozumienie sceny odbywa się dzięki połączeniu możliwości istniejących środowisk uruchomieniowych rzeczywistości mieszanej, takich jak wysoce dokładne, ale mniej ustrukturyzowane mapowanie przestrzenne i nowe środowiska uruchomieniowe oparte na sztucznej inteligencji. Łącząc te technologie, zrozumienie sceny generuje reprezentacje środowisk 3D, które są podobne do tych, które mogły być używane w strukturach, takich jak Unity lub ARKit/ARCore. Punkt wejścia opis sceny zaczyna się od obserwatora sceny, który jest wywoływany przez aplikację w celu obliczenia nowej sceny. Obecnie technologia może generować 3 odrębne, ale powiązane kategorie obiektów:

  • Uproszczona siatka środowiskowa, która wywnioskuje strukturę pomieszczenia planarnego bez bałaganu
  • Regiony płaszczyzny do umieszczania, które nazywamy Czworokątami
  • Migawka siatki mapowania przestrzennego , która jest zgodna z danymi czterokątnymi/watertight, które są wyświetlane

Siatka mapowania przestrzennego, oznaczone powierzchnie planarne, siatka z hermetyzowaną

Ten dokument ma na celu przedstawienie przeglądu scenariusza oraz wyjaśnienie relacji, którą udostępnia udział w zrozumieniu sceny i mapowaniu przestrzennym. Jeśli chcesz zobaczyć opis sceny w akcji, zapoznaj się z naszym pokazem wideo Projektowanie hologramów — świadomość przestrzenna poniżej:

To wideo zostało zrobione z aplikacji "Projektowanie hologramów" HoloLens 2. Pobierz i ciesz się pełnym doświadczeniem tutaj.

Programowanie za pomocą usługi Scene Understanding

Ten artykuł służy tylko do wprowadzenia środowiska uruchomieniowego i koncepcji usługi Scene Understanding. Jeśli szukasz dokumentacji dotyczącej programowania za pomocą usługi Scene Understanding, możesz zainteresować się następującymi artykułami:

Omówienie zestawu SDK usługi Scene Understanding

Przykładową aplikację Scene Understanding możesz pobrać z przykładowej witryny usługi GitHub:

Przykład z opisem sceny

Jeśli nie masz urządzenia i chcesz uzyskać dostęp do przykładowych scen, aby wypróbować rozwiązanie Scene Understanding, istnieją sceny w przykładowym folderze zasobów:

Scena Opis przykładowych scen

SDK

Jeśli szukasz szczegółowych informacji na temat opracowywania za pomocą usługi Scene Understanding, zapoznaj się z dokumentacją przeglądu zestawu Sdk usługi Scene Understanding .

Przykład

Obsługa urządzeń

Funkcja HoloLens (1. generacja) HoloLens 2 Immersyjne zestawy słuchawkowe
Opis sceny ✔️

Typowe scenariusze użycia

Ilustracje typowych scenariuszy użycia mapowania przestrzennego: Umieszczanie, Oklusion, Fizyka i Nawigacja
Typowe scenariusze użycia mapowania przestrzennego: umieszczanie, okluzji, fizyki i nawigacji.


Wiele podstawowych scenariuszy dla aplikacji obsługujących środowisko można rozwiązać zarówno za pomocą mapowania przestrzennego, jak i zrozumienia sceny. Te podstawowe scenariusze obejmują umieszczanie, okluzji, fizyki itd. Podstawową różnicą między zrozumieniem sceny a mapowaniem przestrzennym jest kompromis maksymalnej dokładności i opóźnienia struktury i prostoty. Jeśli aplikacja wymaga możliwie najmniejszego opóźnienia i trójkątów siatki, do których chcesz uzyskać dostęp, użyj mapowania przestrzennego bezpośrednio. Jeśli wykonujesz przetwarzanie wyższego poziomu, możesz rozważyć przejście do modelu rozumienia sceny, ponieważ powinno to zapewnić nadzbiór funkcji. Zawsze będziesz mieć dostęp do najbardziej kompletnych i dokładnych danych mapowania przestrzennego, ponieważ zrozumienie sceny zapewnia migawkę siatki mapowania przestrzennego w ramach jej reprezentacji.

W poniższych sekcjach przedstawiono ponownie podstawowe scenariusze mapowania przestrzennego w kontekście nowego zestawu SDK rozumienia scen.

Umieszczanie

Opis sceny zapewnia nowe konstrukcje zaprojektowane w celu uproszczenia scenariuszy umieszczania. Scena może obliczać pierwotne elementy o nazwie SceneQuads, które opisują płaskie powierzchnie, na których można umieścić hologramy. ScenaQuads została zaprojektowana wokół umieszczania i opisywania powierzchni 2D i zapewnia interfejs API do umieszczania na tej powierzchni. Wcześniej, gdy używasz siatki trójkąta do umieszczania, trzeba było skanować wszystkie obszary czworokąta i wykonać wypełnienie otworu/przetwarzanie końcowe w celu zidentyfikowania dobrych lokalizacji do umieszczania obiektów. Nie zawsze jest to konieczne w przypadku czworokątów, ponieważ środowisko uruchomieniowe rozumienia sceny wywnioskuje, które obszary czworokątne nie zostały zeskanowane, i unieważniają obszary, które nie są częścią powierzchni.

SceneQuads z wyłączonym wnioskowaniem, przechwytywanie obszarów umieszczania dla skanowanych regionów.
Obraz nr 1 — SceneQuads z wyłączonym wnioskowaniem, przechwytywaniem obszarów umieszczania dla skanowanych regionów.

Czworokąta z włączonym wnioskowaniem umieszczanie nie jest już ograniczone do skanowanych obszarów.
Obraz nr 2 — czworokąty z włączonym wnioskowaniem umieszczanie nie jest już ograniczone do skanowanych obszarów.


Jeśli aplikacja zamierza umieścić hologramy 2D lub 3D na sztywnych strukturach środowiska, prostota i wygoda funkcji SceneQuads do umieszczania jest preferowana do przetwarzania tych informacji z siatki mapowania przestrzennego . Aby uzyskać więcej informacji na temat tego tematu, zobacz dokumentację zestawu SDK opis sceny

Uwaga W przypadku starszego kodu umieszczania, który zależy od siatki mapowania przestrzennego, można obliczyć siatkę mapowania przestrzennego wraz z elementem SceneQuads, ustawiając ustawienie EnableWorldMesh. Jeśli interfejs API rozumienia sceny nie spełnia wymagań dotyczących opóźnienia aplikacji, zalecamy kontynuowanie korzystania z interfejsu API mapowania przestrzennego.

Okluzji

Occlusion mapowania przestrzennego pozostaje najmniej ukrytym sposobem przechwytywania stanu środowiska w czasie rzeczywistym. Chociaż może to być przydatne do zapewnienia okluzji w wysoce dynamicznych scenach, warto rozważyć zrozumienie sceny z kilku powodów. Jeśli używasz siatki mapowania przestrzennego wygenerowanej przez usługę Scene Understanding, możesz zażądać danych z mapowania przestrzennego, które nie będą przechowywane w lokalnej pamięci podręcznej i nie są dostępne z interfejsów API percepcji. Korzystanie z mapowania przestrzennego dla okluzji obok zwartych siatki zapewni dodatkową wartość, w szczególności ukończenie nieskanowanej struktury pomieszczenia.

Jeśli wymagania mogą tolerować zwiększone opóźnienie rozumienia sceny, deweloperzy aplikacji powinni rozważyć użycie siatki z hermetyzacją sceny oraz siatki mapowania przestrzennego w jednosonie z reprezentacjami planarnymi. Zapewni to "najlepszy z obu światów" scenariusz, w którym uproszczona occlusion occlusion jest żonaty z drobną geometrią nieplanowaną zapewniając najbardziej realistyczne mapy okluzji możliwe.

Fizyki

Interpretacja sceny generuje siatki z hermetyką, która rozkłada przestrzeń semantyczną, w szczególności w celu rozwiązania wielu ograniczeń fizyki, które nakładają siatki mapowania przestrzennego. Struktury wodoszczelne zapewniają, że rzuty promieni fizyki zawsze uderzają, a dekompozycja semantyczna pozwala na prostsze generowanie siatki nawigacji w pomieszczeniach. Jak opisano w sekcji dotyczącej oklusionu, utworzenie sceny z elementem EnableSceneObjectMeshes i EnableWorldMesh spowoduje utworzenie najbardziej fizycznie kompletnej siatki. Właściwość wodoszczelna siatki środowiskowej zapobiega trafieniu testów, które nie uderzają w powierzchnie. Dane siatki zapewnią, że fizyka współdziała ze wszystkimi obiektami na scenie, a nie tylko ze strukturą pomieszczenia.

Siatki planarne rozkładane przez klasę semantyczną to idealne konstrukcje do planowania nawigacji i ścieżki, co ułatwia wiele problemów opisanych w omówieniu nawigacji mapowania przestrzennego . Obiekty SceneMesh obliczone na scenie są dekomponowane przez typ powierzchni, zapewniając, że generowanie siatki nawigacji jest ograniczone do powierzchni, na których można chodzić. Ze względu na prostotę konstrukcji podłogowych dynamiczna generacja siatki nawigacji w aparatach 3d, takich jak Unity, jest osiągalna w zależności od wymagań czasu rzeczywistego.

Generowanie dokładnych siatki nawigacji obecnie nadal wymaga przetwarzania końcowego, a mianowicie aplikacje muszą nadal projektować okludery na podłodze, aby zapewnić, że nawigacja nie przechodzi przez bałagan/tabele itd. Najbardziej dokładnym sposobem osiągnięcia tego celu jest projekcja danych siatki świata, które są udostępniane, jeśli scena jest obliczana za pomocą flagi EnableWorldMesh.

Wizualizacja

Wizualizacja mapowania przestrzennego może służyć do przesyłania opinii w czasie rzeczywistym w środowisku, ale istnieje wiele scenariuszy, w których prostota obiektów planarnych i wodoszczelnych zapewnia większą wydajność lub jakość wizualizacji. Techniki projekcji cieni i uziemienia, które zostały opisane przy użyciu mapowania przestrzennego, mogą być bardziej przyjemne w przypadku projekcji na powierzchniach planarnych dostarczonych przez czworokąty lub planarną siatkę z hermetyzowaną. Jest to szczególnie istotne w przypadku środowisk/scenariuszy, w których dokładne wstępne skanowanie nie jest optymalne, ponieważ scena będzie wnioskować, a kompletne środowiska i założenia planarne zminimalizują artefakty.

Ponadto łączna liczba powierzchni zwracanych przez mapowanie przestrzenne jest ograniczona przez wewnętrzną pamięć podręczną przestrzenną, podczas gdy wersja siatki mapowania przestrzennego sceny może uzyskiwać dostęp do danych mapowania przestrzennego, które nie są buforowane. W związku z tym zrozumienie sceny jest bardziej odpowiednie do przechwytywania reprezentacji siatki dla większych przestrzeni (na przykład większych niż jeden pokój) na potrzeby wizualizacji lub dalszego przetwarzania siatki. Siatka światowa zwrócona za pomocą elementu EnableWorldMesh będzie miała spójny poziom szczegółowości, co może przynieść bardziej przyjemną wizualizację, jeśli zostanie renderowana jako szkielet.

Zobacz też