ARCore Geospatial Creator для Unity позволяет предварительно просматривать геопространственный контент в редакторе Unity, отображая данные Google Maps в новом формате 3D-тайлов. Это помогает визуализировать, где контент будет размещен в реальном мире, во время разработки приложения.
Инструмент Geospatial Creator доступен в составе расширений ARCore Extensions for AR Foundation. В этом кратком руководстве показано, как использовать Geospatial Creator в Unity для добавления геопространственного контента дополненной реальности в демонстрационное приложение ARCore Geospatial Sample.
Если у вас уже есть приложение, которое вы хотели бы использовать вместо примера Geospatial, вам сначала нужно будет следовать нашему руководству для разработчиков Geospatial в Unity . После того, как ваше приложение будет настроено для использования Geospatial API, перейдите к шагу «Добавить необходимые зависимости» ниже и продолжите работу оттуда.
Предварительные требования
Следуйте инструкциям в разделе «Начало работы с расширениями ARCore для AR Foundation» , чтобы настроить среду Unity для создания приложений дополненной реальности.
Хотя расширения ARCore поддерживают более ранние версии Unity, для работы Geospatial Creator требуется Unity 2021.3 или более поздняя версия.
Авторизация API
Для использования ARCore Geospatial API и Google Map Tiles API вам потребуется настроить доступ к API.
API Google Map Tiles
API Map Tiles предоставляет трехмерное фотореалистичное представление поддерживаемых локаций. Мы будем использовать эти тайлы в редакторе Unity для предварительного просмотра области вокруг вашей сцены дополненной реальности.
Чтобы включить API и узнать больше о Map Tiles, посетите страницу API Map Tiles .
ARCore Geospaceial API
API ARCore Geospatial используется вашим приложением во время выполнения для создания геопространственных якорей и взаимодействия с ними.
Для активации геопространственных API настройте ARCore API в своем приложении. Вы можете использовать либо бесключевой (рекомендуется), либо авторизацию с помощью ключа API.
Расширьте функционал приложения Geopatial Sample.
В этом руководстве мы покажем вам, как использовать Geospatial Creator для добавления геопространственного контента в демонстрационное приложение ARCore Geospatial Sample.
Настройте геопространственный образец.
Для начала ознакомьтесь с примером приложения ARCore Geospatial Sample. В новом проекте Unity откройте менеджер пакетов Unity и выберите пакет ARCore Extensions. В панели сведений о менеджере пакетов разверните раздел Samples и импортируйте пример Geospatial Sample в свой проект Unity.
Перед запуском приложения необходимо включить функциональность ARCore и Geospatial в вашем проекте. Используйте меню «Редактировать» > «Настройки проекта...» > «Управление плагинами XR» . Установите флажки, чтобы включить поставщик плагинов ARCore для Android и/или поставщик плагинов ARKit для iOS.
Затем в меню «Редактировать» > «Настройки проекта...» > «Управление плагинами XR» откройте панель «Расширения ARCore» . Убедитесь, что флажок «Геопространственные данные» установлен (пока включать Geospatial Creator не нужно), и введите свои учетные данные API. Дополнительные сведения см. в документации «Включение геопространственного API Unity» для Android и iOS .
Для любого приложения Unity, использующего ARCore, требуется еще несколько настроек проигрывателя, специфичных для конкретной платформы. Необходимые изменения описаны в разделе « Настройка параметров проигрывателя» нашей документации.
На данном этапе в вашей сцене нет игровых объектов, кроме тех, которые необходимы для запуска геопространственного примера. Это подходящий момент для сборки и запуска приложения. При правильной настройке во время выполнения приложение будет отображать изображение с камеры вашего устройства. По мере вашего перемещения геопространственная точность, отображаемая в верхней части экрана, начнет улучшаться. Касаясь экрана, вы будете создавать геопространственные якоря, которые будут оставаться в своих исходных положениях во время вашего перемещения.
Далее мы покажем, как использовать Geospatial Creator для создания и визуализации сложного контента дополненной реальности прямо в редакторе Unity. Этот контент будет отображаться в вашем приложении в определенных точках мира по широте и долготе.
Добавьте необходимые зависимости
Geospatial Creator использует сторонний пакет Unity под названием Cesium для отображения тайлов Google Maps в окне сцены редактора Unity. Прежде чем включить функции Geospatial Creator, добавим пакет Cesium в ваш проект.
Мы рекомендуем установить последнюю версию пакета Cesium for Unity со страницы Cesium на GitHub:
- Загрузите последнюю версию предварительно скомпилированного
.tgzпакета Cesium for Unity со страницы релизов на GitHub . Рекомендуемая текущая версия пакета Cesium for Unity — 1.1.0. - Откройте менеджер пакетов Unity, щелкнув по меню «Окно» в Unity, а затем выбрав «Менеджер пакетов».
- Нажмите на значок «+» и выберите «Добавить пакет из архива tar».
- Выберите файл Cesium for Unity .tgz, загруженный на шаге 1.
- Возможно, вам будет предложено установить дополнительные зависимости, такие как Text Mesh Pro.

