1. Прежде чем начать
Geospatial Creator в Unity, работающий на основе ARCore и фотореалистичных 3D-плиток из платформы Google Карт, позволяет быстро создавать и визуализировать объекты дополненной реальности (AR) для заданной широты и долготы прямо в редакторе Unity. Это может значительно сократить время, необходимое для создания одной геолокированной AR-сцены для вашего приложения, но что делать, если вам нужно создать несколько похожих объектов в разных местах? Используя C# API в Geospatial Creator, вы также можете сделать это.
В этой лабораторной работе вы напишете код на C#, использующий Geospatial Creator и API Places платформы Google Карт для создания нескольких геопространственных объектов на основе исходного шаблона. Полученные объекты можно изучить и доработать в редакторе Unity перед компиляцией в приложение.

Предпосылки
- Базовые знания дополненной реальности
- Базовые знания геопространственного API ARCore
Чему вы научитесь
- Как использовать API в Geospatial Creator для создания и визуализации одного геолокационного опыта в нескольких местах.
- Как использовать API Places платформы Google Maps для поиска местоположений.
- Как запустить AR-приложение на вашем устройстве.
Что вам понадобится
2. Настройте свою среду
Чтобы использовать Geospatial Creator, вам необходимо настроить авторизацию для доступа к фотореалистичным 3D-плиткам, сервисам ARCore в Google Cloud и API Places из платформы Google Maps.
Настройте проект Google Cloud
Для этой практической работы требуется проект Google Cloud с включённым биллингом для доступа к API сервера Google. Для этой практической работы требуется настройка биллинга, но плата будет взиматься только в том случае, если проект превысит квоту бесплатных услуг.
Чтобы настроить проект в Google Cloud, выполните следующие действия:
- Создайте проект в консоли Google Cloud .

- В текстовом поле Имя проекта введите подходящее имя, например,
ARCore Geospatial Project, а затем выберите любое местоположение. - Нажмите «Создать» .
- В консоли Google Cloud на странице выбора проектов нажмите Создать проект .
- См. раздел Включение выставления счетов и ознакомьтесь с ценами на фотореалистичные 3D-плитки и ценами на API Places (новый) .
Включить API фрагментов карты
API плиток карт предоставляет фотореалистичные 3D-плитки, которые видны в редакторе Unity.
Включить API ARCore
API ARCore в Google Cloud позволяет получить доступ к API ARCore Geospatial на целевом устройстве.
Включить API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест, которые вы будете использовать в кодовой лаборатории для поиска связанных мест. Этот API предоставляет результаты поиска и географические координаты мест.
Создайте ключ API для вашего проекта
Чтобы использовать аутентификацию по ключу API для аутентификации вашего приложения в удаленных службах Google Cloud, выполните следующие действия:
- В консоли Google Cloud в разделе API и службы выберите Учетные данные .
- В верхней части страницы нажмите «Создать учетные данные» , а затем выберите «Ключ API» .
- Запишите ключ, он понадобится вам для следующих шагов.
Настройте программное обеспечение
Чтобы начать работу с программным обеспечением Geospatial Creator, выполните следующие действия:
- Клонируйте этот репозиторий .
- Скачайте Unity Hub и используйте его для установки Unity версии 2022.3. Убедитесь, что вы устанавливаете дополнительные инструменты сборки для Android или iOS.
- В Unity Hub нажмите Добавить > Добавить проект с диска .
- На панели «Иерархия» выберите AR Geospatial Creator Origin .
- В текстовое поле Google Maps Tile API Key вставьте ключ API, а затем нажмите
Enter(илиreturnв macOS).
- В разделе Редактировать > Настройки проекта > Управление подключаемыми модулями XR > Расширения ARCore используйте аутентификацию по ключу API для Android или iOS и вставьте ключ API.
- В меню Файл > Параметры сборки измените целевую платформу на Android или iOS.
3. Создайте свой первый якорь
В этой лабораторной работе вы создадите якорь дополненной реальности, который можно использовать в нескольких местах. В качестве примера вы используете публичные библиотеки Сан-Франциско, Калифорния, но вы можете использовать и места поблизости.
О компоненте Origin от Geospatial Creator
Для каждой сцены Unity, созданной с помощью Geospatial Creator, требуется ровно один Geospatial Creator Origin. Этот игровой объект служит точкой отсчёта для преобразования реальных значений широты, долготы и высоты в игровые координаты Unity.
В проекте-примере содержится Geospatial Creator Origin, который использует Cesium для рендеринга фотореалистичных 3D-плиток в представлении Scene редактора и позволяет вам точно визуализировать, где в мире будет отображаться ваш AR-контент.
Переместить начало координат
Переместите начало координат Geospatial Creator на широту и долготу филиала главной библиотеки Сан-Франциско.
Чтобы использовать встроенную интеграцию Geospatial Creator с API Places для автоматического перемещения источника в правильное место, выполните следующие действия:
- На панели «Иерархия» выберите игровой объект Geospatial Creator Origin .
- На панели «Инспектор» нажмите «Поиск местоположения» .
- В диалоговом окне поиска введите
San Francisco Public Library. Первым результатом должен быть адрес: 100 Larkin Street. - Нажмите «Применить к объектам» , чтобы применить результат поиска к исходной точке. Вы увидите, что широта и долгота исходной точки обновятся в соответствии с новыми координатами.

