Pierwsze kroki z narzędziem Geospatial Creator w Unity

Twórca geoprzestrzenny ARCore dla Unity umożliwia podgląd treści geoprzestrzennych w edytorze Unity, pokazując dane Map Google w nowym formacie 3D kafelków. Pomaga to zobaczyć, gdzie w świecie rzeczywistym zostaną umieszczone treści podczas tworzenia aplikacji.

Twórca geoprzestrzenny jest dostępny w ramach rozszerzenia ARCore dla Fundacji AR. Z tego krótkiego wprowadzenia dowiesz się, jak używać Kreatora danych geoprzestrzennych w Unity, aby dodawać treści AR geoprzestrzenne do aplikacji ARCore Geospatial Sample.

Jeśli masz już aplikację, której chcesz użyć zamiast próbki geoprzestrzennej, najpierw musisz postępować zgodnie z naszym przewodnikiem dla programistów dotyczącym danych geoprzestrzennych dla Unity. Po skonfigurowaniu w aplikacji interfejsu Geospatial API przejdź do kroku Dodaj wymagane zależności i przejdź dalej.

Wymagania wstępne

W sekcji Pierwsze kroki z rozszerzeniami ARCore dla AR (w języku angielskim) dowiesz się, jak skonfigurować środowisko Unity pod kątem tworzenia rzeczywistości AR.

Rozszerzenia ARCore obsługują wcześniejsze wersje Unity, ale Geospatial Creator wymaga Unity 2021.3 lub nowszej wersji.

Autoryzacja interfejsu API

Aby korzystać z interfejsów ARCore Geospatial API i Google Map Tiles API, musisz skonfigurować dostęp do tych interfejsów.

Interfejs API Map Google

Interfejs Map Tiles API udostępnia fotorealistyczne trójwymiarowe, obsługiwane lokalizacje. Wykorzystamy je w edytorze Unity, aby wyświetlić podgląd obszaru wokół sceny AR.

Wejdź na stronę interfejsu Map Tiles API, aby włączyć ten interfejs API i dowiedzieć się więcej o kafelkach map.

Interfejs API ARCore Geospatial

Aplikacja ARCore Geospatial API używa interfejsu ARCore Geospatial API w czasie działania do tworzenia kotwic geoprzestrzennych i interakcji z nimi.

Aby włączyć interfejsy Geospatial API, skonfiguruj w swojej aplikacji ARCore API. Możesz używać metod autoryzacji bez klucza (zalecane) lub metod autoryzacji klucza interfejsu API.

Rozszerzanie aplikacji Geospatial Sample

W tym przewodniku pokażemy, jak używać Kreatora danych geoprzestrzennych do dodawania treści geoprzestrzennych do aplikacji ARCore Geospatial Sample.

Skonfiguruj próbkę geoprzestrzenną

Najpierw zapoznaj się z aplikacją ARCore Geospatial Sample. W nowym projekcie Unity otwórz menedżera pakietów Unity i wybierz pakiet ARCore Extensions. W panelu szczegółów Menedżera pakietów rozwiń Sample i zaimportuj próbkę geoprzestrzenną do projektu Unity.

Zanim uruchomisz aplikację, musisz włączyć w projekcie funkcje ARCore i Geospatial. Użyj opcji Edytuj > Ustawienia projektu . > XR Plug-in Management. Zaznacz odpowiednie pola, aby włączyć dostawcę wtyczki ARCore na Androida lub dostawcę wtyczki ARKit na iOS.

Następnie z menu Edytuj > Ustawienia projektu... > XR Plug-in Management, otwórz panel ARCore Extensions. Upewnij się, że zaznaczona jest opcja „Dane geoprzestrzenne” (nie musisz jeszcze włączać Kreatora danych geoprzestrzennych) i wpisz dane logowania do interfejsu API. Więcej informacji znajdziesz w dokumentacji „Włączanie interfejsu Geospatial Unity API” na Androida i iOS.

Istnieje kilka innych ustawień odtwarzacza związanych z platformą, które są wymagane w każdej aplikacji na Unity korzystającej z ARCore. Wymagane zmiany znajdziesz w sekcji Konfigurowanie ustawień odtwarzacza w naszej dokumentacji.