Включить создатель геопространственных данных
Теперь вы готовы активировать инструмент создания геопространственных данных:
- В диалоговом окне «Настройки сборки» убедитесь, что выбрана платформа «Android» или «iOS». Функции Geospatial Creator в настоящее время недоступны для других платформ.
- Перейдите в раздел «Настройки проекта» > «Управление плагинами XR» > «Расширения ARCore» .
- Если вы не указали ключи API ARCore для Android и/или iOS на предыдущем шаге, обязательно сделайте это сейчас.
- Включите оба переключателя: «Геопространственные данные» и «Создатель геопространственных данных». После включения переключателя «Создатель геопространственных данных» отобразится немодальный мастер, который подтвердит совместимость вашего проекта с «Создателем геопространственных данных».
- Нажмите кнопку «Готово» в мастере.
После завершения работы мастера Unity запустит компиляцию ваших скриптов. Дождитесь завершения перекомпиляции, прежде чем продолжить. (Если выбранная вами платформа не "Android" или "iOS", переключитесь на одну из этих платформ сейчас.)
Добавьте точку отсчета в Geopatient Creator с помощью фрагментов карты.
Для вашей сцены необходим ровно один объект "Geospatial Creator Origin". Этот объект используется в качестве опорной точки для преобразования реальных значений широты, долготы и высоты в игровые координаты Unity.
Чтобы добавить точку начала координат Geospatial Creator Origin в вашу сцену, выберите Game Object > XR > Geospatial Creator Origin . Для нового объекта требуется геопривязка, которая связывает определенные широту, долготу и высоту с положением точки начала координат в игровых координатах. В панели инспектора точки начала координат Geospatial Creator Origin добавьте геопривязку, нажав кнопку Add Cesium Georeference Component .

Помимо того, что Cesium Georeference служит точкой отсчета для ваших AR-объектов, он также добавляет в сцену объект Cesium 3D Tileset. Этот объект будет отображать тайлы Google Maps в окне просмотра сцены редактора, позволяя вам точно визуализировать, где в мире будет отображаться ваш AR-контент. В инспекторе Geospatial Creator Origin есть поле для добавления ключа API Map Tiles, который вы настроили ранее . После установки этого ключа вы должны увидеть загрузку тайлов карты в окне просмотра сцены.
Теперь измените поля широты, долготы и высоты, чтобы они располагались рядом с тем местом, где вы хотите, чтобы контент дополненной реальности появлялся в вашем приложении.
Теперь в редакторе в окне «Сцена» должны отображаться тайлы карты в указанных координатах широты и долготы. Во время выполнения предполагается, что ваше приложение будет использовать AR-камеру, поэтому Geospatial Creator уже настроил объект Cesium 3D Map Tileset с тегом "EditorOnly". Из-за этого тайлы не будут загружаться или отображаться во время выполнения в вашей игре. Это можно изменить в инспекторе объекта Cesium3DTileset. Чтобы узнать больше о геопривязке и игровых объектах 3D-тайлов Cesium, обратитесь к документации Cesium для Unity .
Добавьте и разместите якорь Geopatial Creator.
Теперь вы готовы разместить AR-контент в своей сцене! Щелкните GameObject > XR > Geospatial Creator Anchor, чтобы добавить якорь в иерархию вашей сцены. В инспекторе якоря вы можете указать точные широту, долготу и высоту. Преобразование объекта немедленно обновится до правильного положения в вашей сцене, и вы сможете точно увидеть, где в мире появится объект.

