Как сделать туман в unreal engine 4
Меня зовут Майкл Ди Лонардо, я начинающий художник окружения из Канады. Окончил факультет графического дизайна и в основном работал в мультимедиа: в публичных местах, автомобильных выставках, концертах, иммерсивных шоу и т.д. В последнее время меня больше всего интересует дизайн окружения. Я нигде не учился этому, и изучал все, что только мог, самостоятельно, через онлайн ресурсы. С 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 карты высот. Здесь изображены все настройки:
После перетаскивания материала на ландшафт мне все еще не хватало основной базовой текстуры: снега. Именно здесь и пригодилась нода 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.
Изучение Unreal Engine, документация на русском языке
Настройка системы папок
Теперь, когда мы закончили скульптурировать ландшафт, самое время добавить материалы, чтоб результат больше напоминал нечто такое, что можно увидеть в реальном мире. Но прежде, чем начать, давайте создадим несколько папок, чтоб рассортировать весь контент, который мы создадим.
Мы создали следующие папки для данного урока.
- Landscape
- Materials
- Resources
- Textures
Должно получится что-то типа этого.
Перенос текстур
Теперь, когда наши папки на месте, давайте перенесем некоторые текстуры из проекта Landscape Content Example, чтоб у нас было, с чем работать.
Когда вы переносите контент между проектами, у вас могут появляться ненужные папки. Чтоб избежать этого, выберете нужные текстуры внутри Content Browser и перетащите их из существующей локации в желаемую папку.
Вы можете найти текстуры в следующей папке, которая находится внутри проекта Landscapes Content example.
/Game/ExampleContent/Landscapes/Textures/
Из проекта Landscape Content Example мы будем переносить следующие текстуры.
После переноса текстур, убедитесь в том, что они появились в папке Textures, которую мы создали ранее. Теперь давайте создадим материалы для ландшафта.
Создание материалов ландшафта
- Откройте папку Materials.
- Выполните правый клик в ContentBrowser и выберете Material из списка BasicAssets.
- Назовите как-нибудь созданный Материал, чтоб его было легко найти, например, Landscape_Material.
Теперь у вас должно получиться нечто такое:
Теперь, когда у нас создан новый Landscape Material, откроем Материал, дважды кликнув по нему внутри Content Browser. Теперь вы должны увидеть нечто такое:
Теперь, прежде чем мы начнем наслаивать узлы в Material Editor, мы должны убедиться в том, что установили этот материал для его дальнейшего использования в Ландшафте. Чтоб сделать это, открываем секцию Usage в панели Details и ставим галочку напротив Used with Landscape . Таким образом мы сможем использовать Материал в Ландшафте.
Теперь самое время начать наслаивать узлы внутри Material Editor. Первый узел – это узел LandscapeLayerCoords UV. Этот узел — помощник в генерации UV-связей, которые можно использовать для того, чтоб связать Сеть Материалов с Landscape Terrain.
Самый простой способ найти узлы, специфичные для Ландшафта – это использовать поиск узлов в боксе Materials Palette, вбив слово Landscape, как ключевое
Следующие Material-узлы, которые мы собираемся наслоить, это узлы текстур для Base Color настила и карт Normal. Для снега мы будем использовать Vector Parameter (V + левый клик), который использует белый цвет. Чтоб убедиться в том, что не используется Metallicinformation,используйте Constant (1 + левый клик) в значении 0 с подключением к Metallicinput. И наконец, для Roughness, мы установили Scalar Parameter (S + левый клик), и это значение мы сможем твикнуть с помощью Material Instance позже. Наконец, давайте убедимся, что мы прицепили каждый LandscapeCoord к UV каждого Texture Sample. У вас должно получиться нечто такое:
Чтоб добавить узлы Texture Sample для различных текстур, сначала выберете нужную текстуру в Content Browser, затем нажмите T + левый клик в графе Material Editor, чтоб создать узел.
Чтоб узнать больше об этих привязанных клавишах, откройте окно Edit > Editor Preferences > Keyboard Shortcuts и выберете Material Editor – секция Spawn Nodes.
Номер | Название текстуры |
1 | T_ForestGround_D |
2 | T_Ground_Grass_D |
3 | T_ForestGround_N |
4 | T_Ground_Grass_N |
5 | T_Noise_N |
После того, как мы наслоили Material-узлы, а LandscapeCoords были связаны с текстурами UV, самое время добавить узел Landscape Layer Blend. Этот узел используется, чтоб смешать все текстуры, которые используются для ландшафта, таким образом, что их можно будет раскрасить на ландшафте по отдельности, используя инструменты Landscape Painting. Таблица ниже показывает, какие текстуры связаны с названием уровня и, какие режимы смешивания они используют.
Когда вы первый раз закладываете узел Landscape Layer Blend, он будет пустым, как показано на картинке с номером один. Чтоб добавить к нему Layers, вам сначала нужно выбрать узел в Material Graph, а затем в панели Details, кликните на иконку Plus, которая находится между словом Elements и иконкой Урна. Эта иконка отмечена желтым на картинка с номером 2.
Режим смешивания уровня Base Color
Текстура | Название уровня | Тип смешивания | Вес привью |
T_ForestGround_D | Soil | LB Weight Blend | 1.0 |
T_Ground_Grass_D | Grass | LB Height Blend | 0.0 |
Snow as a Vector 3 | Snow | LB Height Blend | 0.0 |
Режим смешивания уровня Normal
Текстура | Название уровня | Режим смешивания | Вес привью |
T_ForestGround_N | Soil | LB Weight Blend | 1.0 |
T_Ground_Grass_N | Grass | LB Height Blend | 0.0 |
T_Noise_N | Snow | LB Weight Blend | 0.0 |
После закладки узлов Layer Blend, самое время связать их с Texture-картами. После чего у вас должно получиться нечто такое:
Связи материалов были раскрашены в Photoshop, чтоб вам было проще понять, как все это соединяется. В настоящее время Unreal Engine 4 не дает возможности изменять цвета линий, соединяющих узлы материалов.
Если тебя посылают в гугл — это не значит, что хотят тебя обидеть\унизить\самоутвердиться за твой счет. Это всего лишь означает, что твой вопрос довольно элементарен и у тебя наверняка получится найти ответ самостоятельно. От этого выиграют все — ты повысишь свой скилл гугления, лучше разберешься, а остальные не потратят свое время на повторение в сотый раз того, что и так легко найти.
Если ты уже прошерстил первые 2–3 страницы гугла и ничего не нашёл, удостоверься, что ты правильно гуглишь:
- твои запросы должны быть на английском с припиской в конце unreal engine (например, set start level unreal engine)
- постарайся как можно сильнее обобщить запрос, например, не “как перекрасить кубик когда у меня игрок нажмет кнопку”, а “change material parameter on button event unreal engine”.
Посоветуйте с чего начать. Курсы, ссылки, вот это все.
Освещение постоянно меняется, то светлеет, то темнеет.
Так работает автоэкспозиция. Отключить её совсем или настроить можно через постпроцесс. Для отключения выставьте минимальное и максимальное значение одинаковым в разделе экспозиции в настройках постпроцесса. Убедитесь, что вы попадаете в объем постпроцесса, либо что он бесконечный (галочка Unbound). Что-то еще узнать по этой теме можно прогуглив “auto exposure unreal engine”.
Объекты исчезают при отдалении камеры.
- Проверяем лоды: нужно проверить как выглядит ассет в разных лодах, возможно в одном из них его не видно вовсе. Так же у лодов есть возможность скрывать объект в зависимости от настроек графики (пробить этот вариант можно выставив все пункты скалабилити на эпик).
- Проверяем дистанцию прорисовки у объектов (кулинг): у одних ассетов на уровне (например, статик или скелетал меши) это настройка draw distance, у других (например, у фолиажа) это cull distance
- Проверяем материал: ищем в материале все ноды, которые так или иначе могут быть связанны с дистанцией или глубиной пикселей, например функция CameraDepthFade или Distance_Blend или просто Camera Distance в сочетании с Absolute World Position может скрывать объект на определенной дистанции от камеры
- Баунд боксы: проверяем достаточен ли размер баунд бокса объекта для отображения, можно попробовать сильно увеличить баунд бокс для проверки.
Импортирую меш, а он раздельными кусками в движке. Как импортировать одним мешем?
Самым лучшим решением будет объединить меш в любом 3D пакете, но, если такой возможности нет, то в окне импорта нужно поставить галочку Combine Meshes.
Импортирую меш, а пивот не там, где в 3д пакете.
Сбросьте позицию модели в 0.0.0. в 3D редакторе, чтобы ось координат и пивот совпадали, тогда он импортируется корректно.
Можно ли поменять пивот в движке?
Конечно проще и лучше сделать это изначально в 3D редакторе, но если вам этот способ не подходит, то можно делать так или так.
А что насчет целых сцен? Как импортировать разом сцену, сохраняя и пивоты объектов и позиции?
Импорт целых сцен разом — кейс нетривиальный. С дефолтными настройками импорта у вас сохранятся позиции на сцене, но пивотом у всех объектов станет 0.0.0 сцены.
Если при импорте убрать галочку Transform Vertex to Absolut, то у каждого объекта будут сохранены пивоты, но позиции на сцене не сохранятся.
Чтобы сохранить и позиции и пивоты объектов, можно импортировать сцену через File — Import Into Level. Пивоты объектов сохранятся, а сами объекты будут расставлены на уровне как в 3D пакете. Так же там есть опция импортировать сразу как отдельную сцену в блюпринт акторе.
Оказалось всё довольно просто.
Нажимаем на стрелочку в окне просмотра.
И выбираем пункт High Resolution Screenshot.
В появившемся окошке выбираем нужное разрешение путём установки коэффициента
Screenshot Size Multiplier в диапазоне от 1 до 10.
(при 10 будет x(y) * 10 где x,y разрешение экрана, то-есть было 100х100 станет 1000х1000)
И нажимаем на значок в правом нижнем углу если вам нужен весь экран
или в левом нижнем если нужна область.
Картинка сохранится в папку проекта ваш проект/Saved/Screenshots/Windows/
Если нужно убрать значки BP, нужно убрать галочку
Show=>Developer=>Composite Editor Primitives
Читайте также: