Начало работы с Geospatial Creator в Unity

ARCore Geospatial Creator для Unity позволяет просматривать геопространственный контент в редакторе Unity, отображая данные Google Maps в новом формате 3D-листов. Это поможет вам визуализировать, где в реальном мире будет размещен контент, пока вы создаете свое приложение.

Geospatial Creator доступен как часть ARCore Extensions for AR Foundation. В этом кратком руководстве показано, как использовать Geospatial Creator в Unity для добавления геопространственного контента дополненной реальности в приложение ARCore Geospatial Sample.

Если у вас есть существующее приложение, которое вы хотите использовать вместо Geospatial Sample, вам сначала необходимо следовать нашему руководству разработчика геопространственных данных для Unity . После того, как ваше приложение настроено для использования Geospatial API, перейдите к шагу «Добавить необходимые зависимости» ниже и продолжайте с него.

Предварительные условия

Следуйте инструкциям «Начало работы с расширениями ARCore для AR Foundation», чтобы настроить среду Unity для создания AR-приложений.

Хотя расширения ARCore поддерживают более ранние версии Unity, для Geospatial Creator требуется Unity 2021.3 или новее.

API-авторизация

Вам необходимо настроить доступ к API для использования ARCore Geospatial API и API Google Map Tiles.

API плиток карты Google

API Map Tiles обеспечивает фотореалистичное трехмерное представление поддерживаемых местоположений. Мы будем использовать эти плитки в редакторе Unity для предварительного просмотра области вокруг вашей AR-сцены.

Посетите страницу API плиток карты , чтобы включить API и узнать больше о плитках карты.

Геопространственный API ARCore

ARCore Geospatial API используется вашим приложением во время выполнения для создания геопространственных привязок и взаимодействия с ними.

Чтобы включить геопространственные API, настройте API ARCore в своем приложении. Вы можете использовать методы авторизации без ключа (рекомендуется) или ключ API.

Расширение приложения Geospatial Sample

В этом руководстве мы покажем вам, как использовать Geospatial Creator для добавления геопространственного контента в приложение ARCore Geospatial Sample.

Настройте геопространственную выборку

Сначала ознакомьтесь с приложением ARCore Geospatial Sample. В новом проекте Unity откройте диспетчер пакетов Unity и выберите пакет ARCore Extensions. На панели сведений «Диспетчер пакетов» разверните «Образцы» и импортируйте геопространственный образец в свой проект Unity.

Перед запуском приложения вы должны включить в своем проекте функции ARCore и Geospatial. Используйте «Правка» > «Настройки проекта...» > «Управление подключаемыми модулями XR» . Установите соответствующие флажки, чтобы включить поставщика подключаемых модулей ARCore для Android и/или поставщика подключаемых модулей ARKit для iOS.

Затем в меню «Правка» > «Настройки проекта...» > «Управление плагинами XR» откройте панель «Расширения ARCore» . Убедитесь, что установлен флажок «Geospatial» (пока вам не нужно включать Geospatial Creator) и введите свои учетные данные API. Дополнительные сведения см. в документации «Включение API Geospatial Unity» для Android и iOS .

Существует несколько других настроек проигрывателя, зависящих от платформы, которые необходимы для любого приложения Unity, использующего ARCore. Необходимые изменения см. в разделе «Настройка параметров проигрывателя» нашей документации.

На данный момент в вашей сцене нет игровых объектов, кроме тех, которые необходимы для запуска Geospatial Sample. Сейчас подходящее время для создания и запуска приложения. Если настроено правильно, во время выполнения приложение будет отображать вид с камеры вашего устройства. По мере вашего перемещения геопространственная точность, отображаемая в верхней части экрана, начнет улучшаться. Нажав на экран, вы создадите геопространственные привязки, которые будут сохраняться в исходном месте во время вашего перемещения.

Далее мы покажем, как использовать Geospatial Creator для создания и визуализации сложного AR-контента из редактора Unity. Этот контент появится в вашем приложении в определенных местах по широте и долготе мира.

Добавьте необходимые зависимости

Geospatial Creator использует сторонний пакет Unity под названием Cesium для рендеринга фрагментов карты Google в окне сцены редактора Unity. Прежде чем включать функции Geospatial Creator, давайте добавим пакет Cesium в ваш проект.