При точной настройке широты и долготы якорной точки выберите место поблизости, чтобы иметь возможность проверить ее правильность во время выполнения. При установке высоты якорной точки Geospatial Creator у вас есть три варианта:
- Параметр «Рельеф» размещает якорь на уровне земли на указанных широте и долготе. Уровень земли определяется во время выполнения системой визуального позиционирования . Если вы новичок в геопространственных API ARCore, «Рельеф» — хороший выбор, поскольку якорь будет расположен непосредственно на земле с высокой степенью вертикальной точности. Поле «Смещение по высоте» позволяет расположить якорь выше или ниже уровня земли на фиксированное значение в метрах. Например, указание смещения «1,0» приведет к тому, что якорь будет «парить» на один метр над рельефом.
- Функция «Крыша» размещает якорь относительно вершины любой конструкции на заданных широте и долготе. Как и в случае с якорем для рельефа местности, поле «Смещение по высоте» позволяет перемещать якорь вверх или вниз относительно положения на крыше в метрах.
- Система координат WGS84 устанавливает якорь на определенной абсолютной высоте в метрах на основе этой системы. Размещение объекта таким образом может потребовать проб и ошибок, поскольку высота «0» в WGS84 не обязательно указывает на средний уровень моря и может не совпадать с высотой, определяемой GPS. Кроме того, хотя широта и долгота отображаемых 3D-тайлов очень точны, попытка разместить объект на уровне земли, используя 3D-тайлы в качестве ориентира, может привести к ошибке в определении высоты до нескольких метров.
Чтобы узнать больше о различных типах геопространственных якорей ARCore, обратитесь к Руководству разработчика геопространственных решений .
Как для якорных точек рельефа, так и для точек на крыше имеется поле WGS84 Altitude . Это значение используется только в режиме редактора для установки высоты объекта в окне просмотра сцены. Высоты рельефа и крыши определяются только во время выполнения, поэтому поле WGS84 Altitude позволяет визуализировать якорную точку на определенной высоте во время разработки приложения. Поле WGS84 Altitude игнорируется во время выполнения для якорных точек рельефа и крыши.
Добавьте геометрию к привязке
Если вы сейчас соберете и запустите приложение, вы не увидите якорь в своем приложении с поддержкой дополненной реальности. Это потому, что к нему не прикреплена геометрия. Давайте добавим к якорю простой 3D-примитив: в иерархии сцены щелкните правой кнопкой мыши по объекту Anchor в AR Geospatial Creator. В контекстном меню выберите 3D-объект > Куб . В окне сцены вы должны увидеть серый куб, являющийся дочерним элементом вашего якоря. Если вы решите изменить положение или вращение объекта в редакторе, мы рекомендуем перемещать корневой объект Anchor, а не дочерний примитив Cube. Это поможет уменьшить ошибку при преобразовании широты/долготы в игровые координаты.

