01/07/2019

Создание реалистичных горных сцен в UE4

Меня зовут Майкл Ди Лонардо, я начинающий художник окружения из Канады. Окончил факультет графического дизайна и в основном работал в мультимедиа: в публичных местах, автомобильных выставках, концертах, иммерсивных шоу и т.д. В последнее время меня больше всего интересует дизайн окружения. Я нигде не учился этому, и изучал все, что только мог, самостоятельно, через онлайн ресурсы. С Unreal Engine 4 познакомился всего несколько месяцев назад. К счастью, сейчас есть множество различных источников информации, но, тем не менее, даже учитывая, что я уже знаком с некоторыми 3D программами, эта оказалась другим зверем, и у меня взрывался мозг, пока я ее изучал.


Запуск проекта и использование World Machine

Как правило, создание проекта начинается с рождения идеи, затем идет поиск вдохновения, может, даже создание подборки картинок для мудборда, и так далее. Но у меня было иначе, так как этот проект не планировался как приоритетный. Будучи новичком в UE4, я хотел просто поэкспериментировать с инструментами скульптурного выдавливания (sculpting tools) для ландшафтов. Они уже были рассмотрены в моем предыдущем проекте, но мне было интересно побольше в них разобраться. Я хотел взять за основу что-то более интересное, чем обычный стандартный ландшафт, поэтому создал базу в World Machine. Забавно, что один из ключевых моментов работы с программами рельефа местности — не лепить рельеф вручную, а я собирался смешать оба способа! 

Для начала я создал окружность в World Machine в качестве макета, чтобы расположить мой террейн. 

Затем использовал функцию Use Breakup, чтобы создать более реалистичную форму. В ней всего 3 параметра, но их достаточно, чтобы сделать макет более интересным. 

После этого перевернул макет, который только что создал, так, чтобы он выглядел как дыра в земле. Затем добавил легкий градиент, что создало эффект возвышения ландшафта на верхушке, и эффект углубления у его основания. Направил его через две ноды Advanced Perlin вместо одной, чтобы лучше контролировать процесс. Это позволило отвести одну ноду для более крупных смещений, а вторую — для более мелких.

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

У меня было несколько нод на выход (Output nodes), поскольку я пробовал еще кое-что. Самое главное, вам необходимо экспортировать файл в RAW16 для карты высот. Более того, я экспортировал 3 отдельных PNG для верхнего, среднего и нижнего слоя высот при помощи нод Select Height, которые облегчат размещение базовых текстурных слоев.

Здесь изображены все настройки:

Я добавил несколько гор, чтобы окружить ими сцену.

Так как я немного экспериментировал, не обращайте внимание на некоторые выходы (outputs). Мне нужно было экспортировать RAW 16 и 2-3 карты высот. Здесь изображены все настройки:

Далее, я импортировал этот файл r.16 в UE4 и создал очень простой ландшафтный слой с помощью MatLayerBlend_Standard. Добавил Layer_Blend с несколькими слоями, чтобы иметь возможность красить ландшафт. Это очень удобно, если вы хотите создать горные тропы, избежать очевидных повторов, добавить новые секции и т.д.

После перетаскивания материала на ландшафт мне все еще не хватало основной базовой текстуры: снега. Именно здесь и пригодилась нода Select Height в World Machine. Для слоев травы / камней я использовал карты нижней / средней высоты, а для снега — верхнюю карту высоты. Вы можете это сделать, щелкнув правой кнопкой мыши на любом из слоев ландшафта и нажав “импортировать из файла”. Как видите, “линия”, разделяющая снег и горы на более крутых областях, все еще достаточно заметна, но этот момент было легко скорректировать, так как я мог рисовать на слоях и просто смягчил этот переход.

Процесс скульптурного моделирования

Скульптурное моделирование было сделано вручную в UE4, так как это и являлось основной целью. Стиль, с которым я работал, однозначно можно было сделать и в World Machine, но сам факт создания его вручную дает возможность что-нибудь еще дорисовать в ходе процесса. К тому же, иногда, во время скульптинга, вам может прийти в голову: “Добавлю-ка я здесь холм, так как озеро делает эту область слишком плоской” и так далее. Почти как в живописи. Поэтому я сделал здесь небольшой пример, чтобы донести основную мысль. Все, что я сделал — возвысил несколько областей при помощи инструментов скульптурного моделирования, чтобы была возможность работать с разными высотами. Затем я использовал инструмент Flatten в самой высокой точке каждой области. Этот инструмент хорош тем, что вы можете немного увеличить силу нажатия, и та область, над которой вы находитесь, либо поднимется, либо же опустится до высоты той точки, где вы удерживаете нажатие. Этот способ очень удобен при создании “ступеней”, что опять же можно выполнить в World Machine, но мне хотелось использовать менее автоматизированный способ и иметь возможность придать объекту любую форму, какую только захочу.