Добавьте якорь Geospatial Creator к сцене
Теперь, когда есть начало координат, добавьте якорь Geospatial Creator, используя GameObject > XR > AR Geospatial Creator Anchor . По умолчанию якорь будет совмещен с началом координат.
Используйте этот якорь для позиционирования нашего 3D-контента дополненной реальности. 3D-модель книги включена в пример проекта.
Чтобы разместить книгу в сцене, выполните следующие действия:
- На панели «Проект» перетащите модель «Книга» на панель представления «Редактор» .
- На панели «Иерархия» убедитесь, что « Книга» является дочерним объектом ранее созданного якоря. Любой дочерний игровой объект якоря Geospatial Creator будет позиционироваться относительно него.
- На панели «Иерархия» выберите « Книгу» . Задайте для её положения значения 0, 0, 0 .

При взгляде на эту модель в режиме редактора становится очевидно, что что-то не так: высота якоря по умолчанию находится ниже поверхности крыши библиотеки, тогда как он должен парить высоко над ней.
Хотя вы можете переместить объект в редакторе, чтобы найти примерную высоту WGS84, в этой ситуации предпочтительнее настраивать геопространственные якоря как якоря на крыше, чтобы их высота автоматически фиксировалась относительно крыши сооружения, над которым они находятся.
- Для этого откройте панель инспектора якоря и установите для свойства
Altitude TypeзначениеRooftop.

После этого обратите внимание, что высота якоря в окне редактора не изменится. Это связано с тем, что она определяется во время выполнения при определении якоря для якорей на крыше и рельефе. Чтобы визуализировать якорь на крыше в окне Scene , можно использовать кнопку «Привязать к плитке» . Это установит высоту якоря в соответствии с плиткой в окне Scene , не влияя на высоту решённого якоря во время выполнения.
- Чтобы модель парила над крышей библиотеки, а не покоилась на ней, измените параметр
Altitude relative to rooftopна 15 метров над крышей.
Теперь модель красиво парит над библиотекой!

Теперь ваш проект имеет полную сцену геопространственной дополненной реальности, включая все необходимые компоненты системы дополненной реальности, источник геопространственной реальности и один якорь с прикрепленной моделью.
Затем сделайте дубликаты якорей в дополнительных местах библиотеки.
4. Найдите новые якорные локации с помощью API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест. В этой лабораторной работе вы используете этот API для поиска других филиалов публичных библиотек Сан-Франциско и на основе полученных результатов создадите якорь Geospatial Creator для следующих десяти результатов поиска.
- Для начала выберите «Ресурсы» > «Скрипты» > «Редактор» и откройте файл
AnchorDuplicator.cs. Этот файл содержит шаблонный код, который поможет вам начать работу с API Places и анализировать его результаты.
Аутентификация с помощью API Places
- Найдите следующую строку в классе
AnchorDuplicator:private const string API_KEY = "<YOUR_API_KEY_HERE>"; - Замените <YOUR_API_KEY_HERE> на ключ, полученный на этапах настройки .
Запросите API Places по поисковому запросу
После завершения настройки авторизации API Places вы можете написать код, инициирующий запрос POST .
- Для этого найдите метод
CreatePlacesRequestи используйте следующее определение метода: Теперь при вызове метода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;CreatePlacesRequestсоздается запрос, который ищетsearchTermв окружности с центрамиlatиlon.
Проверьте свою работу
Прежде чем продолжить, необходимо убедиться, что вызовы API Places выполнены успешно.
- Запустите функции в редакторе Unity:
- В Google AR Codelab нажмите Выполнить запрос Places .
- Откройте консоль Unity. Вы должны увидеть результаты.

