РАЗРАБОТКА ИГРЫ

Как создать свой собственный игровой ландшафт с открытым миром в Unreal Engine

Создание реальных копий вашего любимого ландшафта стало проще

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

Обходной путь этого подхода будет включать использование QGIS, немного Photoshop или любого другого программного обеспечения для редактирования фотографий, и в основном Unreal Engine (предпочтительнее 4.24 или выше). Кроме того, я должен упомянуть, что этот рабочий процесс не оптимален для создания городских городов со зданиями. Этот рабочий процесс концентрируется на создании реалистичных копий природного окружения (областей, которые в основном состоят из гор, водоемов, растительности и т. Д.). Но в конце статьи я упомяну способ, которым вы также можете добавлять строительные конструкции на местность, следуя этому подходу. Этот метод не очень гибкий и не рекомендуется, если вы собираетесь создавать ландшафт профессионального уровня, но я упомяну его для завершения.

1. Сбор необработанных данных

Если вы планируете создать копию из реального мира, первым делом нужно найти качественный набор данных ГИС для области, которую вы планируете создать. Для этого рекомендуется использовать надежный источник для загрузки данных, такой как USGS-Earth explorer или USGS National map viewer. Эти два веб-сайта содержат обширные данные по территориям США, но не по другим регионам. Есть много других источников, которые вы можете найти по всему Интернету, которые обслуживаются правительственными учреждениями каждой страны. В основном вам необходимо получить два типа данных: карта высот и спутниковое изображение, покрывающее интересующую вас область, оба в формате GeoTIFF.

При загрузке необходимой карты высот и спутниковых изображений вы можете заметить, что загружается несколько файлов GeoTIFF. В таком случае вам не о чем беспокоиться, поскольку, если интересующая вас область велика, карта высот и спутниковое изображение этой области могут быть представлены в виде нескольких фрагментов карты высот / спутникового изображения, которые мы позже объединим вместе с помощью QGIS. Также помните, чем лучше разрешение, тем лучше результат! Кроме того, вы можете загрузить шейп-файлы ESRI, представляющие данные об автомобильных и железных дорогах, а также данные о контурах зданий в этой области. из того же источника, если вы собираетесь добавить дороги, рельсы и здания соответственно. Кроме того, эти данные шейп-файла можно получить только из OpenStreetMap.

2. Обработка необработанных данных

Далее вам нужно работать с QGIS для обработки загруженных необработанных данных. Вы можете просто перетащить карту высот и данные спутникового изображения в рабочую область QGIS, и данные загрузятся и отобразятся на холсте.

Я рекомендую сначала перетащить фрагменты карты высот или фрагменты спутникового изображения только для большего удобства. Если у вас есть несколько плиток данных, перетащите их все, и плитки загрузятся на холст в соответствии с их положением.

Теперь, чтобы объединить плитки и создать единое изображение / слой, сначала вы должны выбрать все плитки, принадлежащие карте высот или спутниковому изображению из окна слоев в левой нижней части экрана. Теперь в главном меню выберите Растр ›Разное› Создать виртуальный растр.

В окне «Создать виртуальный растр»:

  • Нажмите кнопку «…» справа от «Input Source» и выберите либо все фрагменты карты высот, либо все фрагменты спутникового изображения в качестве исходных фрагментов для объединения.
  • Установите «Разрешение» на «Максимальное».
  • Убедитесь, что флажок «Поместить каждый входной файл в отдельный бэнд» снят.
  • Установите «Переопределить проекцию для выходного файла [необязательно]» на «Project CRS».
  • Оставьте для параметра «Алгоритм передискретизации» значение «Ближайшее соседство» для карты высот и измените его на «Билинейный» при выполнении этого процесса со спутниковым изображением.
  • Щелкните «Выполнить».

Вы можете повторить этот процесс как для данных карты высот, так и для данных спутникового изображения, чтобы получить объединенные изображения для них обоих. После создания виртуальных растров вы можете удалить необработанные данные (плитки) из слоев QGIS, выбрав плитки в окне слоев ›щелкните правой кнопкой мыши› удалить слой. Вам нужно только сохранить два обработанных виртуальных растра для каждой карты высот и спутникового изображения.

