Генерация Земли в Unreal Engine

Введение

Всем добрый день!
В этом блоге мы хотели бы рассказать о нашем плагине SynTerra для генерации Земли в Unreal Engine. Но перед тем как начать, стоит немного рассказать о предыстории создания этого проекта.
Изначально наша команда сформировалась на базе проектов по созданию авиационных тренажёров и симуляторов — ещё задолго до появления таких терминов, как «цифровые двойники», «цифровые тени» и других. В начале нулевых мы были сильно ограничены в выборе программных инструментов, в том числе и 3D-движков. Unreal Engine и Unity тогда ещё не поддерживали 64-битные координатные системы, что, в свою очередь, серьёзно ограничивало возможности создания больших территорий в масштабах стран, континентов и даже всей планеты. На рынке существовали только нишевые продукты, такие как Presagis, VBS, MAK VR Forces и Prepar3D.
Однако как только в популярных движках Unity и Unreal Engine появилась поддержка создания больших территорий, вместе с этой технологией рынок поделили два гиганта из индустрии ГИС: ESRI ArcGIS и Cesium (ныне часть Bentley Systems).
Несмотря на возможность плагинов ArcGIS и Cesium загружать в проект всю Землю, многие пользователи столкнулись с рядом проблем. Ниже перечислены основные недостатки:

  • Земля всегда подгружается в формате online, и, соответственно, её нельзя редактировать непосредственно в проекте.
    С одной стороны, это логичный подход к решению задачи, так как загрузить всю планету в проект действительно невозможно.
    Однако далеко не всем пользователям это требуется: большинство работают только с определённой областью.
  • Следующий недостаток напрямую вытекает из предыдущего: отсутствие возможности хранить выбранную область Земли непосредственно в проекте не позволяет полноценно добавлять контент на ландшафт — такие как материалы поверхностей, растительность, здания, городскую инфраструктуру и другие элементы.
  • Проекты на базе Cesium и ArcGIS зависят от скорости подключения к интернету и не могут быть запущены без доступа к сети.
    Это ограничение особенно критично для организаций с высокими требованиями к кибербезопасности, где корпоративная сеть изолирована от глобальной.
  • Загрузка всей планеты в проект требует привязки нуля координат к центру Земли и использования смещений относительно абсолютной и относительной координатных систем. Это, в свою очередь, накладывает ряд ограничений на перемещение обозревателя между локациями на больших дистанциях — более одного геодезического градуса (ориентировочно 111 км, в зависимости от географического положения).
  • Постоянное переключение между уровнями детализации (LOD) поверхности Земли на больших расстояниях между игроками не позволяет полноценно реализовать многопользовательский режим в проекте.
  • Несмотря на различия в бизнес-моделях, и Cesium, и ArcGIS являются платными сервисами.
    При необходимости создать проект формата White Label (без логотипов) и без дополнительных ограничений, стоимость решений достигает нескольких тысяч долларов за лицензию.

В случае, если пользователи захотят самостоятельно создать проект без применения перечисленных выше плагинов, с ландшафтом на основе реальных геоинформационных данных и реальной локацией, им потребуется знание в области ГИС, доступ к спутниковым данным, а также настройка множества параметров как в самих данных, так и в проекте. В результате для выполнения такой задачи потребуются значительные ресурсы: нишевые специалисты в области ГИС, большое количество часов на разработку, оптимизацию и настройку. На основе нашего опыта, для создания подобного проекта требовались месяцы работы команды из минимум пяти человек и существенный бюджет на закупку спутниковых данных.

Понимая, что этот процесс можно автоматизировать и предоставить пользователям возможность сгенерировать ландшафт по выбранной локации нажатием одной кнопки, мы решили создать плагин SynTerra.

Применение плагина SynTerra