5. Программное добавление якорей к местам
Теперь, когда вы убедились, что API Places находит результаты, создайте новые якоря Geospatial Creator в каждом месте, указанном в результатах.
Создать пункт меню
- В классе
AnchorDuplicatorнайдите методCreateNewAnchorsFromPlacesи используйте следующее определение метода: Этот пункт меню проверяет ранее запущенный запрос и использует первый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; }ARGeospatialCreatorAnchorв вашей сцене в качестве прототипа для создания якорей, по одному на каждое место в результате API Places. - Для создания якорей используйте новый пункт меню «Создать новые якоря из ответа Places» в Google AR Codelab .
- На панели «Иерархия» должно появиться несколько якорей.
Проверьте положение якоря
Чтобы убедиться, что все активы закреплены в правильных местах перед запуском приложения, выполните следующие действия:
- Щелкните добавленный якорь на панели «Иерархия» .
- Нажмите F.
- Осмотрите якорь в представлении
Scene. - Если якорь находится в неправильном месте, нажмите Привязать к плитке или вручную измените значения
Latitude,LongitudeилиEditor Override Altitude.
6. Просмотр актива в дополненной реальности
Чтобы просмотреть актив в дополненной реальности на устройстве Android или iOS с поддержкой ARCore , выполните следующие действия.
- Нажмите Файл > Параметры сборки , а затем выберите платформу сборки Android или iOS .
- Нажмите «Сменить платформу» .
- Убедитесь, что ваше устройство разработки подключено и настроено для разработки.
- Нажмите «Создать и запустить» .
- Убедитесь, что приложение работает на вашем устройстве.
- Посетите места, где вы разместили контент. Если вы не меняли примеры, это публичные библиотеки Сан-Франциско.

7. Заключение
Поздравляем! Вы создали приложение Unity, использующее Geospatial Creator и API Places платформы Google Карт для создания множества геопространственных объектов на основе исходного шаблона. Надеемся, эти знания помогут вам расширить охват вашего контента в Geospatial Creator!
Узнать больше
1. Прежде чем начать
Geospatial Creator в Unity, работающий на основе ARCore и фотореалистичных 3D-плиток из платформы Google Карт, позволяет быстро создавать и визуализировать объекты дополненной реальности (AR) для заданной широты и долготы прямо в редакторе Unity. Это может значительно сократить время, необходимое для создания одной геолокированной AR-сцены для вашего приложения, но что делать, если вам нужно создать несколько похожих объектов в разных местах? Используя C# API в Geospatial Creator, вы также можете сделать это.
В этой лабораторной работе вы напишете код на C#, использующий Geospatial Creator и API Places платформы Google Карт для создания нескольких геопространственных объектов на основе исходного шаблона. Полученные объекты можно изучить и доработать в редакторе Unity перед компиляцией в приложение.

Предпосылки
- Базовые знания дополненной реальности
- Базовые знания геопространственного API ARCore
Чему вы научитесь
- Как использовать API в Geospatial Creator для создания и визуализации одного геолокационного опыта в нескольких местах.
- Как использовать API Places платформы Google Maps для поиска местоположений.
- Как запустить AR-приложение на вашем устройстве.
Что вам понадобится
2. Настройте свою среду
Чтобы использовать Geospatial Creator, вам необходимо настроить авторизацию для доступа к фотореалистичным 3D-плиткам, сервисам ARCore в Google Cloud и API Places из платформы Google Maps.
Настройте проект Google Cloud
Для этой практической работы требуется проект Google Cloud с включённым биллингом для доступа к API сервера Google. Для этой практической работы требуется настройка биллинга, но плата будет взиматься только в том случае, если проект превысит квоту бесплатных услуг.
Чтобы настроить проект в Google Cloud, выполните следующие действия:
- Создайте проект в консоли Google Cloud .