Мы рекомендуем установить последнюю версию пакета Cesium для Unity со страницы Cesium на GitHub:

  1. Загрузите самую последнюю версию предварительно скомпилированного .tgz Cesium для Unity со страницы выпусков GitHub . Текущая рекомендуемая версия пакета Cesium for Unity — 1.1.0.
  2. Откройте диспетчер пакетов Unity, щелкнув меню «Окно» Unity, затем выбрав «Диспетчер пакетов».
  3. Нажмите значок «+» и выберите «Добавить пакет из архива».
  4. Выберите файл Cesium for Unity .tgz, загруженный на шаге 1.
  5. Вам может быть предложено установить дополнительные зависимости, такие как Text Mesh Pro.

Add a .tgz package with Unity Package Manager

Включить Geospatial Creator

Теперь вы готовы включить Geospatial Creator:

  1. В диалоговом окне «Настройки сборки» убедитесь, что выбрана платформа «Android» или «iOS». В настоящее время функции Geospatial Creator недоступны для других платформ.
  2. Перейдите в «Настройки проекта» > «Управление плагинами XR» > «Расширения ARCore» .
  3. Если вы не установили ключи API ARCore для Android и/или iOS на предыдущем этапе, обязательно сделайте это сейчас.
  4. Включите переключатели «Геопространственные данные» и «Создатель геопространственных данных». После нажатия кнопки включения переключателя Geospatial Creator отобразится немодальный мастер для подтверждения совместимости вашего проекта с Geospatial Creator.
  5. Нажмите «Готово» в мастере.

После завершения работы мастера Unity запустит компиляцию ваших скриптов. Прежде чем продолжить, дождитесь завершения перекомпиляции. (Если выбранная вами платформа не «Android» или «iOS», переключитесь на одну из них сейчас.)

Добавьте источник Geospatial Creator с фрагментами карты

Вашей сцене нужен ровно один объект «Geospatial Creator Origin». Этот объект используется в качестве опорной точки для преобразования реальных значений широты, долготы и высоты в координаты игры Unity.

Чтобы добавить в сцену начало координат Geospatial Creator, выберите Game Object > XR > Origin Geospatial Creator . Вновь созданному объекту требуется географическая привязка, которая связывает определенную широту, долготу и высоту с положением источника в игровых координатах. На панели инспектора Geospatial Creator Origin добавьте географическую привязку, нажав кнопку «Добавить компонент цезиевой геопривязки ».

Add the Geospatial Creator Origin GameObject

Помимо того, что Cesium Georeference является опорной точкой для ваших объектов AR, он добавляет на сцену объект Cesium 3D Tileset. Этот объект будет отображать плитки карты Google в представлении сцены редактора, позволяя вам визуализировать, где именно в мире появится ваш AR-контент. В инспекторе Geospatial Creator Origin есть поле для добавления ключа Map Tiles API, который вы настроили ранее . После установки этого ключа вы должны увидеть загрузку фрагментов карты в представлении «Сцена».

Теперь измените поля широты, долготы и высоты так, чтобы они располагались рядом с тем местом, где вы хотите, чтобы контент AR отображался в вашем приложении.

В представлении сцены в редакторе теперь должны отображаться фрагменты карты на заданной широте и долготе вашего источника. Мы предполагаем, что во время выполнения ваше приложение будет использовать камеру AR, поэтому Geospatial Creator уже настроил объект Tileset Cesium 3D Map с тегом «EditorOnly». По этой причине плитки не будут загружаться или отображаться во время выполнения вашей игры. Это можно изменить в инспекторе объекта Cesium3DTileset. Чтобы узнать больше о географической привязке Cesium и игровых объектах 3D Tileset, обратитесь к документации Cesium for Unity .

Добавьте и разместите привязку Geospatial Creator

Теперь вы готовы разместить AR-контент на своей сцене! Нажмите GameObject > XR > Привязка Geospatial Creator , чтобы добавить привязку к иерархии сцен. В инспекторе якоря вы можете указать точную широту, долготу и высоту. Трансформация объекта немедленно обновится до правильного положения в вашей сцене, и вы сможете точно увидеть, где в мире появится объект.

Add the Geospatial Creator Anchor