Теперь, если вы планируете использовать шейп-файлы для дорог, рельсов и зданий, вы также можете загрузить их в QGIS следующим образом. Когда вы загружаете шейп-файл ESRI, вы можете заметить, что есть примерно 4 файла с одним и тем же именем, но с разными расширениями. Этими расширениями обычно являются .shp, .shx, .dbf и .prj. В одном шейп-файле может быть еще больше различных расширений. А если вы хотите загрузить данные в QGIS, вам нужно перетащить только файл .shp в рабочую область. После этого вы сможете загрузить шейп-файл на холст QGIS поверх уже загруженной карты высот и спутникового изображения. Вы можете настроить порядок слоев на панели слоев, перетаскивая слои вверх и вниз.

После загрузки всех данных в QGIS вы можете решить, в какой степени вы планируете создавать ландшафт. После принятия решения вы можете нарисовать квадрат / прямоугольник поверх слоев данных, который будет использоваться в качестве ориентира для обрезки необработанных данных для получения окончательного набора данных. Чтобы создать эту справочную область,

  • Щелкните значок «Новый слой шейп-файла…» в главном меню.
  • Дайте ему полезное имя файла.
  • Выберите «Многоугольник» в «Типе геометрии».
  • Щелкните «ОК».
  • В главном меню нажмите «Вид» ›« Панели инструментов ».
  • Убедитесь, что установлен флажок рядом с «Панель инструментов преобразования формы в цифровую форму».

Теперь, чтобы нарисовать область,

  • Убедитесь, что ваш новый слой выбран в окне «Слои».
  • Выберите значок «Переключить редактирование» во 2-м ряду главной панели инструментов.
  • Щелкните маленькую стрелку на значке «Создать прямоугольник» на панели инструментов «Shape Digitizer» и в раскрывающемся списке.
  • Выберите «Добавить прямоугольник из экстента».
  • Щелкните левой кнопкой мыши и отпустите в нужном верхнем левом углу справочной области.
  • Перетащите мышь в правый нижний угол и щелкните правой кнопкой мыши, чтобы остановить рисование.
  • Появится окно «Атрибуты объекта» с «ID» формы.
  • Здесь вы можете ввести любое целое число, введенное число не имеет значения.

После создания этой эталонной области вы можете сохранить два виртуальных растровых слоя, обрезав их во время процесса. Во-первых, давайте сохраним виртуальный растровый слой карты высот. Для этого щелкните правой кнопкой мыши виртуальные растровые слои карты высот ›Экспорт› Сохранить как

В окне «Сохранить растровый слой как…»:

  • Установите «Режим вывода» на «Необработанные данные».
  • Убедитесь, что для параметра «Формат» установлено значение «GeoTiff».
  • Используйте кнопку «…» справа от поля «Имя файла», перейдите в папку для сохранения слоя и дайте ей имя файла.
  • Убедитесь, что в поле «CRS» указано значение «Project CRS».
  • Чтобы обрезать карту высот с использованием нашей эталонной области, в разделе «Экстент» нажмите «Рассчитать по слою» и выберите слой с эталонной областью.
  • Щелкните «ОК».

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

В окне «Сохранить растровый слой как…»:

  • «Режим вывода» должен быть «Визуализированное изображение» вместо «Необработанные данные» (потому что нам нужны только каналы RGB).

Следующим шагом будет обрезка векторных слоев (дороги, рельсы и слои зданий) в соответствии с ранее созданной контрольной областью. Для этого в главном меню выберите Вектор ›Инструменты геообработки› Клип.

В окне «Клип»:

  • Установите «Входной слой» на один из ваших векторных слоев.
  • Установите «Overlay Layer» на слой, содержащий вашу контрольную область.
  • Щелкните «Выполнить».

Вы можете повторить этот процесс для всех имеющихся у вас векторных слоев (для дорог, рельсов, зданий), и вы получите окончательные векторные слои, которые будут использоваться для генерации ландшафта. Чтобы сохранить обрезанные слои, щелкните правой кнопкой мыши один из «Обрезанных» слоев ›Экспорт› Сохранить элементы как.

В окне «Сохранить векторный слой как…»:

  • Установите для параметра «Формат» значение «ESRI Shapefile».
  • В «Имя файла» перейдите к папке и дайте вашему вектору имя файла.
  • Установите «CRS» на «Project CRS».
  • В разделе «Геометрия» измените «Тип геометрии» на «LineString» для векторных файлов дорог и рельсов и измените на «Многоугольник» при сохранении векторного файла здания.
  • Щелкните «ОК».

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

3. Создание масок для участков растительности / водоемов / грязи.

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

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

4. Создание финального ландшафта.

