Как сделать ландшафт в unreal engine 4

Обновлено: 08.07.2024

Всем доброго времени суток, господа. Возникла стоп-проблема, как в дизайнерском плане, так и в техническом.

Задача: Реализовать динамический ландшафт порядка 2х2 км площади, полностью изменяемый игроком в реальном времени. Нужно для пещер и для терраморфинга.
Проблема: Если ландшафт динамичен, то и вода должна быть в каком-то виде тоже динамичной или по крайней мере не нарушать дизайн уровня.
Реализации:
1. SPH из WaveWorks. Это не реализуемо. Технические ограничения и все такое. Если это не так — приведите аргументацию, если у Вас есть желание и время на это.
2. Тот же SPH но уже с меньшей дискретностью с какими-то фейковыми симуляциями течения жидкости на поверхности. Такое реализовано в VoxelFarm. Покупка анального геморроя в виде 20 тыров и по 1500 тыра в месяц с роялти в 5% сразу отметается. Реализовывать такое в одиночку с нуля — знатное извращение на несколько месяцев без личной жизни.
3. Наполовину дизайнерский подход. Т.е. исключить все источники воды кроме грунтовой, которая устанавливается уровнем моря. Если игрок выкапывает такой дискрет ландшафта, то этот объем постепенно заполняется водой (плоскостью) до уровня моря. Это вполне реализуемо.
4. Отказаться от 3d ландшафта и юзать 2.5d (heightmap) ландшафт. Там уже можно рассчитать прямо на карте гидродинамику (в GPGPU) и полученные данные натянуть и полигонизировать и даже прикрутить fluids поверхности воды. Терраморфинг будет доступен, а пещерки юзать модульные и заранее готовые.

Вопрос: Есть ли какие-то подъемные методы решения проблемы?

Это этап планирования и я хотел бы учесть все нюансы перед реализацией.

Думаю, тут самый принципиальный вопрос - какими ресурсами ты располагаешь. Если это будет твоей единственной работой на ближайшие 5 лет, то решение стоит выбрать одно, если у тебя горит курсовик и ещё вчера нужно было срочно что-то предоставить, то совсем другое.

Думаю, задачи стоит рассматривать как независимые - рендер динамического ландшафта и расчёт гидродинамики для него. И то и другое в принципе при определённых ресурсах реально, но нужно больше данных, что именно ты хочешь получить в итоге и какие эффекты моделировать. Если ты защищаешь докторскую по эрозии почвы, это одно, если весёлую ферму делаешь и хочешь, чтобы в ней можно было выкопать прудик, то совсем другое.

Скорее веселую ферму, по крайней на первом этапе задачи. Приведу сразу несколько уточнений:

1. Мне не нужен убийца "кубача".
2. Нужен реалтайм в Unreal Engine 4.
3. Задача по реализации воды перспективная, т.е. отложена на далекое "потом" и мне важно, чтобы она была просто реализуема каким-то образом в realtime при текущем "железном" уровне с учетом вышеприведенных пунктов. В дальнейшем я буду просто мучать эту задачу до победы.

Да, это определенно независимые задачи. Из тех, что нужно выполнить быстро и решительно это:

1. Рендер динамического ландшафта с довольно большим разрешением (например 1000x1000x1000). Тут подчеркну, что мне не нужен "убийца кубача". Из методов, которые я изучил в меру своей подготовки (т.е. частично) — это:
— Marching Cubes, где не совсем очевидно, как разрешать двусмысленности построения и как сглаживать полученные полигоны между дискретами объема так, чтобы пропал эффект "лестницы".
— Dual Contouring, в котором заходит речь о каком-то волшебном векторе, но как его определять/хранить и использовать я совершенно не понял.
2. Эффективное хранение инфы о дискретах объема. Наиболее привлекательно выглядит некий SVO (Sparse Voxel Octree). Тут я выделил следующие преимущества:
— в памяти не обязательно хранить весь SVO, тут можно подгружать (да, тут у меня проблем нет) по мере надобности целые вложенности и выгружать их соответственно в зависимости от того, какой требуется LOD.
— довольно просто отбросить обработку ненужных "групп" объемов, которых тупо не видно или они слишком далеко, чтобы их "раскрывать".