Выполняя точную настройку широты и долготы привязки, выберите место поблизости, чтобы вы могли убедиться, что оно находится в правильном месте во время выполнения. При настройке высоты якоря Geospatial Creator у вас есть три варианта:

  • Terrain размещает якорь на уровне земли на указанной широте и долготе. Уровень земли определяется во время выполнения системой визуального позиционирования . Если вы новичок в геопространственных API ARCore, «Terrain» — хороший выбор, поскольку привязка будет определяться непосредственно на земле с высокой степенью вертикальной точности. Поле «Смещение высоты» позволяет расположить якорь выше или ниже уровня земли на фиксированную величину в метрах. Например, если указать смещение «1,0», привязка будет «плавать» на один метр над поверхностью местности.
  • Rooftop размещает якорь относительно вершины любой конструкции на заданной широте и долготе. Как и привязку к местности, поле «Смещение высоты» позволяет перемещать привязку вверх или вниз относительно положения крыши в метрах.
  • WGS84 размещает якорь на определенной абсолютной высоте в метрах на основе системы координат WGS84. Размещение объекта таким образом может потребовать некоторых проб и ошибок, поскольку высота «0» в WSG84 не обязательно указывает средний уровень моря и может не соответствовать высоте GPS. Кроме того, хотя широта и долгота визуализированных 3D-плиток очень точны, попытка разместить объект на уровне земли с использованием 3D-плиток в качестве ориентира может привести к ошибке высоты до нескольких метров.

Чтобы узнать больше о различных типах геопространственных привязок ARCore, обратитесь к Руководству разработчика геопространственных данных .

Якоря на местности и на крыше имеют поле высоты WGS84 . Это значение используется только в режиме редактора для установки высоты объекта в представлении сцены. Высота местности и крыши определяется только во время выполнения, поэтому поле высоты WGS84 позволяет визуализировать якорь на определенной высоте во время разработки приложения. Поле высоты WGS84 игнорируется во время выполнения для привязок к местности и крышам.

Добавьте геометрию к якорю

Если вы создадите и запустите приложение сейчас, вы не увидите привязку в приложении с поддержкой AR. Это потому, что к нему не привязана никакая геометрия. Давайте добавим к привязке простой 3D-примитив: в иерархии сцены щелкните правой кнопкой мыши объект привязки AR Geospatial Creator. В контекстном меню выберите «3D-объект» > «Куб» . Вы должны увидеть серый куб в представлении сцены как дочерний элемент вашего якоря. Если вы решите изменить положение или вращение объекта в Редакторе, мы рекомендуем переместить корневой объект «Якорь» вместо дочернего примитива «Куб». Это поможет уменьшить ошибку при переводе широты/долготы в игровые координаты.

A Geospatial Creator Anchor with a Cube primitive

Конечно, вы также можете добавить к якорю более сложную геометрию, а также произвольные компоненты и дочерние элементы.

Создайте и запустите свое приложение

Пришло время увидеть свой якорь в реальном мире! Попробуйте создать и запустить свое приложение, а затем перейдите в то место, где вы ожидаете увидеть куб. Это там? Поздравляем, вы готовы создавать более сложные AR-приложения с помощью Geospatial Creator!

Если у вас возникли проблемы, обратитесь к Руководству по устранению неполадок .

Сейчас самое время добавить дополнительные якоря AR Geospatial Creator с различной геометрией. Попробуйте поэкспериментировать с несколькими якорями на крыше и местности и их смещениями. Добавьте сценарии для анимации или обеспечения взаимодействия с объектами.

Понимание привязок Geospatial Creator и класса ARGeospatialAnchor

При создании сложных и интерактивных AR-приложений полезно понимать взаимосвязь между Geospatial Creator Anchors и классом C# ARCore ARGeospatialAnchor :

ARGeospatialAnchor может быть создан только во время выполнения путем вызова одной из функций ARAnchorManager , и они могут быть созданы только после стабилизации сеанса AR. Привязку Geospatial Creator можно рассматривать как заполнитель, который существует в вашей сцене и ожидает, пока сеанс AR будет готов к разрешению объектов ARGeospatialAnchor . Как только сеанс будет готов, заполнитель автоматически вызовет ARAnchorManager для создания и разрешения ARGeospatialAnchor .

