31/03/2020

Создание пещеры Мерлина в UE4

Всем привет! Меня зовут Лиа Кроненбергер, мне 27 лет, и я — увлеченный 3D художник с опытом в создании архитектурных чертежей. Я& открыла в себе любовь к 3D искусству четыре года назад, когда работала с AutoCAD в качестве CAD-чертежника. Я решила развиваться и дальше в направлении 3D и поступила в SAE Institute Bochum, откуда выпустилась в прошлом году с дипломом бакалавра первой степени в Game Art Animation. Во время учебы я немного занималась фрилансом и позже устроилась на подработку в местную игровую компанию (Z-Software), где мне выдалось поработать над несколькими небольшими играми.

Испытание Artstation "Легенда о короле Артуре"

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

Я хотела улучшить свои навыки создания трим разверток (trim sheets), работы в Substance Designer и настройки освещения, поэтому искала окружение, работая над которым можно было бы это сделать. И, конечно, сама суть испытания — создать достойную работу в портфолио! 

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

Помимо концепт-арта и развертки, предоставленных нам Джереми, я вдохновлялась вселенной Гарри Поттера, а именно — фотографиями, которые сделала в прошлом году на туре по студии в Лондоне. Тогда у меня появились идеи для нескольких пропов, которые впоследствии были добавлены к концепту, как, например, подвешенные увеличительные стекла.

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

Создание сцены 

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

Ключевыми элементами я считаю базальтовые колонны, стул, армиллярную сферу и длинный ковер. В то время как базальтовые колонны — уникальные скульптуры с отдельной текстурой, все остальные ассеты, включая другие ключевые элементы, я решила делать с помощью трим разверток (trim sheets).

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

В начале я настроила PBR (фотореалистичный) Master Shader, включавший в себя изогнутую нормаль (bent normal), отражающие неровности (specular cavity) и возможность накладывать кастомизированные запеченные нормали (custom baked normal) и карты краевых повреждений (edge damage map) на трим текстуры. Bent normal и specular cavity я решила использовать, чтобы попытаться улучшить качество, custom maps собиралась использовать для модифицирования разбивки (tiling) или чтобы сделать ассеты более уникальными. Для запечения кастомизированных карт, краевых повреждений (edge damage) (то же, что и модифицированные искривления (modified curvature)) и изогнутых нормалей я создала шаблон запекания в Substance Designer и пропустила через него все ассеты после того, как закончила с их моделированием.

У меня ушло много времени на создание базовых материалов (base materials) и трех тримов: для ткани, камня и дерева. В конце концов, это было для меня одним из основных пунктов среди всего, что мне хотелось сделать в этом проекте! Для трима ткани я создала паттерны в Substance Designer (кроме одного, для которого использовалось фото). Для тримов камня и дерева я использовала другую технику: запекание высокополигональной модели на плоскость с ID материалов. Я использовала заранее заготовленные паттерны, поскольку сильно отставала от графика из-за некоторых непредвиденных вещей, происходивших в моей жизни. Эти тримы потом также были текстурированы в Substance Designer.

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

Декорированием сцены я занималась в те дни, когда была у меня не было сил заниматься чем-либо еще, а делая это я могла расслабиться и отдохнуть. 

Сцена заготовок: 

Базальтовые колонны

Огромная часть сцены состоит из базальтовых колонн, так что эти модели я закончила в первую очередь. Каждая колонна состоит из 4 базовых моделей и собрана вручную. Из этих моделей 3 представляют собой одиночные колонны, а последняя — это крупное скопление различных формаций камней. Я постаралась сделать эти базовые модели так, чтобы каждая сторона (включая верх и низ) выглядела совершенно по-разному. Таким образом, я могла их использовать ОЧЕНЬ часто, и это не было очень заметно. Все они собираются в единое текстурное полотно (atlas) и текстурируются с помощью Substance Designer.

Одна из колонн, сделанная в ZBrush, представленная под разными углами:

Ваяла я в основном с помощью кистей ClayBuildupMalletFast2 и TrimArc. После того, как скульптуры были готовы, я использовала встроенную в ZBrush децимацию и еще немного уменьшала мешы в 3ds Max в тех метах, изменение которых, по моему мнению, не должно было повредить силуэт. 

Для создания правдоподобных форм естественно понадобилось собрать много опорных изображений. 

Все 3 колонны под разными углами в движке: 

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

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

Я просто произвольно разместила несколько цилиндров и сферу в 3ds Max, а затем объединила их и деформировала получившийся объект в ZBrush

Раннее тестирование в Unreal