Здесь я использовал плагин под названием TerraForm Pro. Этот плагин позволяет импортировать карты высот в формате GeoTIFF и преобразовывать их в ландшафты, а также позволяет импортировать шейп-файлы линий в виде сплайнов для представления автомобильных и железных дорог. Я обнаружил, что этот плагин пригодится при создании естественных ландшафтов профессионального уровня. Чтобы добавить плагин в Unreal Engine, вставьте папку с содержимым плагина в папку плагинов при установке Unreal Engine. (Обычно он находится по адресу C: ›Program File› Epic Games ›UE_4.25› Engine ›Plugins)

Кроме того, я использовал пакет ресурсов Procedural Landscape Ecosystem (PLE), который, в свою очередь, помог мне облегчить многие трудоемкие задачи, которые нужно выполнять вручную, например, создание слоев ландшафта и создание реалистичных ландшафтных материалов. Кроме того, этот пакет ресурсов включает в себя две тщательно обработанные сетки деревьев (модели сосны и модели березы), а также гладкий дорожный материал, который будет полезен в дальнейшем.

На последнем этапе вам нужно открыть Unreal Engine, и вы увидите всплывающее окно с упоминанием «Доступны новые плагины» под этим щелчком «Управление плагинами». Затем появится всплывающее окно плагинов, и вам нужно будет отметить опцию «Включить» под деталями плагина TerraForm. Затем потребуется перезапустить Unreal Engine, чтобы включить плагин.

После включения плагина TerraForm Pro выберите режим TerraForm на панели Режимы. Нажмите кнопку Активировать TerraForm. Вы должны указать ссылочное имя и ключ активации, чтобы активировать плагин. После активации в меню TerraForm появятся 3 опции. Щелкните первую опцию Импортировать ЦММ как альбомную. Затем вам нужно просмотреть и выбрать окончательное изображение карты высот, которое мы сохранили после процесса внутри QGIS. На данный момент нет никаких ключевых параметров импорта, которые нужно настраивать при импорте изображения. Плагин займет некоторое время и загрузит карту высот как идеальный пейзаж, где ваш персонаж сможет свободно перемещаться, если вы используете Шаблон проекта от третьего лица. После импорта вы можете применить ландшафтный материал, который вы создаете вручную или который доступен в пакете ресурсов PLE, если вы его используете.

Затем вы можете назначить маски, которые вы создали, для каждого соответствующего ландшафтного слоя, который уже был создан внутри пакета PLE, что делает работу намного более удобной. Чтобы назначить маски, сначала перейдите в режим «Пейзаж», затем выберите «Рисовать». В разделе «Целевые слои» вы найдете список слоев «Процедурная ландшафтная экосистема», если вы используете PLE. В противном случае вам придется делать их вручную, что может занять довольно много времени. Если у вас есть PLE. изначально для каждого «Слоя» будет установлено значение «Нет». Щелкните стрелку раскрывающегося списка в поле под названием слоя «Grass_plane» и выберите «Grass_plane_Layerinfo». Повторите это для других слоев процедурной ландшафтной экосистемы.

