Ce guide explique comment utiliser Geospatial Creator pour écrire des scripts C#
pour accomplir rapidement des tâches courantes, comme créer et déplacer
Objets ARGeospatialCreatorAnchor
en mode Édition d'Unity Cela peut être utile pour
créer plusieurs ancres à partir d'une liste prédéfinie telle qu'une feuille de calcul ou un fichier KML
.
Geospatial Creator dans Unity vous permet de prévisualiser du contenu Geospatial dans l'éditeur Unity. Notre Guide de démarrage rapide vous présente Geospatial Creator et vous explique comment créer votre premier Expérience de RA géospatiale avec un minimum de programmation à l'aide d'Unity de l'éditeur. 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 . 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 ayez un ensemble d'emplacements connus autour de l'hôtel de ville dans à San Francisco (Californie, États-Unis), où vous souhaitez placer votre 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 contiendra également un sous-composant CesiumGeoreference
et un élément
Objet enfant Cesium3DTileset
, qui permet à Cesium d'afficher l'environnement
dans la vue "Scene" (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 sont 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é par
l'exemple d'application Geospatial fourni avec les extensions ARCore, l'application Anchor
Le gestionnaire est associé à "Origine de la session de RA" GameObject. En supposant que vous avez
un seul gestionnaire d'ancres dans votre scène, vous pouvez y faire référence
ceci:
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
ARGeospatialCreatorAnchor
et attribue leurs propriétés aux
les 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;
}
Cela crée des ancres de relief à 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 le paramètre
l'altitude d'une ancre de relief, définissez la propriété Altitude
en mètres au-dessus ou en
sous le relief.
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
le 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 à l'aide d'une ancre WGS84, et non 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 dans l'éditeur s'est avérée incorrecte par rapport au monde réel, vous pouvez toujours utiliser le forçage de l'éditeur pour repositionner l'ancre dans la scène. vue.