Créer avec Geospatial Creator et l'API Places de Google Maps Platform

1. Avant de commencer

Geospatial Creator dans Unity, qui repose sur ARCore et les tuiles 3D photoréalistes de Google Maps Platform, vous permet de créer et de visualiser rapidement des expériences de réalité augmentée (RA) pour une latitude et une longitude spécifiques, le tout dans l'éditeur Unity. Cela peut réduire considérablement le temps nécessaire pour créer une scène AR géolocalisée unique pour votre application. Mais que se passe-t-il si vous souhaitez créer plusieurs expériences similaires à différents endroits ? Vous pouvez également le faire à l'aide de l'API C# dans Geospatial Creator.

Dans cet atelier de programmation, vous allez écrire du code C# qui utilise Geospatial Creator et l'API Places de Google Maps Platform pour créer plusieurs expériences géospatiales à partir d'un modèle initial. Les expériences obtenues peuvent être explorées et affinées dans l'éditeur Unity avant d'être compilées dans une application.

Le livre est à la bonne hauteur.

Prérequis

Points abordés

  • Utiliser les API dans Geospatial Creator pour créer et visualiser une expérience géolocalisée dans plusieurs lieux
  • Utiliser l'API Places de Google Maps Platform pour trouver l'emplacement de lieux
  • Exécuter l'expérience de RA sur votre appareil

Prérequis

2. Configurer votre environnement

Pour utiliser Geospatial Creator, vous devez configurer une autorisation pour accéder aux 3D Tiles photoréalistes, aux services ARCore sur Google Cloud et à l'API Places de Google Maps Platform.

Configurer un projet Google Cloud

Pour accéder aux API serveur de Google, cet atelier de programmation nécessite un projet Google Cloud pour lequel la facturation est activée. Il est obligatoire de configurer la facturation pour cet atelier de programmation, mais vous ne serez facturé que si un projet dépasse son quota de services sans frais.

Pour configurer un projet dans Google Cloud, procédez comme suit :

  1. Créez un projet dans la console Google Cloud.Créer un projet Google Cloud
  2. Dans la zone de texte Nom du projet, saisissez un nom approprié, par exemple ARCore Geospatial Project, puis sélectionnez l'emplacement de votre choix.
  3. Cliquez sur Créer.
  4. Dans la console Google Cloud, sur la page de sélection du projet, cliquez sur Créer un projet.
  5. Consultez Activer la facturation et examinez les tarifs de Photorealistic 3D Tiles et les tarifs de la nouvelle API Places.

Activer l'API Map Tiles

L'API Map Tiles fournit les tuiles 3D photoréalistes, qui sont visibles dans l'éditeur Unity.

  • Pour activer l'API Map Tiles, cliquez sur le bouton ci-dessous, puis sélectionnez Activer :

Activer l'API ARCore

L'API ARCore sur Google Cloud vous permet d'accéder à l'API ARCore Geospatial sur l'appareil cible.

  • Pour activer l'API ARCore, cliquez sur le bouton ci-dessous, puis sélectionnez Activer :

Activer l'API Places

L'API Places de Google Maps Platform vous permet d'obtenir des données de localisation pour plus de 200 millions de lieux, que vous utiliserez dans l'atelier de programmation pour trouver des lieux associés. Cette API fournit des résultats de recherche et des coordonnées géographiques pour les lieux.

  • Pour activer l'API Places, cliquez sur le bouton ci-dessous, puis sélectionnez Activer :

Créer une clé API pour votre projet

Pour authentifier votre application auprès des services Google Cloud à distance à l'aide de l'authentification par clé API, procédez comme suit :

  1. Dans la console Google Cloud, sous API et services, sélectionnez Identifiants.
  2. En haut de la page, cliquez sur Créer des identifiants, puis sélectionnez Clé API.
  3. Notez la clé, car vous en aurez besoin lors des étapes suivantes.

Configurer le logiciel

