Z tego przewodnika dowiesz się, jak używać Geospatial Creator do pisania skryptów C#, aby szybko wykonywać typowe czynności, takie jak tworzenie i przenoszenie obiektów ARGeospatialCreatorAnchor
w trybie edycji w Unity. Może to być przydatne do tworzenia wielu kotwic z użyciem zdefiniowanej wstępnie 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ć 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 w tych miejscach należy utworzyć obiekty zakotwiczone, a następnie 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 Geospatial Creator zawiera metodę fabryczną do tworzenia ARGeospatialCreatorOrigin
w scenie i dodawania wymaganych komponentów Cesium.
Poniższy kod tworzy punkt początkowy o zbliżonej szerokości geograficznej, długości geograficznej i wysokości oraz przy użyciu podanego klucza Map Tiles API:
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 referencję ARAnchorManager
ARAnchorManager
jest wymagany do rozwiązywania kotwic geoprzestrzennych w czasie działania, dlatego musisz też umieścić w scenie odniesienie do ARAnchorManager
. 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” Obiekt GameObject. Zakładając, że masz dokładnie 1 punkt kotwiczenia w scenie, możesz uzyskać do niego odwołanie w ten sposób:
ARAnchorManager anchorManager =
Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];
Teraz, gdy masz już źródło i menedżera kotwic, możesz zacząć tworzyć obiekty ARGeospatialCreatorAnchor
.
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ć w naszej aplikacji AR sześcian o boku 1 m w każdej z tych lokalizacji na poziomie gruntu. 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. Geospatial Creator automatycznie umieszcza kotwy w odpowiednich współrzędnych świata Unity, obliczając ich położenie względem 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ą one jednak domyślnie renderowane na wysokości 0 w układzie WGS84, a nie w układzie współrzędnych geometrii płytki 3D. 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. Kotwicę można utworzyć w ten sam sposób, z tym że w przypadku właściwości AltitudeType
ustawiono wartość 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 kotwic terenu, możesz dostosować wysokość kotwicy na dachu w widoku sceny w Edytorze za pomocą właściwości UseEditorAltitudeOverride
i 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. W przypadku tego kotwicy ważna jest dokładna wysokość, dlatego musisz ją ustawić wyraźnie, używając kotwicy WGS84 zamiast kotwicy terenu lub 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 trzeba używać zastąpienia wysokości dostępnego tylko w edytorze, ponieważ wysokość jest już określona zgodnie z 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.