Далее приведем описание по интеграции SynTerra в проект Unreal Engine. На момент публикации статьи, плагин SynTerra поддерживает Unreal Engine версии 5.5. После того как сам плагин уже скачан с маркетплейса FAB (https://fab.com/s/bb8df9b2a6ab), рекомендуется при создании проекта использовать шаблон Simulation, т.к. в нем по умолчанию применяются уже все необходимые ассеты:

1.png

В созданном проекте добавляем плагин обычным способом через меню Settings / Plugins и перезагружаем Unreal Engine:

2.png

В результате в горизонтальном меню появится кнопка вызова плагина SynTerra:

3.png

В окне необходимо пройти регистрацию нового пользователя с указанием почты и пароля:

4.png

В появившемся новом окне SynTerra можно увидеть всю карту Мира (отображается на основе OpenStreetMap):

5.png

При приближении карты появляется синия сетка разбивающая Землю на отдельные локации (далее тайлы):

6.png

Размер каждого тайла составляет 30x30 км. Размер тайла обсуловлен разрешением спутниковых снимков Sentinel 2 применяющихся в SynTerra в 10 метров на пиксель и разрешением цифровой модели Земли (Digital Elevation Model) в 30 метров на пиксель (полигон).

Выбор тайла осуществляется путем нажатия левой кнопкой мыши, также, левой кнопкой мыши можно и отменить выбор тайла. Выбранные тайлы подсвечены оранжевым цветом:

7.png

Описание выбора настроек плагина

  • User name: имя пользователя при регистрации.
  • EMail: почтовый адрес указанный при регистрации.
  • Current limit: количество оставшихся тайлов Земли. На текущий момент лимит в три тайла обусловлен ограничениями со стороны использования облака на AWS S3 где мы храним все данные на планету (архитектуру SynTerra мы опишем в следующей публикации).
  • Geodetic: начало координат (XYZ) проекта совпадает с центром Земли и совместим со стандартом WGS84 (World Geodetic Standard 1984). Эта опция делает плагин SynTerra полностью совместимым с такими плагинами как Cesium и ArcGIS.
  • Local: начало координат (XYZ) проекта совпадает с левым нижним углом выбранного тайла (выбранного набора тайлов).
  • Number of tiles: количество выбранных тайлов.
  • Automatically add tiles to scene: автоматически загружает mesh и текстуры выбранного ландшафта Земли в проект.
  • Add microtextures: добавляет микротектуру, при приближении к поверхности Земли можно наблюдать типовую текстуру Земли на основе спутниковых данных классификации Land Cover Sentinel 2. Всего 8 типов поверхности Земли: трава, болотистая местность, тундра, застроенная территория (асфальт/бетон), песок, лес, снег/лед, поле.
  • Generate tiles: кнопка для генерации выбранных тайлов.

Далее нажимаем кнопку Generate tiles и начинается процесс скачивания выбранной локации с облака и генерация ландшафта с текстурированием на стороне клиента (пользователя):

8.png

В результате в проекте создается локация из выбранных тайлов с учетом предварительно выбранных настроек:

9.png

В случае выбранной опции Add microtextures можно наблюдать плавное переключение между спутниковыми снимками и типовой текстурой при приближении к поверхности земли. Это помогает избегать "пиксельности" поверхностей, типичных для ландшафтов с применением спутниковых данных:

10.png


Дальнейшее развитие проекта

Как видно из данной публикации, мы стремились создать инструмент для генерации ландшафта Земли с максимально простым подходом в формате «одной кнопки». Плагин доступен для бесплатного скачивания на официальной странице маркетплейса FAB по ссылке ниже:

https://fab.com/s/bb8df9b2a6ab

Мы надеемся что SynTerra поможет разработчикам в создании новых проектов по таким направлениям как:

  • Симуляторы и тренажеры
  • Геймдев
  • Цифровые двойники
  • ГИС приложения
  • И многие другие направления где требуется ландшафт Земли

В следующих публикациях нашего блога мы расскажем об архитектуре инструмента и его дальнейшем развитии.

736 0 850 3
8
2025-04-28
В этом что-то есть. Но. UE 5.5 мой компутер не потянет. Я еле ворочаю в версии 5.4. Второе, насколько прожорлив ваш плагин? Даже стандартные инструменты от UE по созданию ландшафтов создают ландшафты, которые очень серьезно выжирают ресурсы игры. Я стал лепить ландшафты сам, в Блендере. Они не грузят, с ними легко. Ну немного возни с раскрашиванием и запеканием текстур.
2025-04-28
Мы планируем включить поддержку версии 5.4, но после некоторых обновлений плагина. В плане производительности, то сам по себе процесс как генерации так и использования ландшафта весьма не ресурсозатратный, учитывая тот факт, что спутниковые данные относительно низкого разрешения всего в 10 метров на пиксель. Конечно тут все зависит от железа пользователя, но сгенерить и использовать один тайл (30x30 км) не потребует высокопроизводительного оборудования. Ну а в целом, рекомендую просто скачать и потестировать :)
2025-04-28
Сохранить нельзя в проекте, а зачем эта прога тогда нужна?
2025-04-28
[club8938191|Render.ru — компьютерная графика CG и анимация], а смысл выкладывать такие проги на стене?
2025-04-28
Как раз используя наше решение, в отличие от конкурентов, можно сохранять выбранную территорию в проекте и использовать в офлайн формате.
2025-04-29
Я попробовал. Вы пишите что такие плагины как Cesium являются платными. Но не соглашусь. Я пользовался Cesium без проблем. Качество в разы выше - нет ограничений по тайлам, можно использовать хайрезы с гуглмапс, все включено. Нет никаких вотермарков. Я попробовал загенерить у вас в плагине, выбрал 18 тайлов, но из-за ограничения он сгенерил токо 3. В то время как cesium генерит безлимитно. Так что увы, но ваш плагин надо допиливать.
2025-04-29
Плагин SynTerra находится в процессе развития и улучшения качества путем добавления новых спутниковых и аэрофото снимков высокого разрешения (но конечно же не в масштабах всей планеты). Cesium также замечательный плагин которым мы и сами пользуемся в некоторых случаях, однако он все же платный (если попробовать закачать на свой аккаунт данных больше чем на 5Гб то потребуется подписка). Watermarks присутствуют при сборке проекта: логотипы всегда расположены в левом нижнем углу. Ну и самое главное, Cesium работает только в онлайн режиме. В случае если Вы захотите купить лицензию для наличия Cesium в офлайн то получите данные от SRTM в разрешении 15 метров, у SynTerra мы используем новые данные от Sentinel 2 в более высоком качестве с разрешением 10 метров. Ну и сама лицензия у Cesium обойдется в 7000 $.
2025-05-01
Как же много крови из меня cesium выпил пока я не разобрался, что плитки из него нельзя сохранять отдельно
RENDER.RU