Obecnie w scenie nie ma żadnych obiektów gry poza tymi, które są wymagane do uruchomienia próbki geoprzestrzennej. To dobry moment na skompilowanie i uruchomienie aplikacji. Jeśli jest ona prawidłowo skonfigurowana, w czasie działania aplikacji będzie ona wyświetlać widok z aparatu urządzenia. W miarę jak się ruszasz, dokładność geoprzestrzenna wyświetlana u góry ekranu będzie się zwiększać. Klikając ekran, utworzysz kotwice geoprzestrzenne, które pozostaną w swojej pierwotnej lokalizacji podczas przemieszczania się.

Następnie pokażemy, jak za pomocą Kreatora geoprzestrzennego tworzyć i wizualizować zaawansowane materiały AR z poziomu edytora Unity. Treści te pojawią się w aplikacji przy określonej szerokości i długości geograficznej lokalizacji na świecie.

Dodaj wymagane zależności

Twórca geoprzestrzenny korzysta z pakietu Unity firmy zewnętrznej o nazwie Cesium, aby renderować kafelki Map Google w oknie sceny edytora Unity. Zanim włączysz funkcje Twórca geoprzestrzenny, dodajmy pakiet Cesium do projektu.

Zalecamy zainstalowanie najnowszej wersji pakietu Cesium dla Unity ze strony Cesium na GitHubie:

  1. Pobierz najnowszą wersję wstępnie skompilowanej wersji .tgz platformy Cesium dla Unity ze strony z wersjami na GitHubie. Obecna zalecana wersja pakietu Cesium dla Unity to 1.1.0.
  2. Otwórz menedżera pakietów Unity, klikając w Unity menu „Window” (Okno) i wybierając „Package Manager” (Menedżer pakietów).
  3. Kliknij ikonę „+” i wybierz „Dodaj pakiet z pliku tarball”.
  4. Wybierz plik .tgz Cesium for Unity pobrany w kroku 1.
  5. Może pojawić się prośba o zainstalowanie dodatkowych zależności, takich jak Text Mesh Pro.

Dodaj pakiet .tgz za pomocą menedżera pakietów Unity

Włącz twórcę geoprzestrzennego

Teraz możesz włączyć twórcę danych geoprzestrzennych:

  1. W oknie Ustawienia kompilacji sprawdź, czy wybraną platformą jest „Android” lub „iOS”. Funkcje twórcy geoprzestrzennego nie są obecnie dostępne na innych platformach.
  2. Wybierz Ustawienia projektu > XR Plug-in Management > ARCore Rozszerzenia.
  3. Jeśli we wcześniejszym kroku nie ustawiono kluczy interfejsu API ARCore na Androida lub iOS, zrób to teraz.
  4. Włącz przełączniki „Dane geoprzestrzenne” i „Twórca geoprzestrzenny”. Po kliknięciu przełącznika Twórca geoprzestrzenny wyświetli się kreator niemodalny, który pozwoli sprawdzić, czy projekt jest zgodny z Kreatorem danych geoprzestrzennych.
  5. Kliknij „Zakończ” w kreatorze.

Gdy zakończysz korzystanie z kreatora, Unity uruchomi kompilację skryptów. Zanim przejdziesz dalej, poczekaj na zakończenie ponownej kompilacji. (Jeśli wybrana przez Ciebie platforma to nie „Android” lub „iOS”, przejdź na jedną z nich).

Dodawanie pochodzenia twórcy treści geoprzestrzennych za pomocą kafelków mapy

Scena wymaga dokładnie 1 obiektu „Geospatial Creator Origin”. Ten obiekt służy jako punkt odniesienia przy przeliczaniu rzeczywistej szerokości i długości geograficznej oraz wartości wysokości na współrzędne z Unity.

Aby dodać do sceny źródło twórcy geoprzestrzennego, wybierz Obiekt gry > XR > Pochodzenie twórcy geoprzestrzennego. Nowo utworzony obiekt wymaga danych georeferencyjnych, które łączy określone dane o szerokości geograficznej, długości i wysokości z położeniem punktu początkowego we współrzędnych w grze. W panelu Inspektora w serwisie Geospatial dodaj georeferencję, klikając przycisk Dodaj komponent Geospatial Georeference.

Dodawanie obiektu GameObject pochodzenia twórcy geoprzestrzennego

