1. Zanim zaczniesz
Geospatial Creator w Unity, oparty na ARCore i fotorealistycznych kafelkach 3D z Google Maps Platform, umożliwia szybkie tworzenie i wizualizowanie projektów rzeczywistości rozszerzonej (AR) dla określonych szerokości i długości geograficznych w edytorze Unity. Może to znacznie skrócić czas potrzebny na utworzenie jednej sceny AR z geolokalizacją dla Twojej aplikacji. Co jednak, jeśli chcesz utworzyć kilka podobnych scen w różnych lokalizacjach? Możesz to też zrobić za pomocą interfejsu C# API w Geospatial Creator.
W tym ćwiczeniu z programowania napiszesz kod w C#, który korzysta z Geospatial Creator i interfejsu Places API z Google Maps Platform, aby utworzyć wiele środowisk geoprzestrzennych na podstawie początkowego szablonu. Wynikowe środowiska można eksplorować i dostosowywać w edytorze Unity przed skompilowaniem ich w aplikację.

Wymagania wstępne
- Podstawowa wiedza na temat AR
- Podstawowa wiedza o interfejsie ARCore Geospatial API
Czego się nauczysz
- Jak używać interfejsów API w Geospatial Creator do tworzenia i wizualizowania jednego doświadczenia z geolokalizacją w wielu lokalizacjach.
- Jak używać interfejsu Places API z Google Maps Platform do znajdowania lokalizacji miejsc.
- Jak uruchomić funkcję AR na urządzeniu.
Czego potrzebujesz
2. Konfigurowanie środowiska
Aby korzystać z Geospatial Creator, musisz skonfigurować autoryzację dostępu do fotorealistycznych kafelków 3D, usług ARCore w Google Cloud i interfejsu Places API z Google Maps Platform.
Konfigurowanie projektu Google Cloud
Aby uzyskać dostęp do interfejsów API serwera Google, w tym samouczku musisz mieć projekt Google Cloud z włączonymi płatnościami. Aby ukończyć ten codelab, musisz skonfigurować płatności, ale opłaty zostaną naliczone tylko wtedy, gdy projekt przekroczy limit bezpłatnych usług.
Aby skonfigurować projekt w Google Cloud, wykonaj te czynności:
- Utwórz projekt w konsoli Google Cloud.

- W polu tekstowym Nazwa projektu wpisz odpowiednią nazwę, np.
ARCore Geospatial Project, a potem wybierz dowolną lokalizację. - Kliknij Utwórz.
- W konsoli Google Cloud na stronie wyboru projektu kliknij Utwórz projekt.
- Zapoznaj się z sekcją Włączanie płatności oraz z cennikiem fotorealistycznych kafelków 3D i cennikiem interfejsu Places API (nowość).
Włączanie interfejsu Map Tiles API
Interfejs Map Tiles API udostępnia fotorealistyczne kafelki 3D, które są widoczne w edytorze Unity.
Włączanie interfejsu ARCore API
Interfejs ARCore API w Google Cloud umożliwia dostęp do interfejsu ARCore Geospatial API na urządzeniu docelowym.
Włączanie interfejsu Places API
Interfejs Places API z Google Maps Platform umożliwia uzyskiwanie danych o lokalizacji ponad 200 milionów miejsc, które wykorzystasz w tym laboratorium do znajdowania powiązanych miejsc. Ten interfejs API udostępnia wyniki wyszukiwania i współrzędne geograficzne miejsc.
Tworzenie klucza interfejsu API dla projektu
Aby użyć uwierzytelniania za pomocą klucza interfejsu API do uwierzytelniania aplikacji w zdalnych usługach Google Cloud, wykonaj te czynności:
- W konsoli Google Cloud w sekcji Interfejsy API i usługi wybierz Dane logowania.
- U góry strony kliknij Utwórz dane logowania, a następnie wybierz Klucz interfejsu API.
- Zapisz klucz, ponieważ będzie potrzebny w następnych krokach.
Konfigurowanie oprogramowania
Aby zacząć korzystać z oprogramowania Geospatial Creator, wykonaj te czynności:
- Sklonuj to repozytorium.
- Pobierz Unity Hub i użyj go, aby zainstalować Unity w wersji 2022.3. Upewnij się, że instalujesz opcjonalne narzędzia do kompilacji na Androida lub iOS.
- W Unity Hub kliknij Add > Add project from disk (Dodaj > Dodaj projekt z dysku).
- W panelu Hierarchia wybierz AR Geospatial Creator Origin (Początek narzędzia AR Geospatial Creator).
- W polu tekstowym Klucz interfejsu API do kafelków Map Google wstaw klucz interfejsu API, a następnie naciśnij
Enter(lubreturnw systemie macOS).
- W sekcji Edit > Project Settings > XR Plug-in Management > ARCore Extensions (Edytuj > Ustawienia projektu > Zarządzanie wtyczkami XR > Rozszerzenia ARCore) użyj uwierzytelniania za pomocą klucza interfejsu API w przypadku Androida lub iOS i wstaw klucz interfejsu API.
- Wybierz Plik > Ustawienia kompilacji i zmień platformę docelową na Androida lub iOS.
3. Tworzenie pierwszego punktu kotwiczenia
W tym laboratorium kodowania utworzysz kotwicę AR, której można używać w wielu lokalizacjach. Użyjemy jako przykładu bibliotek publicznych w San Francisco w Kalifornii, ale możesz użyć lokalizacji w swojej okolicy.
Informacje o komponencie Geospatial Creator Origin
Każda scena Unity utworzona za pomocą Geospatial Creator wymaga dokładnie jednego punktu początkowego Geospatial Creator. Ten obiekt gry jest punktem odniesienia do przekształcania rzeczywistych wartości szerokości i długości geograficznej oraz wysokości na współrzędne gry w Unity.
Przykładowy projekt zawiera źródło Geospatial Creator, które wykorzystuje Cesium do renderowania fotorealistycznych kafelków 3D w widoku Scene Edytora i umożliwia wizualizację dokładnego miejsca na świecie, w którym będą się wyświetlać treści AR.
Przesuwanie punktu początkowego
Przenieś punkt początkowy Geospatial Creator na szerokość i długość geograficzną głównej biblioteki w San Francisco.
Aby skorzystać z wbudowanej integracji narzędzia Geospatial Creator z interfejsem Places API i automatycznie przenieść punkt początkowy do właściwej lokalizacji, wykonaj te czynności:
- W panelu Hierarchia wybierz obiekt gry Geospatial Creator Origin.
- W panelu Inspektor kliknij Wyszukaj lokalizację.
- W oknie wyszukiwania wpisz
San Francisco Public Library. Pierwszy wynik powinien wskazywać adres 100 Larkin Street. - Aby zastosować wynik wyszukiwania do źródła, kliknij Zastosuj do obiektów. Powinno się wyświetlić, że szerokość i długość geograficzna punktu początkowego zostały zaktualizowane do nowych współrzędnych.