Не совсем понятно, как это сходится с перспективной задачей "о воде", даже если она будет реализовываться тем методом, который вы подсказали. Что-то мне подсказывает, что SVO таким расчетам скорее помешает, чем поможет.

3. Расчеты физики в рамках Unreal Engine 4 API естественно. Trimesh?

Ну теперь уже хоть какая-то конкретика.

Если ты уверен, что карта у тебя объёмом именно 1000х1000х1000, то есть она влезает в память видюхи, то смысла перегонять её в полигоны marching cubes'ами или dual contouring'ом и перестраивать геометрию при каждой модификации нет просто никакого. С этой задачей прекрасно справляется raymarching. Более того, если ты можешь себе позволить минимальный препроцессинг, то, перегнав свои данные в 3d текстуру с signed distance map, ты на ней можешь простейшей итеративной формулой вида p += dir * sdm(p); получить дешёвый и очень сердитый алгоритм для отрисовки в один фрагментный шейдер с бесплатным сглаживанием, освещением и нормалями для физики. Разумеется, и сам SDM можно хранить и в сжатом виде вроде octree/svo.

> 3. Расчеты физики в рамках Unreal Engine 4 API естественно. Trimesh?
разумеется, нужно для себя решить - вам шашечки или ехать? если необходима поделка на стандартных средствах UE4, то и используйте UE4 API. если необходима экзотика(а полностью разрушаемый ландшафт и глобальную гидродинамику больше никак не назовёшь), то будь готов всю функциональность реализовать самостоятельно и будь готов к её ограниченной применимости и капризам, потому что иначе вместо экзотики она уже была бы повсеместной. например, collision detection для octree написать возможно, но он будет обладать огромным количеством ограничений и не стоит от него ждать чудес.

Джонатан Хемменс поделился тем, как создавалась сцена в UE4 , с использованием инструментов Substance и Maya , рассказал о мастер-материале, эффекте сияния, замке и много чём еще!

Введение

Меня зовут Джонатан (Jonjo) Хемменс , я художник окружения в The Creative Assembly . История, композиция и свет, это то с чем мне нравится работать. Мой недавний проект показывает закат проигравшей цивилизации. После долгой осады, Викинги наконец прорвались в соседнее королевство. Наступила ужасная зима, и были зажжены сигналы, направляющие тех, кто остался в вечной мерзлоте в сторону плодородных земель.

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

Цели проекта и мотивация

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

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

Также примерно около этого времени я наткнулся на статью, написанную Леей Августин о ее проекте " Заснеженный лес ". Разбор работы позволил получить довольно много ресурсов, которые я использовал в своем проекте. Также я получил ответы на первоначальные вопросы, касающиеся технических проблем, связанных со снегом, так что эта статья позволила сделать отличный рывок в начале проекта.

Ландшафт

Создание ландшафта и материалов было моим первым шагом. Я увидел обучающие видео от Джейкоба Норриса о создании Forest Snow Ground в Substance Designer , а затем материала в UE4 . Также он рассматривал и другие полезные техники и переменные, которые нужно учитывать при создании материала. Курс сейчас бесплатен, так что можете спокойно его просмотреть.

Блокаут сцены

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

Я использовал Gaea для создания гор, добавив материал эррозии и разместив с цене. Хоть они и не являлись центром сцены, они позволили мне заполнить фон и сделать локацию более приятной на вид.

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

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

Мастер-материал

Создание сцены со снегом привнесло свои трудности. Одна из самых главных - это снег на объектах. Моделирование и текстурирование всего этого вручную мне явно не подходило, так что я решил сделать шейдер, чтобы делать всё это в динамике. И здесь мне пригодился обучающий курс от Mind Games Interactive , который я нашел в статье Леи. В видео они демонстрируют генерирование мха в зависимости от положения объекта в сцене. Все это было довольно легко адаптировать под снег, вместо мха.

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

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