Cesium Georeference nie tylko jest punktem referencyjnym dla obiektów AR, ale dodaje do sceny obiekt kafelka 3D Cesium. Ten obiekt wyrenderuje kafelki map Google w widoku scenerii edytora, co pozwoli Ci zobaczyć dokładnie, w którym miejscu na świecie pojawią się Twoje treści AR. W inspektorze źródła danych geoprzestrzennych znajduje się pole umożliwiające dodanie skonfigurowanego wcześniej klucza interfejsu API Map Tiles. Po ustawieniu tego klawisza kafelki mapy powinny się wczytać w widoku sceny.

Zmień pola szerokości, długości i wysokości tak, aby znajdowały się w pobliżu miejsca, w którym treści AR mają się pojawiać w aplikacji.

Widok sceny w Edytorze powinien teraz pokazywać kafelki mapy według szerokości i długości geograficznej miejsca wylotu. Zakładamy, że w czasie działania Twoja aplikacja używa kamery AR, więc zespół Geospatial Creator skonfigurował już obiekt mapy 3D Cesium o tag „EditorOnly”. Dlatego nie będą one pobierane ani renderowane w czasie działania gry. Możesz to zmienić za pomocą inspektora obiektu Cesium3DTileset. Więcej informacji o funkcjach Georeference w Cesium i 3D Tileset GameObject znajdziesz w dokumentacji Cesium dla Unity.

Dodawanie i umieszczanie kotwicy twórcy geoprzestrzennego

Możesz teraz umieścić treści AR w swojej scenie. Kliknij GameObject > XR > Geospatial Creator Anchor (Kotwica kreacji geoprzestrzennej), aby dodać kotwicę do hierarchii sceny. W inspektorze kotwicy możesz podać dokładną szerokość, długość i wysokość. Przekształcenie obiektu zostanie natychmiast zaktualizowane do prawidłowej pozycji na scenie, dzięki czemu będzie można dokładnie zobaczyć, w którym miejscu świata będzie on widoczny.

Dodawanie kotwicy twórcy geoprzestrzennego

Dopasowując szerokość i długość geograficzną kotwicy, wybierz miejsce w pobliżu, aby sprawdzić, czy jest we właściwym miejscu w czasie działania. Podczas ustawiania wysokości kotwicy twórcy geoprzestrzennego masz 3 możliwości:

  • Teren umieszcza kotwicę na poziomie gruntu o określonej szerokości i długości geograficznej. Poziom terenu jest określany w czasie działania przez Visual Positioning System (System pozycjonowania wizualnego). Jeśli nie masz doświadczenia z interfejsami API geoprzestrzennymi w ARCore, dobrym pomysłem będzie „Teren”, ponieważ kotwica zostanie wyświetlona bezpośrednio na poziomie terenu z dużą dokładnością w pionie. Pole „Przesunięcie wysokości” umożliwia umieszczenie kotwicy powyżej lub poniżej poziomu gruntu o stałą wartość w metrach. Na przykład określenie przesunięcia o wartości „1,0” spowoduje, że kotwica „uniesie się” o metr nad terenem.
  • Rooftop umieszcza kotwicę względem szczytu dowolnego budowli o podanej szerokości i długości geograficznej. Podobnie jak w przypadku kotwicy terenu pole „Przesunięcie wysokości” umożliwia przesuwanie kotwicy w górę lub w dół w odniesieniu do położenia dachu w metrach.
  • WGS84 umieszcza kotwicę na określonej wysokości bezwzględnej wyrażonej w metrach zgodnie z układem współrzędnych WGS84. Umieszczenie obiektu w ten sposób może wymagać metody prób i błędów, ponieważ wysokość „0” w WSG84 nie musi oznaczać średniego poziomu morza i może nie zgadzać się z wysokością ustawioną w GPS. O ile szerokość i długość geograficzna renderowanych kafelków 3D są bardzo dokładne, próba umieszczenia obiektu na poziomie ziemi przy użyciu wzorcowych kafelków 3D może skutkować błędem wysokości sięgającym kilku metrów.

Więcej informacji o różnych typach kotwic geoprzestrzennych ARCore znajdziesz w przewodniku dla programistów dotyczącym danych geoprzestrzennych.