- В текстовом поле Имя проекта введите подходящее имя, например,
ARCore Geospatial Project, а затем выберите любое местоположение. - Нажмите «Создать» .
- В консоли Google Cloud на странице выбора проектов нажмите Создать проект .
- См. раздел Включение выставления счетов и ознакомьтесь с ценами на фотореалистичные 3D-плитки и ценами на API Places (новый) .
Включить API фрагментов карты
API плиток карт предоставляет фотореалистичные 3D-плитки, которые видны в редакторе Unity.
Включить API ARCore
API ARCore в Google Cloud позволяет получить доступ к API ARCore Geospatial на целевом устройстве.
Включить API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест, которые вы будете использовать в кодовой лаборатории для поиска связанных мест. Этот API предоставляет результаты поиска и географические координаты мест.
Создайте ключ API для вашего проекта
Чтобы использовать аутентификацию по ключу API для аутентификации вашего приложения в удаленных службах Google Cloud, выполните следующие действия:
- В консоли Google Cloud в разделе API и службы выберите Учетные данные .
- В верхней части страницы нажмите «Создать учетные данные» , а затем выберите «Ключ API» .
- Запишите ключ, он понадобится вам для следующих шагов.
Настройте программное обеспечение
Чтобы начать работу с программным обеспечением Geospatial Creator, выполните следующие действия:
- Клонируйте этот репозиторий .
- Скачайте Unity Hub и используйте его для установки Unity версии 2022.3. Убедитесь, что вы устанавливаете дополнительные инструменты сборки для Android или iOS.
- В Unity Hub нажмите Добавить > Добавить проект с диска .
- На панели «Иерархия» выберите AR Geospatial Creator Origin .
- В текстовое поле Google Maps Tile API Key вставьте ключ API, а затем нажмите
Enter(илиreturnв macOS).
- В разделе Редактировать > Настройки проекта > Управление подключаемыми модулями XR > Расширения ARCore используйте аутентификацию по ключу API для Android или iOS и вставьте ключ API.
- В меню Файл > Параметры сборки измените целевую платформу на Android или iOS.
3. Создайте свой первый якорь
В этой лабораторной работе вы создадите якорь дополненной реальности, который можно использовать в нескольких местах. В качестве примера вы используете публичные библиотеки Сан-Франциско, Калифорния, но вы можете использовать и места поблизости.
О компоненте Origin от Geospatial Creator
Для каждой сцены Unity, созданной с помощью Geospatial Creator, требуется ровно один Geospatial Creator Origin. Этот игровой объект служит точкой отсчёта для преобразования реальных значений широты, долготы и высоты в игровые координаты Unity.
В проекте-примере содержится Geospatial Creator Origin, который использует Cesium для рендеринга фотореалистичных 3D-плиток в представлении Scene редактора и позволяет вам точно визуализировать, где в мире будет отображаться ваш AR-контент.
Переместить начало координат
Переместите начало координат Geospatial Creator на широту и долготу филиала главной библиотеки Сан-Франциско.
Чтобы использовать встроенную интеграцию Geospatial Creator с API Places для автоматического перемещения источника в правильное место, выполните следующие действия:
- На панели «Иерархия» выберите игровой объект Geospatial Creator Origin .
- На панели «Инспектор» нажмите «Поиск местоположения» .
- В диалоговом окне поиска введите
San Francisco Public Library. Первым результатом должен быть адрес: 100 Larkin Street. - Нажмите «Применить к объектам» , чтобы применить результат поиска к исходной точке. Вы увидите, что широта и долгота исходной точки обновятся в соответствии с новыми координатами.