Минусы этого всего в том, что нужно не давать ассетам таким же образом взаимодействовать с освещением. Так что используя этот процесс становится невозможным использование Distance Field .

Я объединил эту технику со смещением пикселей, это позволяет как бы размыть пиксели в месте пересечения ассетов в зависимости от их положения. Звучит сложно, но на самом деле просто.

Пример из документации по UE4 :

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

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

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

  • Анатомия : Слишком долго изучать, никогда этого не делал.
  • Реалистичная кожа : Даже хороший художник тратит на это очень много времени.
  • Трата времени : Я уже потратил много времени на сцену, так что лишние траты были не очень хорошим вариантом.
  • Поза : Я вообще не знаю как это делать.

Было важно не тратить много времени на персонажа. Скорость была предпочтительнее качества, особенно потому, что я знал, что персонаж будет покрыт снегом, кровью и стрелами. Я начал со шлема, это одна из самых сложных форм персонажа, но повторить форму меша в целом оказалось не такой сложной задачей. Такие небольшие победы дают уверенности, так что я знал, что легко справлюсь и с остальными частями тела. Моделированием брони я занимался в Maya с использованием SubDivision 'ов, ничего такого.

Чтобы создать кольчугу, я выдавил цилиндр из шеи с помощью live -геометрии в Maya . Этот инструмент позволит примагничивать новую геометрию к live -мешу. Это очень полезный инструмент в ретопологии. Я добавлял лупы на цилиндр, если это было необходимо. Этот же процесс я повторил и для рук. После чего сделал простую развертку, швы и накинул текстуру кольчуги. Чтобы не показалось, что в сцене куча клонов одного человека, я текстурировал его так, чтобы он ничем особым не выделялся.

Пока я искал альтернативы ZBrush Posing , я наткнулся на Quick Rig в Maya . Это позволило мне сделать риг примерно за 10 минут, причем с минимумом участия в процессе. Конечно, аниматоры бы не восприняли это серьезно, но процесс полностью соответствовал моим нуждам. Таким образом я смог быстро набросать нужные позы. Минусы этого в том, что для более продвинутых поз нужен правильный скиннинг.

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

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

Если вам понравилось, ставьте лайк и подписывайтесь на канал, чтобы не пропустить что-нибудь интересное :)

Привет! Предлагаю вашему вниманию перевод статьи WorldMachine + UE4: Full Workflow.

Руслан Назиров показал, как можно создавать красивые ландшафты в World Machine и импортировать их в Unreal Engine 4. Руслан начал работать с Unreal Engine всего год назад, но уже сейчас демонстрирует удивительные результаты.

Процесс создания ландшафта для UE4

1. Создание нужного ландшафта в World Machine. Я использую библиотеку макросов GeoGlyph для ускорения процесса создания ландшафта.

image



2. Создание необходимых карт высот для слоев ландшафта. Вы можете использовать стандартные Erosion-выхода, такие как Flow, Wear или Deposition. Или можете использовать сторонние макросы, например, ReFlow из GeoGlyph. В этом случае, Вам надо будет присоединить эти карты к Splat Converter, чтобы обеспечить правильное расположение веса Splatmap.

image

3. На этом этапе Вы можете приступить к покраске ландшафта, чтобы понять, как на него будет ложиться материал. Также на этом этапе можно приступить к поиску нужных текстур для ландшафта, потому что в UE4 вместо простых цветов используются именно они.

image

4. Следующим шагом станет экспорт карт высот для ландшафта и слоев (Они понадобятся для правильного наложения материала на ландшафт в UE4)

image

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

image

6. Материал ландшафта обычно содержит несколько слоев. Вам нужно работать с каждым слоем отдельно.

image

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

image

image

8. Можно улучшить настройку слоев, добавив больше параметров и используя карты Ambient Occlusion, Roughness и Displacement, чтобы добавить большей детализации ландшафту.

image