Dodawanie kotwicy Geospatial Creator do sceny
Teraz, gdy istnieje już punkt początkowy, dodaj punkt kotwiczący Geospatial Creator, klikając GameObject > XR > AR Geospatial Creator Anchor (Obiekt gry > XR > Punkt kotwiczący AR Geospatial Creator). Domyślnie punkt zakotwiczenia będzie znajdować się w tym samym miejscu co punkt początkowy.
Użyj tego punktu, aby umieścić nasze treści 3D w AR. Przykładowy projekt zawiera model 3D książki.
Aby umieścić książkę w scenie, wykonaj te czynności:
- W panelu Projekt przeciągnij model Książka do panelu widoku Edytor.
- W panelu Hierarchia sprawdź, czy Książka jest elementem podrzędnym utworzonego wcześniej punktu zakotwiczenia. Wszystkie podrzędne obiekty gry w kotwicy Geospatial Creator będą pozycjonowane względem kotwicy.
- W panelu Hierarchia wybierz Książka. Ustaw wartości pozycji na 0, 0, 0.

Gdy spojrzysz na ten model w widoku Edytor, zobaczysz, że coś jest nie tak: domyślna wysokość punktu zakotwiczenia jest poniżej powierzchni dachu biblioteki, a powinna być znacznie wyżej.
Chociaż możesz przesunąć obiekt w edytorze, aby znaleźć przybliżoną wysokość WGS84, w tej sytuacji lepiej jest skonfigurować kotwice geoprzestrzenne jako kotwice na dachu, aby ich wysokość była automatycznie ustalana względem dachu konstrukcji, nad którą się znajdują.
- Aby to zrobić, otwórz panel inspektora elementu zakotwiczenia i ustaw właściwość
Altitude TypenaRooftop.

Pamiętaj, że po wykonaniu tej czynności wysokość kotwicy nie zmieni się w widoku Edytora. Dzieje się tak, ponieważ wysokość kotwicy jest określana w czasie działania, gdy kotwica jest rozpoznawana w przypadku kotwic na dachu i kotwic terenowych. Aby zobaczyć punkt zakotwiczenia na dachu w widoku Scene, możesz użyć przycisku Snap To Tile (Przyciągnij do kafelka). Ustawia to wysokość kotwicy tak, aby pasowała do kafelka w widoku Scene, ale nie wpływa na wysokość rozpoznanej kotwicy w czasie działania.
- Aby model unosił się nad dachem biblioteki, a nie na nim, zmień parametr
Altitude relative to rooftopna 15 metrów nad dachem.
Model unosi się teraz nad biblioteką.

