Tworzenie za pomocą narzędzia Geospatial Creator i interfejsu Places API z Google Maps Platform

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ę.

Książka jest na odpowiedniej wysokości.

Wymagania wstępne

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:

  1. Utwórz projekt w konsoli Google Cloud.Tworzenie projektu Google Cloud
  2. W polu tekstowym Nazwa projektu wpisz odpowiednią nazwę, np. ARCore Geospatial Project, a potem wybierz dowolną lokalizację.
  3. Kliknij Utwórz.
  4. W konsoli Google Cloud na stronie wyboru projektu kliknij Utwórz projekt.
  5. Zapoznaj się z sekcją Włączanie płatności oraz z cennikiem fotorealistycznych kafelków 3Dcennikiem 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:

  1. W konsoli Google Cloud w sekcji Interfejsy API i usługi wybierz Dane logowania.
  2. U góry strony kliknij Utwórz dane logowania, a następnie wybierz Klucz interfejsu API.
  3. Zapisz klucz, ponieważ będzie potrzebny w następnych krokach.

Konfigurowanie oprogramowania

Aby zacząć korzystać z oprogramowania Geospatial Creator, wykonaj te czynności:

  1. Sklonuj to repozytorium.
  2. 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.
  3. W Unity Hub kliknij Add > Add project from disk (Dodaj > Dodaj projekt z dysku).
  4. W panelu Hierarchia wybierz AR Geospatial Creator Origin (Początek narzędzia AR Geospatial Creator).
  5. W polu tekstowym Klucz interfejsu API do kafelków Map Google wstaw klucz interfejsu API, a następnie naciśnij Enter (lub return w systemie macOS).Wstaw klucz interfejsu API do pola Origin w Geospatial Creator
  6. 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.
  7. 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:

  1. W panelu Hierarchia wybierz obiekt gry Geospatial Creator Origin.
  2. W panelu Inspektor kliknij Wyszukaj lokalizację.
  3. W oknie wyszukiwania wpisz San Francisco Public Library. Pierwszy wynik powinien wskazywać adres 100 Larkin Street.
  4. 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.

Budynek jest widoczny.

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:

  1. W panelu Projekt przeciągnij model Książka do panelu widoku Edytor.
  2. 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.
  3. W panelu Hierarchia wybierz Książka. Ustaw wartości pozycji na 0, 0, 0.

Książka zostanie dodana do sceny.

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 Type na Rooftop.

Panel inspektora

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 rooftop na 15 metrów nad dachem.

Model unosi się teraz nad biblioteką.

Książka jest na odpowiedniej wysokości.

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

  1. W klasie AnchorDuplicator znajdź ten wiersz:
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. 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ę CreatePlacesRequest i użyj tej definicji:
    string 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;
    
    Teraz, gdy wywoływana jest metoda CreatePlacesRequest, wysyłane jest żądanie, które wyszukuje searchTerm w okręgu wyśrodkowanym na latlon.

Sprawdzanie efektów pracy

Zanim przejdziesz dalej, musisz sprawdzić, czy wywołania interfejsu Places API są prawidłowe.

  1. Uruchom funkcje w edytorze Unity:
    1. W ćwiczeniach z programowania Google AR kliknij Run Places Request (Uruchom żądanie dotyczące miejsc).
    2. Otwórz konsolę Unity. Powinny się pojawić wyniki.Miejsca pojawiają się w konsoli

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

  1. W klasie AnchorDuplicator znajdź metodę CreateNewAnchorsFromPlaces i użyj tej definicji metody:
    if (_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;
    }
    
    Ta pozycja menu sprawdza wcześniej rozpoczęte żądanie i używa pierwszego elementu ARGeospatialCreatorAnchor w scenie jako prototypu do tworzenia kotwic – po jednej dla każdego miejsca w wyniku interfejsu Places API.
  2. Aby utworzyć kotwice, użyj nowego elementu menu Create New Anchors from Places Response w Google AR Codelab.
  3. 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:

  1. W panelu Hierarchia kliknij dodany punkt zakotwiczenia.
  2. Naciśnij F.
  3. Sprawdź kotwicę w widoku Scene.
  4. Jeśli punkt nie znajduje się w odpowiednim miejscu, kliknij Przyciągnij do kafelka lub ręcznie zmień wartości Latitude, Longitude lub Editor 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:

  1. Kliknij File > Build Settings (Plik > Ustawienia kompilacji), a potem wybierz platformę kompilacji Android lub iOS.
  2. Kliknij Przełącz platformę.
  3. Sprawdź, czy urządzenie deweloperskie jest podłączone i skonfigurowane do programowania.
  4. Kliknij Kompilacja i uruchomienie.
  5. Sprawdź, czy aplikacja działa na Twoim urządzeniu.
  6. Odwiedź miejsca, w których zakotwiczono treści. Jeśli nie zmienisz przykładów, lokalizacje będą bibliotekami publicznymi w San Francisco.

Wyświetlanie treści w AR

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.

Więcej informacji