Чтобы назначить маски, выберите соответствующий слой (например, если вы собираетесь назначить маску растительности, выберите слой «Pine_forest_a» или слой «Birch_forest_a» из списка «Слои» в разделе «Целевые слои». щелкните слой и выберите «Импорт из файла». В открывшемся окне браузера выберите соответствующую маску .png в соответствии с выбранным слоем и нажмите «Открыть».

Затем вы можете либо создать деревья в областях, покрытых маской растительности, либо перейти к шагу добавления дорог и рельсов с помощью шейп-файлов. Я рекомендую добавить шаг дороги перед созданием деревьев, так как если сначала будут созданы деревья, а потом добавлены дороги, будут случаи, когда некоторые деревья будут появляться на дорогах, что можно исправить, повторно смоделировав инструмент создания деревьев, который технически известен. как процедурный производитель листвы. Но эта опция «Resimulate» выполняется одним нажатием кнопки, даже если для ее обработки может потребоваться некоторое время в зависимости от протяженности вашего ландшафта. Поэтому ничего страшного, даже если вы решили сначала создавать деревья перед добавлением дорог.

Итак, чтобы добавить дороги, нажмите на вторую опцию в меню TerraForm, «Импортировать линии как ландшафтные сплайны». (Меню TerraForm можно открыть, щелкнув «TerraForm Ed Mode» на панели режимов). Теперь вы получите окно браузера файлов, в котором вам нужно будет перейти к обрезанному шейп-файлу дороги, который мы сохранили на втором шаге. И не забудьте выбрать только файл .shp. В «Параметры импорта векторной линии» для создаваемого ландшафтного сплайна:

  • Установите «Ширина сплайна» на «500 сантиметров». (Это будет приблизительная ширина результирующей дороги, поэтому вы можете указать любую ширину по своему усмотрению)
  • Установите значения «Side Falloff» и «End Falloff» на «200 сантиметров».
  • «Layer» должен быть «Global_ground_a». (Нажмите клавишу ENTER после ввода имени слоя, чтобы убедиться, что он применен.)
  • Убедитесь, что отмечены флажки «Подъем на местности» и «Подъем на местности».
  • «SM_roads_a» - это сетка, которую мы применили к сегментам. (Это идет из пакета PLE)

Теперь нажмите «Импорт», и вы сможете увидеть, как дорожная сеть правильно сочетается с вашим ландшафтом. Теперь повторите тот же шаг, чтобы импортировать рельсы. Но не забудьте изменить «Ширина сплайна» на меньшее значение, поскольку железные дороги не такие широкие, как дороги, и создайте подходящий материал для применения к сегментам сетки вместо «SM_roads_a», который является материалом для дорог. (Здесь не забудьте сначала импортировать дороги, а затем рельсы, поскольку, естественно, рельсы перекрывают дороги на перекрестках, а не наоборот.

Наконец, чтобы порождать деревья, вы можете использовать инструмент процедурной листвы внутри Unreal Engine для создания пользовательских процедурных создателей и назначать модели деревьев, которые вы хотите создать. Если вы используете пакет PLE, есть встроенные средства создания для деревьев сосны и березы. Если нет, то не так уж сложно создать собственный процедурный спаунер листвы.

Если вы используете пакет PLE, в браузере содержимого перейдите туда, где находятся процедурные создатели листвы, и при выборе того, какой источник использовать, вы должны принять во внимание слой, которому вы ранее назначили свою маску растительности. (Если вы назначили маску растительности слою «Pine_forest_a», выбрали источник «Сосновый лес», а если вы назначили маску растительности для «Birch_forest_a», используйте спаунер «Березовый лес», поскольку создатель будет следовать за соответствующей областью, покрытой соответствующим слоем ландшафта) . Как вы могли заметить, назначение маски ландшафтному слою заключается в выделении областей, находящихся под этим конкретным ландшафтным слоем. И мы будем создавать деревья в области, покрытой слоем, которому была назначена маска растительности.

Определив, какой процедурный генератор листвы использовать, перетащите его из браузера содержимого в область просмотра (на карту). Вы заметите, что создатель - это куб. Теперь вам нужно настроить положение и масштаб куба так, чтобы этот куб покрыл всю карту. После этого прокрутите панель «Details» вниз до раздела «Procedural Foliage», снимите флажок «Allow Static Mesh» и нажмите кнопку «Resimulate», чтобы запустить средство создания. Через некоторое время вы сможете увидеть, как деревья появляются в областях, которые были выделены через вашу маску растительности. Вы можете настроить высоту дерева, его плотность и многое другое, дважды щелкнув процедурный генератор и изменив его свойства.

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

Если вы планируете добавлять здания, я нашел метод, с помощью которого вы можете использовать плагин Blender-GIS для Blender, который можно использовать для загрузки той же карты высот в Blender и создания трехмерного ландшафта, аналогичного исходному ландшафту в Unreal Engine. Затем плагин также имеет возможность загрузить шейп-файл контура здания для создания трехмерных зданий с помощью данных о высоте здания, закодированных внутри шейп-файла. И эти здания можно разместить поверх ландшафта Blender, который мы создали ранее, так что все здания будут хорошо вписаны в ландшафт. Затем вы можете текстурировать здания внутри Blender и экспортировать слой зданий как .fbx в Unreal Engine.

Обратной стороной этого подхода является то, что весь слой здания будет находиться в одной статической сетке и, следовательно, не будет гибким, чтобы иметь дело с настройкой отдельных зданий внутри Unreal Engine. А также могут быть небольшие проблемы с выравниванием зданий с ландшафтом Unreal Engine, поскольку, хотя мы используем одну и ту же карту высот для создания ландшафта, две платформы (Unreal Engine и Blender) могут обрабатывать данные немного по-разному.

Большинству из вас, кто не является экспертом в этих областях, эта статья может показаться трудной для понимания. Но это идеальный конвейер, который я использовал, и с ним было легко работать. Если вы привыкнете работать с Unreal Engine, я считаю, что эта статья была бы легким продолжением. Это изображение местности, которое я сделал с использованием этого подхода.

Любые вопросы, пояснения или отзывы приветствуются, и я благодарю вас за время, потраченное на чтение этой статьи. Будьте осторожны и хорошего дня!