Twój projekt zawiera teraz kompletną scenę AR przestrzennej, w tym wszystkie wymagane komponenty systemu AR, punkt początkowy Geospatial Creator i jeden punkt zakotwiczenia z dołączonym modelem.
Następnie utwórz duplikaty kotwic w dodatkowych lokalizacjach biblioteki.
4. Znajdowanie nowych lokalizacji kotwiczących za pomocą interfejsu Places API
Interfejs Places API z Google Maps Platform umożliwia uzyskiwanie danych o lokalizacji ponad 200 milionów miejsc. W tym module użyjesz tego interfejsu API, aby znaleźć inne oddziały bibliotek publicznych w San Francisco i na podstawie tych wyników wygenerować kotwicę Geospatial Creator dla kolejnych 10 wyników wyszukiwania.
- Na początek kliknij Komponenty > Skrypty > Edytor, a potem otwórz plik „
AnchorDuplicator.cs”. Ten plik zawiera przykładowy kod, który pomaga rozpocząć korzystanie z interfejsu Places API i analizować jego wyniki.
Uwierzytelnianie w interfejsie Places API
- W klasie
AnchorDuplicatorznajdź ten wiersz:private const string API_KEY = "<YOUR_API_KEY_HERE>"; - Zastąp <YOUR_API_KEY_HERE> kluczem uzyskanym w krokach konfiguracji.
Wysyłanie zapytań do interfejsu Places API za pomocą wyszukiwanego hasła
Po skonfigurowaniu autoryzacji interfejsu Places API możesz napisać kod, który inicjuje żądanie POST.
- Aby to zrobić, znajdź metodę
CreatePlacesRequesti użyj tej definicji: Teraz, gdy wywoływana jest metodastring postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + " \"locationBias\": { \"circle\": { " + " \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " + " \"radius\": 10000 }" + " }" + "}"; string url = "https://places.googleapis.com/v1/places:searchText"; UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json"); request.SetRequestHeader("X-Goog-Api-Key", apiKey); request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location"); return request;CreatePlacesRequest, wysyłane jest żądanie, które wyszukujesearchTermw okręgu wyśrodkowanym nalatilon.
Sprawdzanie efektów pracy
Zanim przejdziesz dalej, musisz sprawdzić, czy wywołania interfejsu Places API są prawidłowe.
- Uruchom funkcje w edytorze Unity:
- W ćwiczeniach z programowania Google AR kliknij Run Places Request (Uruchom żądanie dotyczące miejsc).
- Otwórz konsolę Unity. Powinny się pojawić wyniki.

5. Programowe dodawanie kotwic do miejsc
Teraz, gdy masz już pewność, że interfejs Places API znajduje wyniki, utwórz nowe kotwice Geospatial Creator w każdej lokalizacji określonej przez wyniki.
Tworzenie pozycji menu
- W klasie
AnchorDuplicatorznajdź metodęCreateNewAnchorsFromPlacesi użyj tej definicji metody: Ta pozycja menu sprawdza wcześniej rozpoczęte żądanie i używa pierwszego elementuif (_places == null) { Debug.LogError("Cannot create anchors: Places has not been initialized."); return; } // You start with only one anchor in the scene, which you want to copy: var prototypeAnchorObject = GameObject .FindObjectOfType<ARGeospatialCreatorAnchor>() .gameObject; foreach (var place in _places) { var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject); var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>(); anchor.Latitude = place.location.latitude; anchor.Longitude = place.location.longitude; newAnchorObject.name = place.displayName.text; }ARGeospatialCreatorAnchorw scenie jako prototypu do tworzenia kotwic – po jednej dla każdego miejsca w wyniku interfejsu Places API. - Aby utworzyć kotwice, użyj nowego elementu menu Create New Anchors from Places Response w Google AR Codelab.
- W panelu Hierarchia powinno pojawić się kilka punktów zakotwiczenia.
Sprawdzanie pozycji kotwicy
Aby przed uruchomieniem aplikacji sprawdzić, czy wszystkie komponenty są zakotwiczone w odpowiednich miejscach, wykonaj te czynności:
- W panelu Hierarchia kliknij dodany punkt zakotwiczenia.
- Naciśnij F.
- Sprawdź kotwicę w widoku
Scene. - Jeśli punkt nie znajduje się w odpowiednim miejscu, kliknij Przyciągnij do kafelka lub ręcznie zmień wartości
Latitude,LongitudelubEditor Override Altitude.
6. Wyświetlanie zasobu w AR
Aby wyświetlić komponent w AR na urządzeniu z Androidem lub iOS obsługującym ARCore:
- Kliknij File > Build Settings (Plik > Ustawienia kompilacji), a potem wybierz platformę kompilacji Android lub iOS.
- Kliknij Przełącz platformę.
- Sprawdź, czy urządzenie deweloperskie jest podłączone i skonfigurowane do programowania.
- Kliknij Kompilacja i uruchomienie.
- Sprawdź, czy aplikacja działa na Twoim urządzeniu.
- Odwiedź miejsca, w których zakotwiczono treści. Jeśli nie zmienisz przykładów, lokalizacje będą bibliotekami publicznymi w San Francisco.

7. Podsumowanie
Gratulacje! Masz aplikację w Unity, która korzysta z Geospatial Creator i interfejsu Places API Google Maps Platform do tworzenia wielu środowisk geoprzestrzennych na podstawie szablonu początkowego. Mamy nadzieję, że ta wiedza pomoże Ci zwiększyć zasięg Twoich treści dla twórców treści przestrzennych.