Также стоит упомянуть, что на начальных этапах работы я сделала мастер-шейдер со случайным изменением цвета и наложением деталей текстур (detail texture overlay), что позволило получить еще большее разнообразие ассетов. Эту вещь я использовала не только для базальтовых колонн, а почти для всех элементов сцены.  

Случайное изменение цвета управляется через едва заметную текстуру (32×32 px), которая смешивается с базовым цветом в мировом пространстве (world space). 

Книги и свитки

Моделирование книг я начала с создания нескольких моделей в 3ds Max с разным уровнем детализации, собираясь использовать более детализированные книги только там, куда игрок будет смотреть чаще всего, например, сверху стопок книг или на полках, находящихся на уровне роста игрока. 

Получилось 4 разных книги и 4 разных обложки для UV слоя. Потом я смоделировала книги и различные свитки и развернула их в единое полотно. 

Затем я заготовила разные группы книг (стопки и просто разбросанные книги) с симуляцией физики в 3ds Max. Так намного проще помещать объект на сцену в Unreal. Еще одно преимущество подобного подхода в том, что сгруппированные книги оказывают меньшее влияние на производительность, так как вызывать один большой меш эффективнее, чем несколько маленьких. 

Использовав несколько разных методов, я смогла получить большое разнообразие книг. После того, как все группы книг были сформированы, я в первую очередь одновременно открыла все UV и произвольно поместила UV обложек книг в одну из 4 разных стопок. Дальше я начала работу над шейдером в Unreal, реализуя настройку случайного изменения цвета, которую я уже делала для базальтовых колонн, но с другими параметрами и текстурой изменений размером всего 4×4 px. Изменение цвета тут работает следующим образом: при помещении на сцену книга приобретает один из 16 возможных цветов, которые я задала в карте размера 4×4 (каждый пиксель имеет свой цвет). Я также решила попробовать использовать флипбук (flipbook) текстуру для этого шейдера. Так я могла устанавливать 4 разных слоя деталей на одну текстуру и затем смешивать их в шейдере. Для каждого слоя деталей были свои экземпляры материалов, что позволяло мне просто назначать экземпляры материалов книгам в сцене. В завершение, я решила сделать два сета текстур для базового цвета вместо одного, которым также назначались разные экземпляры материалов. 

Итак, получилось довольно много вариантов: 8 различных основных стилей обложек + каждая может иметь один из 4 разных стилей деталей + 16 цветов. Проблема, с которой я тогда столкнулась — заготовленные группы книг Unreal распознавал как единый объект, так что все книги в группе получали одинаковый цвет. К сожалению, у меня не было времени нормально разобраться с этой проблемой, так что я обошла ее, оставляя немного базового цвета в самих базовых текстурах и затем добавляя сверху немного произвольного изменения цвета. Таким образом, вся группа лишь немного отличалась от соседних, но в то же время все книги в ней имели явно различный цвет. Позже я реализовала смешанную с миром автоматическую пыль в шейдере и также добавила несколько декалей грязи в некоторых местах! 

Работая над текстурами, я использовала фотографии моих старых книг, создала базовый материал в Substance Designer и скомбинировала все в Substance Painter с помощью инструмента проекции. Для создания содержания свитков мне также понадобились фотографии, но их я потом модифицировала в квадратную маску-текстуру (square mask texture) в Affinity Photo, прежде чем импортировала все в Unreal и использовала в качестве проекции декали на открытые книги и свитки. 

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

Паутина 

Паутина полностью сделана в Substance Designer. Я начала с создания базы паутины, используя преимущественно узлы splatter circular и shape mapper, а затем исказила ее, чтобы получить разные вариации. 

Пыльные и растянутые части сделаны из царапин, которые переводятся из декартовой в полярную систему координат и пропускаются через узлы деформации (warp nodes).

Некоторые нити я расставила вручную с помощью узлов трансформации. Паутинки потом были размещены на текстурное полотно в Substance Designer, и я настроила 4 меша в 3ds Max, чтобы использовать это пространство с минимально возможной излишней перерисовкой. 

В Unreal каждая паутинка представлена очень простым шейдером, который использует всего одну текстуру — маску, которую я создала в Substance Designer. Чтобы в результате паутина выглядела правдоподобно, я добавила управление цветом, прозрачностью и цветом подповерхности. Шейдер полупрозрачный и двухсторонний. Для симуляции движения я просто добавила узел SimpleGrassWind с низкими входными значениями.

Спецэффекты 