Zarówno kotwice terenu, jak i kotwice na dachu mają pole Wysokość WGS84. Ta wartość jest używana tylko w trybie edytora do ustawiania wysokości obiektu w widoku sceny. Wysokość terenu i dachów określa się tylko w czasie działania, dlatego pole WGS84 umożliwia wizualizację kotwicy na określonej wysokości podczas tworzenia aplikacji. Pole Wysokość WGS84 jest ignorowane podczas działania w przypadku kotwic

Dodaj geometrię do kotwicy

Jeśli skompilujesz i uruchomisz aplikację od razu, nie zobaczysz w niej kotwicy. Dzieje się tak, ponieważ nie jest do niej przypisana żadna geometria. Dodajmy do kotwicy prosty element podstawowy 3D: w hierarchii sceny kliknij prawym przyciskiem myszy obiekt kotwicy geoprzestrzennej twórcy AR. W menu kontekstowym wybierz Obiekt 3D > Kostka. W widoku sceny powinna być widoczna szara kostka jako element podrzędny kotwicy. Jeśli chcesz zmienić położenie lub obrót obiektu w Edytorze, zalecamy przeniesienie głównego obiektu zakotwiczonego, a nie podrzędnego obiektu podstawowego sześcianu. Pomoże to ograniczyć błędy w tłumaczeniu z szerokości i długości geograficznej na współrzędne gry.

Kotwica kreacji geoprzestrzennej z elementem podstawowym sześcianu

Oczywiście do kotwicy możesz dodać bardziej złożone elementy geometryczne, dowolne komponenty i elementy podrzędne.

Tworzenie i uruchamianie aplikacji

Czas zobaczyć swoją kotwicę w prawdziwym świecie. Spróbuj utworzyć i uruchomić aplikację, a potem przenieść się w miejsce, w którym powinna się ona pojawić. Jest tam? Gratulacje. Możesz już tworzyć bardziej złożone projekty AR w Kreatorze danych geoprzestrzennych.

Jeśli masz problemy, zapoznaj się z przewodnikiem rozwiązywania problemów.

To świetny moment, aby dodać dodatkowych kotwicy twórców geoprzestrzennych AR o różnych kształtach geometrycznych. Spróbuj poeksperymentować z wieloma kotwicami na dachach i w terenie oraz ich odsunięciem. Dodaj skrypty, aby animować obiekty lub umożliwić interakcje z nimi.

Omówienie kotwic twórców geoprzestrzennych i klasy ARGeospatialAnchor

Podczas tworzenia złożonych i interaktywnych funkcji AR warto poznać związek między kotwicami twórców geoprzestrzennych a klasą C# w ARCore ARGeospatialAnchor:

Obiekt ARGeospatialAnchor można utworzyć tylko w czasie działania przez wywołanie jednej z funkcji na ARAnchorManager. Można go też utworzyć dopiero po ustabilizowaniu się sesji AR. Kotwice twórców geoprzestrzennych można traktować jako obiekty zastępcze obecne w Twojej scenie, które czekają na to, aby sesja AR była gotowa do rozwiązywania problemów z obiektami ARGeospatialAnchor. Gdy sesja będzie gotowa, symbol zastępczy automatycznie wywoła obiekt ARAnchorManager, aby utworzyć i zaradzić ARGeospatialAnchor.

Natychmiast po rozwiązaniu kotwicy w środowisku wykonawczym kotwica twórcy geoprzestrzennego w hierarchii sceny dołączy się jako element podrzędny do nowego obiektu GameObject. Oznacza to, że wszystkie komponenty lub elementy podrzędne kotwicy twórcy geoprzestrzennego staną się podkomponentami lub wnukami nowego obiektu ARGeospatialAnchorGameObject. Na przykład element transform elementu podstawowego geometrycznego dołączonego do kotwicy twórcy geoprzestrzennego będzie dziedziczony z elementu transform obiektu ARGeospatialAnchor i dlatego zostanie umieszczony we właściwym miejscu w sesji AR w czasie działania.

Jeśli musisz rozpoznać konkretne obiekty GameObject ARGeospatialAnchor w czasie działania, możesz wyszukać obiekty, których właściwość name odpowiada obiektowi kotwicy utworzonej za pomocą twórcy danych geoprzestrzennych. Jeśli sesja AR zostanie zainicjowana, obiekt parent tego obiektu będzie odpowiednim obiektem ARGeospatialAnchor.