Добавьте якорь Geospatial Creator к сцене
Теперь, когда есть начало координат, добавьте якорь Geospatial Creator, используя GameObject > XR > AR Geospatial Creator Anchor . По умолчанию якорь будет совмещен с началом координат.
Используйте этот якорь для позиционирования нашего 3D-контента дополненной реальности. 3D-модель книги включена в пример проекта.
Чтобы разместить книгу в сцене, выполните следующие действия:
- На панели «Проект» перетащите модель «Книга» на панель представления «Редактор» .
- На панели «Иерархия» убедитесь, что « Книга» является дочерним объектом ранее созданного якоря. Любой дочерний игровой объект якоря Geospatial Creator будет позиционироваться относительно него.
- На панели «Иерархия» выберите « Книгу» . Задайте для её положения значения 0, 0, 0 .

При взгляде на эту модель в режиме редактора становится очевидно, что что-то не так: высота якоря по умолчанию находится ниже поверхности крыши библиотеки, тогда как он должен парить высоко над ней.
Хотя вы можете переместить объект в редакторе, чтобы найти примерную высоту WGS84, в этой ситуации предпочтительнее настраивать геопространственные якоря как якоря на крыше, чтобы их высота автоматически фиксировалась относительно крыши сооружения, над которым они находятся.
- Для этого откройте панель инспектора якоря и установите для свойства
Altitude TypeзначениеRooftop.

После этого обратите внимание, что высота якоря в окне редактора не изменится. Это связано с тем, что она определяется во время выполнения при определении якоря для якорей на крыше и рельефе. Чтобы визуализировать якорь на крыше в окне Scene , можно использовать кнопку «Привязать к плитке» . Это установит высоту якоря в соответствии с плиткой в окне Scene , не влияя на высоту решённого якоря во время выполнения.
- Чтобы модель парила над крышей библиотеки, а не покоилась на ней, измените параметр
Altitude relative to rooftopна 15 метров над крышей.
Теперь модель красиво парит над библиотекой!

Теперь ваш проект имеет полную сцену геопространственной дополненной реальности, включая все необходимые компоненты системы дополненной реальности, источник геопространственной реальности и один якорь с прикрепленной моделью.
Затем сделайте дубликаты якорей в дополнительных местах библиотеки.
4. Найдите новые якорные локации с помощью API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест. В этой лабораторной работе вы используете этот API для поиска других филиалов публичных библиотек Сан-Франциско и на основе полученных результатов создадите якорь Geospatial Creator для следующих десяти результатов поиска.
- Для начала выберите «Ресурсы» > «Скрипты» > «Редактор» и откройте файл
AnchorDuplicator.cs. Этот файл содержит шаблонный код, который поможет вам начать работу с API Places и анализировать его результаты.
Аутентификация с помощью API Places
- Найдите следующую строку в классе
AnchorDuplicator:private const string API_KEY = "<YOUR_API_KEY_HERE>"; - Замените <YOUR_API_KEY_HERE> на ключ, полученный на этапах настройки .
Запросите API Places по поисковому запросу
После завершения настройки авторизации API Places вы можете написать код, инициирующий запрос POST .
- Для этого найдите метод
CreatePlacesRequestи используйте следующее определение метода: Теперь при вызове метода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;CreatePlacesRequestсоздается запрос, который ищетsearchTermв окружности с центрамиlatиlon.
Проверьте свою работу
Прежде чем продолжить, необходимо убедиться, что вызовы API Places выполнены успешно.
- Запустите функции в редакторе Unity:
- В Google AR Codelab нажмите Выполнить запрос Places .
- Откройте консоль Unity. Вы должны увидеть результаты.