9. Вы можете использовать зависящую от расстояния тесселяцию, чтобы кардинально увеличить производительность при использовании Displacement карты. Используйте код снизу для множителя тесселяции. Помните, что Вам нужно отключить чекбоксы Adaptive Tesselation (адаптивная тесселяция) и Crack Free Displacement (смещение без трещин) в параметрах материала.

image

10. Вместо ручной покраски травы, Вы можете использовать один из экспортируемых слоев из World Machine. Для этого используйте ноду Grass и задайте ей параметр Вашего слоя (Используйте то же имя, что и в ноде Landscape Layer Blend). Также Вам нужно создать ассет Landscape Grass Type, чтобы задать параметры для травы, такие как плотность, размер и другие. В целом, Вы можете использовать этот метод не только для травы, но и для камней, деревьев и других объектов на ландшафте.

image

image

11. Когда материал ландшафта готов, настало время импортировать сам ландшафт. Откройте вкладку Landscape в окне Modes. Выберите Import From File. Затем выберите созданный Вами материал ландшафта. После этого выберите карту высот для ландшафта, которую Вы создавали в World Machine. Создайте Layer Info для каждого слоя (Weight-Blended Layer). Для каждого Layer Info выберите нужную карту слоя, которую Вы делали в World Machine. Вы можете задать Scale (масштаб) ландшафту, если нужно. После всех этих действий нажмите Import и вы получите ландшафт с созданным Вами материалом.

image

image

12. После этого Вы можете начать добавлять объекты и детали на ландшафт, настраивать освещение и Post Process. Есть еще много разных вещей, которые Вы, возможно, захотите сделать с ландшафтом. Например, хорошей идеей будет сделать низкополигональную геометрию ландшафта, чтобы визуально расширить его границы. Продолжайте экспериментировать и Вы получите нужный результат. Я надеюсь, Вы нашли здесь полезную информацию, которая поможет Вам создавать собственные миры в UE4.

За веру и верность форуму

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

Для автоматического текстурирования, я использую 2 основных метода : смешивание текстур по наклонам и смешивание по высоте.

Наклонное смешивание

Для более расширенного текстурирования вы можете комбинировать оба подхода.

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

В этом видео Вы узнаете как создавать и настраивать ландшафт в Unreal Engine 4 (На примере UE 4.26) для левел .

На канале можно найти уроки по low poly моделированию в 3ds max, текстурирование, создание uv развёртки, запекание .

На канале можно найти уроки по low poly моделированию в 3ds max, текстурирование, создание uv развёртки, запекание .

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

В этом видеоуроке будут показаны основы работы с игровым движком unreal engine 4, работа с материалами и создание .

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

В этом уроке мы разберем как устроен режим создания растительности Foliage в панели Mods и как им пользоваться.

На канале можно найти уроки по low poly моделированию в 3ds max, текстурирование, создание uv развёртки, запекание .

Как создать 3D-ландшафт? Основатель компании Antix Роман Цыганов показал, как создать структуру ландшафта в игре и .

Поговорим о том как пользоваться инструментом Landscape в Unreal Engine 4, а так же как сделать многослойный .

В этом видео мы импортируем ландшафт с помощью сайта terrain.party и настроим его в Unreal Engine. Ссылка на .

В этом видео мы разберем плагин Landmass при помощи которого мы сможем быстро создавать реалистичный рельеф, .

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

Сделаем несколько ландшафтов в программе Gaea, простой и сложный. Сделаем снег и текстуры, экспортируем карты .

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

В этом видео Unreal Engine 4 Landscape Road Spline мы базово разберем создание дороги и рельефа к ней при помощи .

В этом видео мы создадим простой автоматериал ландшафта на основе текстур из Quixel Megascans (Bridge) и добавим .

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

Music by Meydän (licensed under CC BY 4.0) Brushify.io - Unreal Engine 4 Level design and environment toolkit and tutorials.

На канале можно найти уроки по low poly моделированию в 3ds max, текстурирование, создание uv развёртки, запекание .

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

Читайте также: