Ten przewodnik opisuje, jak używać narzędzia Geospatial Creator do pisania skryptów C#
do szybkiego wykonywania typowych zadań, takich jak tworzenie i przenoszenie
ARGeospatialCreatorAnchor
obiektów w trybie edycji w Unity. Może to być przydatne dla:
tworząc wiele kotwic na podstawie wstępnie zdefiniowanej listy, np. arkusza kalkulacyjnego lub pliku KML
.
Twórca danych geoprzestrzennych w Unity pozwala wyświetlać podgląd treści geoprzestrzennych w Edytor Unity. Nasz krótki przewodnik przedstawia narzędzie Geospatial Creator oraz informacje o tym, jak środowisko AR z obsługą geoprzestrzenną z minimalną liczbą programowania przy użyciu środowiska Unity Interfejs edytora. W przypadku bardziej zaawansowanych projektów można utworzyć Obiekty gier twórców geoprzestrzennych są tworzone automatycznie, a nie w Unity. Interfejs edytora.
W tym przewodniku zakładamy, że znasz podstawowe pojęcia związane z twórcami geoprzestrzennymi przedstawione w krótkim wprowadzeniu, ale możesz już zacząć dodawać do nich funkcje geoprzestrzenne. Twórca zakotwicza daną scenę. Musisz mieć włączonego twórcę geoprzestrzennego skonfigurowane za pomocą kluczy interfejsu API oraz początkowych obiektów sesji AR w scena. Jeśli zaczynasz od zera, zapoznaj się z krótkim przewodnikiem w tym opcję „Włącz dane geoprzestrzenne” Twórca” zanim przejdziesz dalej.
Pierwsze kroki
Załóżmy dla przykładu, że masz zbiór znanych lokalizacji wokół ratusza w San Francisco, Kalifornia, USA, w którym chcesz umieścić treści AR. Ty utwórz obiekty zakotwiczone w każdej z tych lokalizacji, a potem do tych punktów zakotwiczenia.
Zanim utworzysz kotwice, musisz określić
ARGeospatialCreatorOrigin
, który jest punktem odniesienia do konwersji
szerokości i długości geograficznej oraz wysokości do i ze współrzędnych świata Unity.
Źródło będzie też zawierać podkomponent CesiumGeoreference
oraz
obiekt podrzędny Cesium3DTileset
, który umożliwia usłudze Cesium renderowanie otoczenia
w widoku sceny w edytorze Unity. Potrzebujesz do tego Map Google
Klucz interfejsu API Tiles zgodnie z opisem w
krótkiego wprowadzenia
Tworzenie punktu początkowego
Interfejs API dla twórców danych geoprzestrzennych zawiera metodę fabryczną do tworzenia
ARGeospatialCreatorOrigin
w scenie i dodaj wymagane komponenty Cez.
Ten kod tworzy punkt początkowy dla szerokości, długości geograficznej i pobliskiej długości i
wysokość i za pomocą danego klucza interfejsu API Tiles Map:
ARGeospatialCreatorOrigin origin =
GeospatialCreatorCesiumAdapter.CreateOriginWithCesiumGeoreference(
37.77954, -122.417581, 0.0, "<MAP_TILES_KEY>");
Domyślnie ten obiekt jest umieszczany w miejscach (0, 0, 0) we współrzędnych świata Unity, co dobrze sprawdza się w tym przykładzie.
Pobierz plik referencyjny: ARAnchorManager
ARAnchorManager
jest wymagane do rozwiązywania kotwic geoprzestrzennych w czasie działania, więc
potrzebujesz też odniesienia do ARAnchorManager
w scenie. Jeśli zaczęło się od
aplikacji Geospatial Sample w pakiecie z rozszerzeniami ARCore, Anchor
Menedżer jest połączony z „początkiem sesji AR” GameObject. Zakładając, że masz
tylko jeden menedżer kotwicy, możesz uzyskać do niego odniesienia, takie jak
to:
ARAnchorManager anchorManager =
Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];
Po utworzeniu punktu początkowego i menedżera kotwicy możesz zacząć tworzyć
ARGeospatialCreatorAnchor
obiekty.
Utwórz kotwice terenu
Przyjrzyjmy się poniższej dwuwymiarowej tablicy wartości double
, która reprezentuje
dokładna szerokość i długość geograficzna w trzech punktach po wschodniej stronie
Ratusz w San Francisco, Kalifornia, USA:
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
Załóżmy, że chcesz umieścić sześcian o długości 1 metra w każdej z tych lokalizacji, na ziemi
w naszej aplikacji AR. Ten kod tworzy
ARGeospatialCreatorAnchor
obiektów i przypisuje ich właściwości do
odpowiednie wartości:
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;
}
W każdym punkcie zostaną utworzone kotwice terenu. Twórca danych geoprzestrzennych automatycznie
umieszcza kotwice w odpowiednich współrzędnych świata Unity, obliczając ich wartości
w stosunku do obiektu ARGeospatialCreatorOrigin
. Aby dostosować
wysokość kotwicy terenu, ustaw właściwość Altitude
w metrach nad lub
pod powierzchnią terenu.
W trakcie działania kotwice terenu będą umieszczane na poziomie gruntu dla uruchomionej aplikacji.
przesunięcia przez właściwość Altitude
. W widoku sceny w edytorze są jednak
renderowane na wysokości WGS84 domyślnie 0, a nie w odniesieniu do kafelka 3D
geometrii. Często nie są tam, gdzie chcesz je widzieć, więc możesz zastąpić
domyślną wysokość reklamy zakotwiczonej w widoku sceny edytora, ustawiając wartość
właściwość UseEditorAltitudeOverride
do ustawienia true
i określanie wysokości w
Liczniki WGS84 za pomocą właściwości EditorAltitudeOverride
:
anchor.UseEditorAltitudeOverride = true;
anchor.EditorAltitudeOverride = -13.5; // WGS84 altitude at ground level for City Hall plaza
Te 2 właściwości nie mają wpływu poza trybem edytora i nie są skompilowane do działającej aplikacji.
Utwórz reklamę zakotwiczoną na dachu
Dla kolejnego kotwicy załóżmy, że chcesz umieścić reklamę zakotwiczoną na dachu miasta.
Hall. Kotwica można utworzyć dokładnie w ten sam sposób, z wyjątkiem elementu AltitudeType
właściwość jest ustawiona na 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;
Podobnie jak w przypadku elementów zakotwiczonych terenowych, wysokość dachu możesz dostosować
zakotwiczona w widoku sceny edytora za pomocą elementów UseEditorAltitudeOverride
i
Usługi: EditorAltitudeOverride
. W tym przykładzie wysokość WGS84
a dach wynosi około 10,7 metra.
Utwórz reklamę zakotwiczoną na określonej wysokości
Ostatni kotwica zostanie umieszczona na samej górze kopuły ratusza. Dla: dokładna wysokość jest ważna, więc musisz ją ustawić za pomocą reklamy zakotwiczonej WGS84, a nie zakotwiczenia terenu lub reklamy zakotwiczonej na dachu:
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;
Nie ma potrzeby zastępowania wysokości tylko w edytorze, ponieważ wysokość jest już określone zgodnie z normą WGS84. Oczywiście, jeśli wysokość kafelków mapy geometria w edytorze okazała się błędna w porównaniu ze światem rzeczywistym, można nadal użyć zastąpienia z edytora, aby zmienić położenie kotwicy w scenie widok.