Pour commencer à utiliser le logiciel Geospatial Creator, procédez comme suit :

  1. Clonez ce dépôt.
  2. Téléchargez Unity Hub et utilisez-le pour installer la version 2022.3 d'Unity. Assurez-vous d'installer les outils de compilation optionnels Android ou iOS.
  3. Dans Unity Hub, appuyez sur Add > Add project from disk (Ajouter > Ajouter un projet à partir du disque).
  4. Dans le panneau Hierarchy (Hiérarchie), sélectionnez AR Geospatial Creator Origin (Origine Geospatial Creator pour la RA).
  5. Dans la zone de texte Google Maps Tile API Key (Clé pour l'API Tiles de Google Maps), insérez la clé API, puis appuyez sur la touche Enter (ou return sur macOS).Insérer votre clé API dans l'origine Geospatial Creator
  6. Dans Edit > Project Settings > XR Plug-in Management > ARCore Extensions (Modifier > Paramètres du projet > Gestion des plug-ins XR > ARCore > Extensions), utilisez l'authentification par clé API pour Android ou iOS, puis insérez la clé API.
  7. Dans File > Build Settings (Fichier > Paramètres de compilation), définissez la plate-forme cible sur Android ou iOS.

3. Créer votre premier ancrage

Dans cet atelier de programmation, vous allez créer une ancre de RA pouvant être utilisée à plusieurs endroits. Nous allons prendre l'exemple des bibliothèques publiques de San Francisco, en Californie, mais n'hésitez pas à utiliser des lieux près de chez vous.

À propos du composant "Origin" de Geospatial Creator

Chaque scène Unity créée avec Geospatial Creator nécessite une origine Geospatial Creator. Cet objet de jeu est le point de référence pour convertir les valeurs de latitude, de longitude et d'altitude réelles en coordonnées de jeu Unity.

L'exemple de projet contient une origine Geospatial Creator, qui utilise Cesium pour afficher des tuiles 3D photoréalistes dans la vue Scene de l'éditeur et vous permet de visualiser exactement où votre contenu de RA apparaîtra dans le monde.

Déplacer l'origine

Déplacez l'origine Geospatial Creator vers la latitude et la longitude de la bibliothèque principale de San Francisco.

Pour utiliser l'intégration intégrée de Geospatial Creator à l'API Places afin de déplacer automatiquement l'origine vers le bon emplacement, procédez comme suit :

  1. Dans le panneau Hierarchy (Hiérarchie), sélectionnez l'objet de jeu Geospatial Creator Origin (Origine Geospatial Creator).
  2. Dans le panneau Inspecteur, cliquez sur Rechercher un lieu.
  3. Dans la boîte de dialogue de recherche, saisissez San Francisco Public Library. Le premier résultat doit être 100 Larkin Street.
  4. Cliquez sur Appliquer aux objets pour appliquer le résultat de la recherche à l'origine. Vous devriez constater que la latitude et la longitude de l'origine sont mises à jour avec les nouvelles coordonnées.

Le bâtiment est visible.

Ajouter une ancre Geospatial Creator à la scène

Maintenant qu'une origine existe, ajoutez une ancre Geospatial Creator à l'aide de GameObject > XR > AR Geospatial Creator Anchor (Objet de jeu > XR > Ancre Geospatial Creator pour la RA). Par défaut, l'ancrage est situé au même endroit que l'origine.

Utilisez cette ancre pour positionner notre contenu 3D en RA. Un modèle 3D de livre est inclus dans l'exemple de projet.

Pour placer le livre dans votre scène, procédez comme suit :

  1. Dans le panneau Project (Projet), faites glisser le modèle Book (Livre) vers le volet de vue Editor (Éditeur).
  2. Dans le panneau Hierarchy (Hiérarchie), assurez-vous que Book (Livre) est un enfant de l'ancrage que vous avez créé précédemment. Tout objet de jeu enfant de l'ancrage Geospatial Creator sera positionné par rapport à l'ancrage.
  3. Dans le panneau Hierarchy (Hiérarchie), sélectionnez Book (Livre). Définissez ses valeurs de position sur 0, 0, 0.

Le livre est ajouté à la scène.

Lorsque vous examinez ce modèle dans la vue Éditeur, il est évident que quelque chose ne va pas : l'altitude par défaut de l'ancrage est inférieure à la surface du toit de la bibliothèque, alors qu'elle devrait être bien au-dessus.

Bien que vous puissiez déplacer l'objet dans l'éditeur pour trouver l'altitude WGS84 approximative, il est préférable de configurer les ancres géospatiales en tant qu'ancres de toit dans ce cas pour que leur altitude soit automatiquement fixée par rapport au toit de la structure au-dessus de laquelle elles se trouvent.

  • Pour ce faire, ouvrez le panneau d'inspection de l'ancrage et définissez la propriété Altitude Type sur Rooftop.

Panneau de l'outil d'inspection

Après cela, notez que l'altitude de l'ancre ne change pas dans la vue de l'éditeur. En effet, l'altitude de l'ancrage est déterminée au moment de l'exécution, lorsque l'ancrage est résolu pour les ancrages sur les toits et les terrains. Pour visualiser l'ancrage sur le toit dans la vue Scene, vous pouvez utiliser le bouton Ancrer à la tuile. Cela définit l'altitude de l'ancrage pour qu'elle corresponde à la tuile dans la vue Scene, sans affecter l'altitude de l'ancrage résolu au moment de l'exécution.

  • Pour que le modèle flotte au-dessus du toit de la bibliothèque au lieu de reposer dessus, définissez le paramètre Altitude relative to rooftop sur 15 mètres au-dessus du toit.

Le modèle flotte désormais correctement au-dessus de la bibliothèque.

Le livre est à la bonne hauteur.

Votre projet comporte désormais une scène de RA géospatiale complète, y compris tous les composants système de RA requis, une origine Geospatial Creator et une ancre avec un modèle associé.

Ensuite, créez des ancres en double dans d'autres emplacements de la bibliothèque.

4. Trouver de nouveaux points d'ancrage avec l'API Places

L'API Places de Google Maps Platform vous permet d'obtenir des données de localisation pour plus de 200 millions de lieux. Dans cet atelier de programmation, vous allez utiliser cette API pour trouver d'autres succursales de bibliothèques publiques à San Francisco et utiliser ces résultats pour générer un ancrage Geospatial Creator pour les dix prochains résultats de recherche.

  • Pour commencer, cliquez sur Assets > Scripts > Editor (Éléments > Scripts > Éditeur), puis ouvrez le fichier AnchorDuplicator.cs. Ce fichier fournit un code récurrent qui vous aide à démarrer avec l'API Places et à analyser ses résultats.

S'authentifier avec l'API Places

  1. Localisez la ligne suivante dans la classe AnchorDuplicator :
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. Remplacez <YOUR_API_KEY_HERE> par la clé obtenue lors des étapes de configuration.

Interroger l'API Places pour un terme de recherche

Une fois la configuration de l'autorisation de l'API Places terminée, vous pouvez écrire du code qui lance une requête POST.

  • Pour ce faire, recherchez la méthode CreatePlacesRequest et utilisez la définition de méthode suivante :
    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;
    
    Désormais, lorsque la méthode CreatePlacesRequest est appelée, une requête est envoyée pour rechercher searchTerm dans un cercle centré autour de lat et lon.

Tester votre travail

Avant de continuer, vous devez vérifier que les appels à l'API Places sont réussis.

  1. Exécutez les fonctions dans l'éditeur Unity :
    1. Dans l'atelier de programmation Google AR, cliquez sur Run Places Request (Exécuter la requête Places).
    2. Ouvrez la console Unity. Des résultats devraient s'afficher.Les lieux apparaissent dans la console

5. Ajouter des ancres à des lieux de manière programmatique

Maintenant que vous avez vérifié que l'API Places trouve des résultats, créez des ancres Geospatial Creator à chaque emplacement spécifié par les résultats.

Créer un élément de menu

  1. Dans la classe AnchorDuplicator, recherchez la méthode CreateNewAnchorsFromPlaces et utilisez la définition de méthode suivante :
    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;
    }
    
    Cet élément de menu vérifie une requête précédemment lancée et utilise le premier ARGeospatialCreatorAnchor de votre scène comme prototype pour créer des ancres, une par lieu dans le résultat de l'API Places.
  2. Utilisez le nouvel élément de menu Create New Anchors from Places Response (Créer des ancres à partir de la réponse des lieux) dans Google AR Codelab pour créer les ancres.
  3. Plusieurs ancres devraient apparaître dans le volet Hierarchy (Hiérarchie).

