Ce guide explique comment utiliser Geospatial Creator pour écrire des scripts C# afin d'effectuer rapidement des tâches courantes telles que la création et le déplacement d'objets ARGeospatialCreatorAnchor
en mode Édition d'Unity. Cela peut être utile pour créer plusieurs ancrages à partir d'une liste prédéfinie, telle qu'une feuille de calcul ou un fichier KML.
Geospatial Creator dans Unity vous permet d'afficher un aperçu du contenu géospatial dans l'éditeur Unity. Notre guide de démarrage rapide présente Geospatial Creator et explique comment créer votre première expérience de RA géospatiale avec une programmation minimale, à l'aide de l'interface utilisateur de l'éditeur Unity. Pour les projets plus avancés, vous pouvez créer et manipuler Utiliser des GameObjects Geospatial Creator de manière programmatique au lieu d'utiliser Unity de l'éditeur.
Ce guide part du principe que vous connaissez les concepts de base de Geospatial Creator. présenté dans le guide de démarrage rapide, et vous êtes prêt à ajouter Geospatial Le créateur s'ancre sur une scène. Vous devez activer Geospatial Creator et configurés avec vos clés API, ainsi que les objets de la session de RA initiale dans votre scène. Si vous partez de zéro, suivez le guide de démarrage rapide y compris la case d'option "Activer Créateur" avant de continuer.
Premiers pas
Pour cet exemple, supposons que vous disposiez d'un ensemble d'emplacements connus autour de l'hôtel de ville de San Francisco (Californie, États-Unis), où vous souhaitez placer du contenu RA. Vous : créer des objets d'ancrage à chacun de ces emplacements, puis attacher des objets de base la géométrie à ces ancrages.
Avant de pouvoir créer des ancres, vous devez spécifier un
ARGeospatialCreatorOrigin
, qui est un point de référence pour la conversion
latitudes, longitudes et altitudes depuis et vers les coordonnées mondiales d'Unity.
L'origine contient également un sous-composant CesiumGeoreference
et un objet enfant Cesium3DTileset
, ce qui permet à Cesium de représenter la zone environnante dans la vue de scène de l'éditeur Unity. Pour cela, vous avez besoin d'un plan
Clé API Tiles comme décrit dans le
le guide de démarrage rapide
Créer une origine
L'API pour Geospatial Creator inclut une méthode de fabrique permettant de créer un
ARGeospatialCreatorOrigin
dans la scène et ajoutez les composants Cesium requis.
Le code suivant crée le point de départ avec une latitude, une longitude et un point de départ
altitude et en utilisant la clé API Map Tiles donnée:
ARGeospatialCreatorOrigin origin =
GeospatialCreatorCesiumAdapter.CreateOriginWithCesiumGeoreference(
37.77954, -122.417581, 0.0, "<MAP_TILES_KEY>");
Par défaut, cet objet est placé aux coordonnées (0, 0, 0) dans les coordonnées mondiales Unity, qui fonctionne bien pour cet exemple.
Obtenir la référence ARAnchorManager
Un ARAnchorManager
est nécessaire pour résoudre les ancres géospatiales au moment de l'exécution.
ont également besoin d'une référence à ARAnchorManager
dans la scène. Si vous avez commencé avec l'application exemple Geospatial fournie avec les extensions ARCore, le Gestionnaire d'ancrage est associé à l'objet de jeu "Origine de la session AR". En supposant que vous disposiez d'un seul gestionnaire d'ancrage dans votre scène, vous pouvez obtenir une référence à celui-ci comme suit :
ARAnchorManager anchorManager =
Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];
Maintenant que vous disposez d'une origine et d'un gestionnaire d'ancres, vous pouvez commencer à créer le
Objets ARGeospatialCreatorAnchor
.
Créer des ancres de relief
Prenons l'exemple du tableau à deux dimensions suivant de valeurs double
, qui représente
la latitude et la longitude précises en trois points situés du côté est
Hôtel de ville de San Francisco, Californie, États-Unis:
double[,] _cityHallEastPoints = {
{ 37.77936, -122.418617 }, // in front of city hall
{ 37.77965, -122.418680 }, // right of city hall
{ 37.77917, -122.418577 }}; // left of city hall
Supposons que vous souhaitiez placer un cube d'un mètre à chacun de ces emplacements, au niveau du sol.
dans notre application de RA. Le code suivant crée des objets ARGeospatialCreatorAnchor
et attribue leurs propriétés aux valeurs appropriées :
for (int i = 0; i < _cityHallEastPoints.GetLength(0); i++)
{
ARGeospatialCreatorAnchor anchor =
new GameObject("City Hall " + i).AddComponent<ARGeospatialCreatorAnchor>();
anchor.Origin = origin;
anchor.AnchorManager = anchorManager;
anchor.Latitude = _cityHallEastPoints[i, 0];
anchor.Longitude = _cityHallEastPoints[i, 1];
anchor.AltitudeType = AnchorAltitudeType.Terrain;
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.parent = anchor.transform;
}
Des ancrages de terrain sont ainsi créés à chaque point. Geospatial Creator automatiquement
place les ancres aux coordonnées mondiales Unity appropriées, en calculant leur
position par rapport à l'objet ARGeospatialCreatorOrigin
. Pour ajuster l'altitude d'un ancrage de terrain, définissez la propriété Altitude
en mètres au-dessus ou en dessous de la surface du terrain.
Lors de l'exécution, les ancres de relief se résolvent au niveau du sol pour l'application en cours d'exécution.
par la propriété Altitude
. Dans la vue de la scène de l'éditeur,
effectuer le rendu par défaut à une altitude WGS84 de 0, et non par rapport à la tuile 3D
et la géométrie. Ce n'est généralement pas à cet endroit que vous souhaiteriez les voir. Vous pouvez donc ignorer les
l'altitude par défaut de l'ancre dans la vue de la scène dans l'éditeur en définissant
UseEditorAltitudeOverride
sur true
et spécifier l'altitude dans
WGS84 mètres à l'aide de la propriété EditorAltitudeOverride
:
anchor.UseEditorAltitudeOverride = true;
anchor.EditorAltitudeOverride = -13.5; // WGS84 altitude at ground level for City Hall plaza
Ces deux propriétés n'ont aucun effet en dehors du mode Éditeur et ne sont pas compilées dans l'application en cours d'exécution.
Créer une ancre de toit
Pour notre prochain ancrage, supposons que vous souhaitiez placer une ancre sur le toit de City
Hall. L'ancre peut être créée exactement de la même manière, sauf pour AltitudeType
est définie sur AnchorAltitudeType.Rooftop
:
ARGeospatialCreatorAnchor cityHallRoofAnchor =
new GameObject("City Hall Roof").AddComponent<ARGeospatialCreatorAnchor>();
cityHallRoofAnchor.Origin = origin;
cityHallRoofAnchor.AnchorManager = anchorManager;
cityHallRoofAnchor.Latitude = 37.77959;
cityHallRoofAnchor.Longitude = -122.419006;
cityHallRoofAnchor.AltitudeType = AnchorAltitudeType.Rooftop;
GameObject roofCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
roofCube.transform.parent = cityHallRoofAnchor.transform;
Comme pour les ancrages de relief, vous pouvez ajuster l'altitude d'un toit.
dans la vue de la scène de l'éditeur à l'aide des propriétés UseEditorAltitudeOverride
et
EditorAltitudeOverride
. Dans cet exemple, l'altitude WGS84 du toit est d'environ 10,7 mètres.
Créer une ancre à une altitude spécifique
Notre dernier ancre sera placé tout en haut du dôme de l'hôtel de ville. Pour cette ancre, la précision de l'altitude étant importante, vous la définirez explicitement en utilisant une ancre WGS84 au lieu d'une ancre de relief ou de toit:
ARGeospatialCreatorAnchor cityHallDomeAnchor =
new GameObject("City Hall Dome").AddComponent<ARGeospatialCreatorAnchor>();
cityHallDomeAnchor.Origin = origin;
cityHallDomeAnchor.AnchorManager = anchorManager;
cityHallDomeAnchor.Latitude = 37.77928;
cityHallDomeAnchor.Longitude = -122.419241;
cityHallDomeAnchor.AltitudeType = AnchorAltitudeType.WGS84;
cityHallDomeAnchor.Altitude = 73;
GameObject domeCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
domeCube.transform.parent = cityHallDomeAnchor.transform;
Il n'est pas nécessaire d'utiliser le forçage de l'altitude disponible dans l'éditeur, car l'altitude est déjà spécifié conformément à la norme WGS84. Bien sûr, si la hauteur des tuiles de carte la géométrie de l'éditeur s'est avérée incorrecte par rapport au monde réel, vous pouvez toujours utiliser le remplacement de l'éditeur pour repositionner l'ancre dans la scène. vue.