Rozwiązywanie problemów

Dlaczego moja kotwica się porusza?

Możesz zauważyć, szczególnie przy pierwszym uruchomieniu aplikacji, że kotwica może powoli „dmuchać się” lub nawet podnosić nagle kilka metrów. Dzieje się tak, gdy sesja VPS nadal określa i ulepsza dokładną lokalizację kamery. Ponieważ dokładność pionowa i pozioma zwiększa się na wielu klatkach, kotwica jest ponownie rysowana w dokładniejszym miejscu, co daje wrażenie ruchu. Obiekt możesz wyrenderować w inny sposób (lub nie wyrenderować wcale), dopóki dokładność lokalizacji nie osiągnie określonego progu. Aby to zrobić, możesz wysłać zapytanie do właściwości ARCoreEarthManager.CameraGeospatialPose, aby określić dokładność bieżącej aktualizacji ramki.

Dlaczego moja kotwica pojawia się na niewłaściwej wysokości?

Jeśli używasz typu wysokości „Ręcznie” dla kotwic twórców geoprzestrzennych, wysokość kotwicy zostanie ustawiona (w metrach) zgodnie z WGS84. W danej lokalizacji mogą występować rozbieżności do kilku metrów między widocznym poziomem terenu widocznym na obrazach mapy a rzeczywistym poziomem terenu zgłoszonym przez system Visual Positioning System Google (VPS). Jeśli kotwica geoprzestrzenna wydaje się nieprawidłowo zlokalizowana w czasie działania, zalecamy osobiste sprawdzenie wysokości VPS za pomocą nakładki debugowania w przykładowej aplikacji. Wysokość można następnie zmienić w edytorze Unity, tak aby pasowała do znanej wysokości VPS w danej lokalizacji.

Fragmenty mapy nie renderują się poprawnie w widoku sceny w edytorze

Jeśli Cesium3DTileset wydaje się wczytywać kafelki, ale w widoku sceny są one wyrenderowane w kolorze purpurowym, dodaj do projektu pakiet Unity Shader Graph. Cesium wymaga tego pakietu, ale projekty korzystające z wbudowanego mechanizmu renderowania Unity nie zawierają go domyślnie.

Aby dodać wykres Shader, otwórz menedżera pakietów Unity (Okno > Menedżer pakietów). Upewnij się, że przeglądasz pakiety dostępne w rejestrze pakietów Unity – wybierz „Packages: Unity Registry” (Pakiety: Unity Registry) z menu u góry okna Menedżera pakietów. Wyszukaj pakiet com.unity.shadergraph i zainstaluj najnowszą wersję. Po załadowaniu pakietu kafelki 3D powinny zostać załadowane ponownie i prawidłowo wyrenderowane w widoku sceny.

Aplikacja wyświetla czarny ekran w czasie działania, a nie widok z kamery

Uniwersalny potok renderowania (URP) w Unity nie jest domyślnie skonfigurowany dla kamery AR. Jeśli w czasie działania zamiast danych wyjściowych z kamery pojawia się czarny ekran, musisz dodać AR Background Renderer Feature do każdego modułu renderowania URP w swojej scenie.

Dodawanie funkcji mechanizmu renderowania w tle AR

Aby dodać tę funkcję, wyszukaj w projekcie ciąg „renderer”. Przy każdym obiekcie mechanizmu renderowania URP kliknij przycisk „Dodaj funkcję mechanizmu renderowania” w inspektorze i dodaj mechanizm renderowania w tle AR.

Dlaczego wydaje się, że kotwice umieszczone daleko od punktu początkowego wyglądają na nieprawidłowo?

Konwersja ze współrzędnych WGS84 na współrzędne gry Unity może być wynikiem błędu ze względu na precyzję arytmetyczną zmiennoprzecinkową, którą można zminimalizować, upewniając się, że punkt początkowy znajduje się w pobliżu kotwic AR. W przypadku odległości ponad 20 km mogą być niedokładności. Jeśli do działania AR rozciąga się długi fragment, zalecamy korzystanie z wielu scen z unikalną kotwicą w każdej z nich.