Большинство визуальных спецэффектов (огонь, дым, пыль, капли воды/дождь) взято из шаблонной сцены спецэффектов Unreal Engine 4, так как это не было моим приоритетом на этом испытании. Однако мне все равно пришлось настраивать их, чтобы они функционировали, как мне нужно. Так, например, огонь свечи был изначально пламенем факела, а капли воды — водопадом. Но были и вещи, которые я создавала сама. Например, настроила свечение свечи с помощью билборд спрайта для поддержания эффекта горения (я не использовала блум (bloom) эффект, поскольку он казался слишком сильным в зонах, где было небо), добавила автоматическую систему пыли, как и упоминала выше, и еще один эффект, который мне особенно нравится: течение песочных часов. Идею мне подал художник визуальных эффектов Джордан Хей при нашем общении по Discord. Это комбинация меша внутри стекла и тонкой поперечной плоскости с панорамной текстурой шума. 

Из постэффектов я добавила глубину сцены и резкость. Это значительно улучшило качество финальной картины.  

Вода 

Я добавила два разных типа луж, поскольку мне просто хотелось попробовать разные методы. Один может быть покрашен с использованием цвета вертексов и контролируется шейдером пола, в то время как другой является декалью. Для декали я использовала кисти free cloud и splatter в Affinity Photo и простую настройку PBR шейдера. 

Для окрашиваемых через вертексы луж я тоже использовала довольно стандартные значения, только на этот раз смешала их через цвет вертексов из красного канала и перемножила их с текстурой пола, из которой можно получить хорошую светопроницаемую лужу, если использовать более яркие цвета. Я также смешала их с картой высот, использовав Parallax Occlusion Mapping после того, как выучила эту технику благодаря руководству (setups) Линкольна Хьюза

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

Пещерное озеро я симулировала очень быстро, использовав карту нормалей деталей ткани с высоким разбиением (tiling), настроив значения PBR таким образом, чтобы текстура выглядела как вода.

Освещение  

Я начала с нейтрального серого материала в качестве базового и часто сравнивала значения и оттенки с концепт-артом во время всего процесса настройки освещения. Для этого я использовала десктопный инструмент выбора цвета ultimate color picker и изменяла настройки света, пока не была удовлетворена.

Я использовала режим смешанного освещения. Солнце, небо и свечи имели перемещаемый (movable) тип освещения, что позволяло использовать объемность и подповерхностное рассеивание. Все остальные источники света были полностью запеченные (fully baked). Естественное освещение в основном получается из небесного освещения и нескольких запеченных местных (spot) и точечных (point) источников света (они в основном не имеют теней). Для получения лучшего качества небесного света я срендерила его кубическую карту (cubemap) со сцены, воспользовавшись ассетом Scene Capture Cube

Яркие центр и фон на самом деле "сфабрикованы" с помощью спрайта тумана (просто текстура с небольшой панорамой и также изначально взята из шаблона Unreal Engine Particle Effects), который обладает интересным побочным эффектом: при передвижении сквозь него он все также выглядит густым!

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

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

Я также увеличила Screen Space Reflections Quality до 100 в настройках постобработки, чтобы улучшить общее качество сцены. 

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

Заключение 

Я бы сказала, что одной из самых серьезных проблем было придать окружению свой характер, при этом придерживаясь концепта. Помимо этого, в начале было довольно сложно правильно построить композицию, сделав размеры максимально приближенными к концепту. Что касается производственных вещей, мне было интересно делать образцы ткани, трим развертки (trim sheets) в целом и паутину, но здесь также возникли трудности, так как все это было для меня в новинку. 

После этого испытания мне стало комфортнее работать в Substance Designer. Более того, я узнала многое о композиции, когда анализировала концепт и выборы других участников. Еще одна вещь, которая, по моим ощущениям, помогла мне развиться сильнее — обратная связь с другими художниками. Было очень приятно взаимодействовать с сплоченным сообществом испытания, и я старалась каждый день комментировать чьи-либо работы. 

В общем, мне удалось создать очень хорошую работу для портфолио и встретить несколько действительно потрясающих людей! Я надеюсь этот разбор поможет кому-нибудь из вас!

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

Недавние посты

Все, что нужно знать о конкурсе UEDC-2020

28/05/2020
Алексей Савченко вместе с коллегами подробнейше разбирает аспекты и детали конкурса и отвечает на важные вопросы.

Комьюнити-маркетинг для Reddit

25/05/2020
Правильный пост в больших subreddit’ах вместе с правильно выстроенной активностью может очень здорово — и бесплатно! — представить вас сообществу в нужном свете. 

UE5, обновленный EULA и Epic Online Services — что важно знать

21/05/2020
Менеджер по лицензированию Алексей Савченко раскрывает тему подробнее и отвечает на самые популярные и важные вопросы.