После выравнивания, вы, вероятно, заметите, что стыки неровные, а переход между травой и камнями — не очень чистый. Поэтому здесь нужно использовать сглаживающий инструмент, чтобы подчистить переходы, а благодаря тому, что у вас есть три базовых слоя, это будет несложно сделать. Также я выбрал случайные точки высоты вдоль крутого склона, “вытянул” их и сплющил при помощи Flatten. И повторил так несколько раз.

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

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

 

Добавление растительности

Для создания деревьев я бы рекомендовал Speedtree, но в этот раз использовал PLE pack из UE4 marketplace, чтобы лучше изучить процедурную генерацию. Забавно, но я дорисовал деревья с помощью foliage tool, просто потому, что не возлагал надежды на этот проект. Разобравшись с PLE pack, я загрузил несколько его ассетов в свой проект, и все работало отлично. Мне понравилось то, что я увидел, захотелось сделать из этого синематик видео. Что и привело меня к ассетам с растениями. Они должны были стать значительной частью синематика. Некоторые я использовал из PLE pack, другие — из Quixel’s Megascans library.

  

Чтобы видео получилось кинематографичным, необходимо было помнить о некоторых моментах, отвечающих за оптимизацию, так как я не хотел, чтобы переходы теней и смены LOD были слишком заметны, а деревья\листва вдруг исчезали на заднем плане и т.д. Я хотел, чтобы все получилось отлично. Я также переключил LODLevel для ландшафта на максимум, с -1 на 0, чтобы местность не смещалась, пока камера вращается вокруг нее. 

Но оптимизация требовалась в любом случае. Поэтому, в первую очередь, я отрегулировал culling для растительности, чтобы она не исчезала, когда отдаляешься от нее. Холмы, деревья, крупные камни, объемный туман — все это помогает перекрыть то расстояние, на котором растительность начинает пропадать. Но я не хотел, чтобы деревья исчезали на каком-то определенном расстоянии, так как цель была сделать видео максимально кинематографичным, поэтому мне пришлось усилить низкий LOD нескольких деревьев (использовал вариацию из 11 деревьев), я заполнил ими ландшафт, используя низкую плотность (Density/1kuu), вместо того, чтобы распределить их близко друг к другу. 

Вот эти деревья:

Другая оптимизация: немного снизил разрешение теней и текстур. Некоторые небольшие элементы были в разрешении 1k-2k, элементы побольше — 2k-4k. Для некоторых ассетов я вырезал текстуры атлас (при помощи Cinema 4D), чтобы снизить количество полигонов, к примеру:

Все это очень помогает снизить нагрузку. 

Настройка освещения

Честно говоря, на счет освещения мне особо нечего рассказать. Мне кажется, здесь важнее всего уловить правильное настроение. Я использовал направленный свет, скайлайт (интенсивность 1), экспоненциальный туман (exponential height fog) и постпроцесс (Post Process Volume), чтобы скорректировать цвет сцены и свечение (bloom). Стоит также упомянуть, что объемный туман (volumetric fog), по большей части, перекрыт экспоненциальным туманом (exponential height fog).

И последнее, но не менее значимое — цветокоррекция, которую я сделал в After Effects при помощи таких инструментов, как Curves, Levels, Color Balance и Film by Magic Bullet. Слева вы можете увидеть финальную версию, посередине — сырой рендер в UE4, а справа — изображение в режиме Detailed Lighting. 

Оригинальный материал на 80.lv

Recent Posts

Терпение, труд и Backbone

07/11/2019
О Backbone не слышал только ленивый. Детективная игра с элементами стелса в сеттинге антиутопичного Ванкувера. Рассказываем, как пиксельная игра в оболочке Unreal Engine шагает к успеху.

Кому принадлежит ваша игра?

05/11/2019
Специалисты компании Social Quantum помогают нам разобраться, какие шаги необходимо предпринять и какие документы оформить, чтобы избежать споров о правах на игру.

Разработка мультиплеера на Blueprints. Часть 2

28/10/2019
Продолжаем разговор — типы серверов, game mode, инструменты, классы, разработка фич, репликация виджетов, сетевая оптимизация.