5. Программное добавление якорей к местам
Теперь, когда вы убедились, что API Places находит результаты, создайте новые якоря Geospatial Creator в каждом месте, указанном в результатах.
Создать пункт меню
- В классе
AnchorDuplicatorнайдите методCreateNewAnchorsFromPlacesи используйте следующее определение метода: Этот пункт меню проверяет ранее запущенный запрос и использует первый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; }ARGeospatialCreatorAnchorв вашей сцене в качестве прототипа для создания якорей, по одному на каждое место в результате API Places. - Для создания якорей используйте новый пункт меню «Создать новые якоря из ответа Places» в Google AR Codelab .
- На панели «Иерархия» должно появиться несколько якорей.
Проверьте положение якоря
Чтобы убедиться, что все активы закреплены в правильных местах перед запуском приложения, выполните следующие действия:
- Щелкните добавленный якорь на панели «Иерархия» .
- Нажмите F.
- Осмотрите якорь в представлении
Scene. - Если якорь находится в неправильном месте, нажмите Привязать к плитке или вручную измените значения
Latitude,LongitudeилиEditor Override Altitude.
6. Просмотр актива в дополненной реальности
Чтобы просмотреть актив в дополненной реальности на устройстве Android или iOS с поддержкой ARCore , выполните следующие действия.
- Нажмите Файл > Параметры сборки , а затем выберите платформу сборки Android или iOS .
- Нажмите «Сменить платформу» .
- Убедитесь, что ваше устройство разработки подключено и настроено для разработки.
- Нажмите «Создать и запустить» .
- Убедитесь, что приложение работает на вашем устройстве.
- Посетите места, где вы разместили контент. Если вы не меняли примеры, это публичные библиотеки Сан-Франциско.

7. Заключение
Поздравляем! Вы создали приложение Unity, использующее Geospatial Creator и API Places платформы Google Карт для создания множества геопространственных объектов на основе исходного шаблона. Надеемся, эти знания помогут вам расширить охват вашего контента в Geospatial Creator!
Узнать больше
1. Прежде чем начать
Geospatial Creator в Unity, работающий на основе ARCore и фотореалистичных 3D-плиток из платформы Google Карт, позволяет быстро создавать и визуализировать объекты дополненной реальности (AR) для заданной широты и долготы прямо в редакторе Unity. Это может значительно сократить время, необходимое для создания одной геолокированной AR-сцены для вашего приложения, но что делать, если вам нужно создать несколько похожих объектов в разных местах? Используя C# API в Geospatial Creator, вы также можете сделать это.
В этой лабораторной работе вы напишете код на C#, использующий Geospatial Creator и API Places платформы Google Карт для создания нескольких геопространственных объектов на основе исходного шаблона. Полученные объекты можно изучить и доработать в редакторе Unity перед компиляцией в приложение.

Предпосылки
- Базовые знания дополненной реальности
- Базовые знания геопространственного API ARCore
Чему вы научитесь
- Как использовать API в Geospatial Creator для создания и визуализации одного геолокационного опыта в нескольких местах.
- Как использовать API Places платформы Google Maps для поиска местоположений.
- Как запустить AR-приложение на вашем устройстве.
Что вам понадобится
2. Настройте свою среду
Чтобы использовать Geospatial Creator, вам необходимо настроить авторизацию для доступа к фотореалистичным 3D-плиткам, сервисам ARCore в Google Cloud и API Places из платформы Google Maps.
Настройте проект Google Cloud
Для этой практической работы требуется проект Google Cloud с включённым биллингом для доступа к API сервера Google. Для этой практической работы требуется настройка биллинга, но плата будет взиматься только в том случае, если проект превысит квоту бесплатных услуг.
Чтобы настроить проект в Google Cloud, выполните следующие действия:
- Создайте проект в консоли Google Cloud .

- В текстовом поле Имя проекта введите подходящее имя, например,
ARCore Geospatial Project, а затем выберите любое местоположение. - Нажмите «Создать» .
- В консоли Google Cloud на странице выбора проектов нажмите Создать проект .
- См. раздел Включение выставления счетов и ознакомьтесь с ценами на фотореалистичные 3D-плитки и ценами на API Places (новый) .
Включить API фрагментов карты
API плиток карт предоставляет фотореалистичные 3D-плитки, которые видны в редакторе Unity.
Включить API ARCore
API ARCore в Google Cloud позволяет получить доступ к API ARCore Geospatial на целевом устройстве.
Включить API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест, которые вы будете использовать в кодовой лаборатории для поиска связанных мест. Этот API предоставляет результаты поиска и географические координаты мест.
Создайте ключ API для вашего проекта
Чтобы использовать аутентификацию по ключу API для аутентификации вашего приложения в удаленных службах Google Cloud, выполните следующие действия:
- В консоли Google Cloud в разделе API и службы выберите Учетные данные .
- В верхней части страницы нажмите «Создать учетные данные» , а затем выберите «Ключ API» .
- Запишите ключ, он понадобится вам для следующих шагов.
Настройте программное обеспечение
Чтобы начать работу с программным обеспечением Geospatial Creator, выполните следующие действия:
- Клонируйте этот репозиторий .
- Скачайте Unity Hub и используйте его для установки Unity версии 2022.3. Убедитесь, что вы устанавливаете дополнительные инструменты сборки для Android или iOS.
- В Unity Hub нажмите Добавить > Добавить проект с диска .
- На панели «Иерархия» выберите AR Geospatial Creator Origin .
- В текстовое поле Google Maps Tile API Key вставьте ключ API, а затем нажмите
Enter(илиreturnв macOS).
- В разделе Редактировать > Настройки проекта > Управление подключаемыми модулями XR > Расширения ARCore используйте аутентификацию по ключу API для Android или iOS и вставьте ключ API.
- В меню Файл > Параметры сборки измените целевую платформу на Android или iOS.
3. Создайте свой первый якорь
В этой лабораторной работе вы создадите якорь дополненной реальности, который можно использовать в нескольких местах. В качестве примера вы используете публичные библиотеки Сан-Франциско, Калифорния, но вы можете использовать и места поблизости.
О компоненте Origin от Geospatial Creator
Для каждой сцены Unity, созданной с помощью Geospatial Creator, требуется ровно один Geospatial Creator Origin. Этот игровой объект служит точкой отсчёта для преобразования реальных значений широты, долготы и высоты в игровые координаты Unity.
В проекте-примере содержится Geospatial Creator Origin, который использует Cesium для рендеринга фотореалистичных 3D-плиток в представлении Scene редактора и позволяет вам точно визуализировать, где в мире будет отображаться ваш AR-контент.
Переместить начало координат
Переместите начало координат Geospatial Creator на широту и долготу филиала главной библиотеки Сан-Франциско.
Чтобы использовать встроенную интеграцию Geospatial Creator с API Places для автоматического перемещения источника в правильное место, выполните следующие действия:
- На панели «Иерархия» выберите игровой объект Geospatial Creator Origin .
- На панели «Инспектор» нажмите «Поиск местоположения» .
- В диалоговом окне поиска введите
San Francisco Public Library. Первым результатом должен быть адрес: 100 Larkin Street. - Нажмите «Применить к объектам» , чтобы применить результат поиска к исходной точке. Вы увидите, что широта и долгота исходной точки обновятся в соответствии с новыми координатами.

Добавьте якорь Geospatial Creator к сцене
Теперь, когда есть начало координат, добавьте якорь Geospatial Creator, используя GameObject > XR > AR Geospatial Creator Anchor . По умолчанию якорь будет совмещен с началом координат.
Используйте этот якорь для позиционирования нашего 3D-контента дополненной реальности. 3D-модель книги включена в пример проекта.
Чтобы разместить книгу в сцене, выполните следующие действия:
- На панели «Проект» перетащите модель «Книга» на панель представления «Редактор» .
- На панели «Иерархия» убедитесь, что « Книга» является дочерним объектом ранее созданного якоря. Любой дочерний игровой объект якоря Geospatial Creator будет позиционироваться относительно него.
- На панели «Иерархия» выберите « Книгу» . Задайте для её положения значения 0, 0, 0 .

При взгляде на эту модель в режиме редактора становится очевидно, что что-то не так: высота якоря по умолчанию находится ниже поверхности крыши библиотеки, тогда как он должен парить высоко над ней.
Хотя вы можете переместить объект в редакторе, чтобы найти примерную высоту WGS84, в этой ситуации предпочтительнее настраивать геопространственные якоря как якоря на крыше, чтобы их высота автоматически фиксировалась относительно крыши сооружения, над которым они находятся.
- Для этого откройте панель инспектора якоря и установите для свойства
Altitude TypeзначениеRooftop.