Конечно, к якорю можно добавлять и более сложную геометрию, а также произвольные компоненты и дочерние элементы.
Создайте и запустите свое приложение.
Пришло время увидеть свой якорь в реальном мире! Попробуйте создать и запустить свое приложение, а затем переместитесь в то место, где вы ожидаете увидеть куб. Он там? Поздравляем, вы готовы создавать более сложные AR-приложения с помощью Geospatial Creator!
Если у вас возникнут какие-либо проблемы, обратитесь к Руководству по устранению неполадок .
Сейчас самое время добавить дополнительные якоря для создания геопространственных данных в дополненной реальности с различной геометрией. Попробуйте поэкспериментировать с несколькими якорями на крышах и участках местности, а также с их смещениями. Добавьте скрипты для анимации или включения взаимодействия с объектами.
Понимание опорных точек Geospatial Creator и класса ARGeospatialAnchor
При создании сложных и интерактивных AR-приложений полезно понимать взаимосвязь между якорями Geospatial Creator и классом ARGeospatialAnchor из библиотеки ARCore на языке C#:
Объект ARGeospatialAnchor можно создать только во время выполнения, вызвав одну из функций объекта ARAnchorManager , и только после стабилизации сеанса дополненной реальности. Объект Geospatial Creator Anchor можно рассматривать как заполнитель, существующий в вашей сцене и ожидающий готовности сеанса дополненной реальности к разрешению объектов ARGeospatialAnchor . Как только сеанс будет готов, заполнитель автоматически вызовет ARAnchorManager для создания и разрешения объекта ARGeospatialAnchor .
Сразу после разрешения привязки во время выполнения, объект Geospatial Creator Anchor в иерархии сцены прикрепится к новому GameObject в качестве дочернего элемента. Это означает, что любые компоненты или дочерние элементы Geospatial Creator Anchor станут субкомпонентами или внуками нового GameObject ARGeospatialAnchor . Например, transform геометрического примитива, прикрепленного к Geospatial Creator Anchor, унаследует transform от ARGeospatialAnchor и, следовательно, будет размещено в ожидаемом месте в сеансе дополненной реальности во время выполнения.
Если вам необходимо идентифицировать конкретные игровые объекты ARGeospatialAnchor во время выполнения, вы можете выполнить поиск в сцене объектов, свойство name которых соответствует якорю, созданному с помощью Geospatial Creator. Если сессия дополненной реальности инициализирована, parent этого объекта будет соответствующий объект ARGeospatialAnchor .
Поиск неисправностей
Почему мой якорь смещается?
Вы можете заметить, особенно при первом запуске приложения, что якорь может медленно «смещаться» или даже резко подпрыгивать на несколько метров. Это происходит, когда сессия VPS еще определяет и уточняет точное местоположение камеры. По мере повышения горизонтальной и вертикальной точности на протяжении нескольких кадров якорь перерисовывается в более точном месте, создавая иллюзию движения. Возможно, вы захотите отображать объект по-другому (или вообще не отображать его), пока точность определения местоположения не достигнет определенного порога. Для этого вы можете запросить свойство ARCoreEarthManager.CameraGeospatialPose , чтобы определить точность для текущего обновления кадра.
Почему мой якорь отображается на неправильной высоте?
При использовании типа высоты «Ручная» для якорей Geospatial Creator, высота якоря будет устанавливаться (в метрах) в соответствии со стандартом WGS84 . В данном месте может наблюдаться расхождение до нескольких метров между видимым уровнем земли, отображаемым на фрагментах карты, и фактическим уровнем земли, сообщаемым системой визуального позиционирования Google (VPS) . Если во время выполнения геопространственный якорь оказывается расположен неправильно, мы рекомендуем проверить высоту VPS лично, используя отладочное наложение в примере приложения. Затем вы можете изменить высоту в редакторе Unity, чтобы она соответствовала известной высоте VPS в этом месте.
В окне просмотра сцены редактора фрагменты карты отображаются некорректно.
Если Cesium3DTileset загружает тайлы, но в окне сцены они отображаются сплошным пурпурным цветом, добавьте в свой проект пакет Shader Graph от Unity. Этот пакет необходим для Cesium, хотя проекты, использующие встроенный рендерер Unity, по умолчанию его не включают.
Чтобы добавить Shader Graph, откройте менеджер пакетов Unity ( Окно > Менеджер пакетов ). Убедитесь, что вы просматриваете пакеты, доступные в реестре пакетов Unity, выбрав «Пакеты: Реестр Unity» в выпадающем меню в верхней части окна менеджера пакетов. Найдите пакет com.unity.shadergraph и установите последнюю версию. После загрузки пакета 3D-тайлы должны перезагрузиться и корректно отображаться в окне сцены.
В режиме реального времени приложение отображает черный экран вместо изображения с камеры.
Универсальный конвейер рендеринга Unity (URP) по умолчанию не настроен для AR-камеры. Если во время выполнения вы видите черный экран вместо изображения с камеры, вам необходимо добавить AR Background Renderer Feature к каждому рендереру URP в вашей сцене.

Чтобы добавить эту функцию, найдите в своем проекте параметр "renderer". Для каждого объекта URP Renderer нажмите кнопку "Добавить функцию рендеринга" в инспекторе и добавьте AR Background Renderer.
Почему кажется, что анкеры, установленные далеко от точки крепления, размещены неправильно?
Преобразование координат из системы WGS84 в игровые координаты Unity может быть подвержено ошибкам из-за точности вычислений с плавающей запятой, которые можно свести к минимуму, убедившись, что ваша точка отсчета находится близко к точкам привязки AR. Расстояния более 20 км могут привести к неточностям. Мы рекомендуем использовать несколько сцен с уникальной точкой привязки в каждой сцене, если ваша AR-игра охватывает большие расстояния.