Vérifier les positions des ancres

Pour vérifier que tous les assets sont ancrés aux bons emplacements avant d'exécuter l'application, procédez comme suit :

  1. Cliquez sur une ancre ajoutée dans le volet Hiérarchie.
  2. Appuyez sur F.
  3. Inspectez l'ancrage dans la vue Scene.
  4. Si une ancre n'est pas au bon endroit, cliquez sur Ancrer à la tuile ou modifiez manuellement les valeurs Latitude, Longitude ou Editor Override Altitude.

6. Voir le composant en RA

Pour afficher l'asset en RA sur votre appareil Android ou iOS compatible ARCore, procédez comme suit :

  1. Cliquez sur File > Build Settings (Fichier > Paramètres de compilation), puis sélectionnez la plate-forme de compilation Android ou iOS.
  2. Cliquez sur Changer de plate-forme.
  3. Assurez-vous que votre appareil de développement est connecté et configuré pour le développement.
  4. Cliquez sur Build and run (Compiler et exécuter).
  5. Vérifiez que l'application s'exécute sur votre appareil.
  6. Rendez-vous aux emplacements où vous avez ancré le contenu. Si vous n'avez pas modifié les exemples, les lieux sont des bibliothèques publiques à San Francisco.

Afficher l&#39;expérience de RA

7. Conclusion

Félicitations ! Vous avez écrit une application Unity qui utilise Geospatial Creator et l'API Places Google Maps Platform pour créer plusieurs expériences géospatiales à partir d'un modèle initial. Nous espérons que ces connaissances vous permettront d'étendre la couverture de vos contenus Geospatial Creator.

En savoir plus