После этого обратите внимание, что высота якоря в окне редактора не изменится. Это связано с тем, что она определяется во время выполнения при определении якоря для якорей на крыше и рельефе. Чтобы визуализировать якорь на крыше в окне Scene , можно использовать кнопку «Привязать к плитке» . Это установит высоту якоря в соответствии с плиткой в окне Scene , не влияя на высоту решённого якоря во время выполнения.
- Чтобы модель парила над крышей библиотеки, а не покоилась на ней, измените параметр
Altitude relative to rooftopна 15 метров над крышей.
Теперь модель красиво парит над библиотекой!

Теперь ваш проект имеет полную сцену геопространственной дополненной реальности, включая все необходимые компоненты системы дополненной реальности, источник геопространственной реальности и один якорь с прикрепленной моделью.
Затем сделайте дубликаты якорей в дополнительных местах библиотеки.
4. Найдите новые якорные локации с помощью API Places
API Places платформы Google Карт позволяет получать данные о местоположении более 200 миллионов мест. В этой лабораторной работе вы используете этот API для поиска других филиалов публичных библиотек Сан-Франциско и на основе полученных результатов создадите якорь Geospatial Creator для следующих десяти результатов поиска.
- Для начала выберите «Ресурсы» > «Скрипты» > «Редактор» и откройте файл
AnchorDuplicator.cs. Этот файл содержит шаблонный код, который поможет вам начать работу с API Places и анализировать его результаты.
Аутентификация с помощью API Places
- Найдите следующую строку в классе
AnchorDuplicator:private const string API_KEY = "<YOUR_API_KEY_HERE>"; - Замените <YOUR_API_KEY_HERE> на ключ, полученный на этапах настройки .
Запросите API Places по поисковому запросу
После завершения настройки авторизации API Places вы можете написать код, инициирующий запрос POST .
- Для этого найдите метод
CreatePlacesRequestи используйте следующее определение метода: Теперь, когда называется метод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;CreatePlacesRequest, выполняется запрос, который ищетsearchTermв круге, сосредоточенном вокругlatиlon.
Проверьте свою работу
Прежде чем продолжить, вам нужно убедиться, что призывы к API мест успешны.
- Запустите функции в редакторе Unity:
- В Google AR CodeLab нажмите «Запустить места» .
- Откройте консоль единства. Вы должны увидеть результаты.

5. Программно добавлять якоря в места
Теперь, когда вы подтвердили, что места API находит результаты, создайте новые якоря с геопространственным создателем в каждом месте, указанном в результате результатов.
Создать пункт меню
- В классе
AnchorDuplicatorнайдите методCreateNewAnchorsFromPlacesи используйте следующее определение метода: Этот пункт меню проверяет ранее запущенный запрос и использует первый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; }ARGeospatialCreatorAnchorв вашей сцене в качестве прототипа для создания якоря, по одному на место в результате API. - Используйте новые создание новых якоря из пункта меню ответа в Google AR CodeLab, чтобы создать якоря.
- Вы должны увидеть несколько якоря на панели иерархии .
Проверьте позиции якоря
Чтобы убедиться, что все активы закреплены в правильных местах, прежде чем запустить приложение, выполните следующие действия:
- Нажмите на добавленный якорь на панели иерархии .
- Пресс ф .
- Осмотрите якорь в
Scene. - Если якорь не находится в правильном месте, нажмите Snap to Tile или вручную измените значения
Latitude,LongitudeилиEditor Override Altitude.
6. Посмотреть актив в AR
Чтобы просмотреть актив в AR на вашем устройстве Android или iOS, поддерживаемом Arcore , выполните эти шаги:
- Нажмите «Файл»> «Настройки сборки» , а затем выберите платформы Android или iOS Build.
- Щелкните платформу Switch .
- Убедитесь, что ваше устройство разработки подключено и настроено для разработки.
- Нажмите на сборку и запустите .
- Подтвердите, что приложение работает на вашем устройстве.
- Посетите места, где вы закрепили контент. Если вы не изменили примеры, места являются публичными библиотеками в Сан -Франциско.

7. Заключение
Поздравляю! Вы написали приложение Unity, которое использует GeoSpatial Creator, а платформа Google Maps помещает API для создания нескольких геопространственных опытов, используя начальный шаблон. Мы надеемся, что вы сможете использовать эти знания, чтобы расширить контент вашего геопространственного создателя!