Сразу после разрешения привязки времени выполнения привязка Geospatial Creator в иерархии вашей сцены прикрепится как дочерний элемент к новому GameObject. Это означает, что любые компоненты или дочерние элементы Geospatial Creator Anchor станут подкомпонентами или внуками нового игрового объекта ARGeospatialAnchor . Например, transform примитива геометрии, прикрепленного к привязке Geospatial Creator, будет унаследовано от transform ARGeospatialAnchor и, следовательно, будет помещено в ожидаемое место в сеансе AR во время выполнения.

Если вам необходимо идентифицировать определенные игровые объекты ARGeospatialAnchor во время выполнения, вы можете выполнить поиск в сцене объектов, свойство name которых соответствует привязке, созданной с помощью Geospatial Creator. Если сеанс AR инициализирован, parent объектом этого объекта будет соответствующий объект ARGeospatialAnchor .

Поиск неисправностей

Почему мой якорь движется?

Вы можете заметить, особенно при первом запуске приложения, что якорь может медленно «дрейфовать» или даже резко подпрыгивать на несколько метров. Это происходит, когда сеанс VPS все еще определяет и уточняет точное местоположение камеры. По мере того, как точность по горизонтали и вертикали улучшается на протяжении нескольких кадров, привязка перерисовывается в более точном месте, создавая иллюзию движения. Возможно, вы захотите визуализировать объект по-другому (или не визуализировать вообще), пока точность определения местоположения не достигнет определенного порога. Для этого вы можете запросить свойство ARCoreEarthManager.CameraGeospatialPose , чтобы определить точность текущего обновления кадра.

Почему мой якорь отображается на неправильной высоте?

При использовании типа высоты «Вручную» для привязок Geospatial Creator высота привязки будет установлена ​​(в метрах) в соответствии с WGS84 . В определенном месте может быть расхождение до нескольких метров между видимым уровнем земли, показанным на фрагментах карты, и фактическим уровнем земли, сообщаемым системой визуального позиционирования Google (VPS) . Если во время выполнения геопространственная привязка расположена неправильно, мы рекомендуем проверить высоту VPS лично, используя наложение отладки в примере приложения. Затем вы можете изменить высоту в редакторе Unity, чтобы она соответствовала известной высоте VPS в этом месте.

Фрагменты карты не отображаются должным образом в режиме просмотра сцены редактора.

Если Cesium3DTileset загружает плитки, но они отображаются в виде сцены сплошным пурпурным цветом, добавьте в проект пакет Unity Shader Graph. Этот пакет требуется для Cesium, хотя проекты, использующие встроенный модуль визуализации Unity, не включают его по умолчанию.

Чтобы добавить Shader Graph, откройте диспетчер пакетов Unity ( Окно > Диспетчер пакетов ). Убедитесь, что вы просматриваете пакеты, доступные в реестре пакетов Unity, выбрав «Пакеты: реестр Unity» в раскрывающемся меню в верхней части окна диспетчера пакетов. Найдите пакет com.unity.shadergraph и установите последнюю версию. После загрузки пакета 3D-плитки должны перезагрузиться и правильно отобразиться в представлении сцены.

Приложение отображает черный экран во время выполнения вместо изображения с камеры.

Универсальный конвейер рендеринга Unity (URP) по умолчанию не настроен для камеры AR. Если во время выполнения вы видите черный экран вместо вывода изображения с камеры, вам необходимо добавить AR Background Renderer Feature к каждому URP-рендереру в вашей сцене.

Add the AR Background Renderer Feature

Чтобы добавить эту функцию, найдите «рендерер» в своем проекте. Для каждого объекта URP-рендерера нажмите кнопку «Добавить функцию рендеринга» в Инспекторе и добавьте фоновый рендерер AR.

Почему якоря, расположенные далеко от начала координат, кажутся размещенными неправильно?

Преобразование координат WGS84 в игровые координаты Unity может привести к ошибкам из-за точности арифметических операций с плавающей запятой, которую можно свести к минимуму, обеспечив, чтобы исходная точка находилась рядом с привязками AR. Расстояния более 20 км могут привести к неточностям. Мы рекомендуем использовать несколько сцен с уникальной привязкой в ​​каждой сцене, если ваш опыт AR охватывает большие расстояния.