230 подписчиков

Пост-апокалиптическая тележка с едой в UE4

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.

Введение

Меня зовут Николай Маринов, мне 21, в данный момент я учусь в University of Ruse, изучаю компьютерную инженерию. Моему другу, Диану Дончеву тоже 21 и он изучает игровое искусство в Falmouth University. Мы оба из Русе, маленького городка на севере Болгарии.

Занялись игровым дизайном мы около 3х лет назад еще в старшей школе. С моими друзьями мы планировали изучать игровой дизайн, но из-за некоторых сложностей я не смог этого сделать и мне пришлось делать это самому. В то же время мой друг и я сформировали небольшую команду и начали работать над проектами в Unreal, все это быстро перешло в участие в соревнованиях и челленджах. После этого нас наняла небольшая компания под названием Velocity Ventures, где мы и провели несколько лет, работая над проектами и оттачивая навыки.

Мы работали над созданием приложений, которые позволяют агентам по недвижимости применять виртуальную реальность в работе. Еще мы работали над небольшим VR-приложением, с которым стали региональными победителями NASA Space Apps Challenge 2018 и недавно, концепция "спектрального анализа Луны в реальном времени" позволила нам занять первое место в NASA Space App Challenge 2019 и тем самым мы прошли в финал.

Окружение "Баничарница": Цели и общие детали

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

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

Сначала мы хотели сделать реал-тайм окружение. Идея была в создании тележки с едой, эдакую пост-апокалиптическую версию пекарни на колесах, Баничарницу, в которой выпекаются традиционные для Болгарии Банички. Мы хотели привлечь внимание людей из Восточной Европы, потому что, к сожалению, здесь не очень многие знают о CGI и разработке игр, поэтому мы хотели бы изменить это.

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

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-3

Процесс моделирования

Я использую 3ds Max, а Диан использует Maya. Это была проблема, поскольку мы не могли делиться файлами друг с другом. Поэтому здесь мы решили использовать Blender. Он крут, потому что помогает справиться со многими задачами и довольно эффективен в целом.

Чтобы получить желаемый стиль, мы решили углубиться в изучение ZBrush, а затем запекать текстуры в Substance Painter.

Мы хотели, чтобы ассеты не только выглядели хорошо, но и могли бы использоваться в играх. У всех ассетов довольно мало полигонов, а детали мы запекали в карту нормалей. Некоторые ассеты даже имеют одни и те же UV с другими ассетами, тем самым мы сэкономили количество текстур и плотность текселя, в то же время получив хороший внешний вид от текстур в разрешении 1024х1024. И только лишь у ассетов, которые будут близко расположены к камере игроку, карты в разрешении 2048х2048, но в то же время, UV у них пересекаются между собой. Вся магия происходит при запекании и на стадии текстурирования, о чем я расскажу позже.

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

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-5

Мы использовали референсы этих тележек, с которых и взяли некоторые элементы, используемые в реальном мире.

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

Террейн

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

Горы на фоне было довольно весело делать. У нас нет лицензии World Machine, так что мы искали альтернативы. И в итоге мы нашли Gaea, процедурный генератор террейна вроде World Machine, только в его бесплатной версии можно экспортировать текстуры в разрешении 1024х1024. Идеально! Мы посмотрели парочку уроков, чтобы знать что делать. Получившаяся гора идеально подошла нафон, а карты мы использовали в разрешении 512х512. После этого мы взяли карту высод и добавили ее в другой террейн, который был сделан из меньшего количества сегментов. У горы всего лишь есть карта нормалей и 3 цвета с разными масками. И вуаля - гора на фоне готова. Конечно, она не очень хорошо выглядит сблизи, но нам был нужен только силуэт. В результате мы опять же сэкономили память, которую можно направить на что-нибудь еще.

Текстурирование

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-6

Substance Designer

Над материалами мы хотели очень плотно поработать.

Основными из них стали трава, земля, грязь, кора и мох. В их создании мы воспользовались курсом Дэниела Фигера - Substance Fundamentals Series. Начали мы с грязи, в ней использовалось множество искажений, размытия и шума. После этого мы использовали этот же шум в других материалах, чтобы ускорить процесс. Затем мы нашли много референсов для травы и создали 6 различных типов кустов, которые являются комбинацией 12 различных видов травы. Позднее мы использовали те же альфы, чтобы в целом поддержать один стиль в сцене. Затем пошли камни, палки и ветки, листья и другие мелкие детали. Чтобы правильно и естественно смешать детали с землей 1) используйте нод Histogram Scan 2) подключайте его в карту с размытием нода Non-Uniform Blur 3) подключите слегка размытый фон в вход Grayscale 4) и затем разместите форму поверх всего. Так материал засияет другими красками.

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-7
Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-8

Для коры мы просто использовали Tile Sampler и тем самым размножили базовые формы. После этого мы воспользовались нодом Histogram Select, который позволил нам выбрать определенный уровень высоты и применить к нему цвет. Вот так мы и наслоили все это друг на друга.

Мох сделан тем же методом как и трава, но с немного другой структурой. Мы использовали Vertex Paint поверх коры и использовали шейдер, чтобы он применялся к мешу вдоль оси Z.

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-9

Материал школьного шкафчика я сделал еще пару месяцев назад для портфолио, и он прямо просился в эту сцену. Самое крутое, что для него просто нужен куб из 4-х полигонов.

Substance Alchemist

Материал "Банички" был самым хитрым. Мы знали, что подобного материала в принципе нет, и нам нужно делать его с нуля. Изначально мы подумали о фото-сканировании с помощью Agisoft PhotoScan и извлечении текстур из скана, но поняли, что это займет очень много времени и будет не очень полезно для пайплайна в целом. Вот здесь в дело и вошел Substance Alchemist.

Мы направились в местную пекарню, купили выпечки и сделали пару фотографий. После чего использовали цветокоррекцию и вырезали формы в Photoshop. После этого импортировали их в Substance Designer, чтобы сделать тайлы и добавить вариации (это можно было сделать и в фотошопе). После этого мы конвертировали их в черно-белое изображение и поправили его с помощью нодов Histogram и Highpass, получился довольно неплохой результат, который мы подключили в карту нормалей. Затем мы экспортировали ее и Diffuse в 8К, потому что хотели сохранить все детали, и есть один нюанс в Alchemist - он деструктивный. Основная причина почему мы использовали его - он позволяет получить хорошие и точные карты высот из нормалей, а также инструменты для работы с Diffuse. После этого мы экспортировали карты обратно в Designer, где и доделали материал.

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

Substance Painter

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

Материал камня мы полностью создали в Substance Painter, потому что хотели использовать нормали и АО после запекания хай-поли модели.

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-11

Растительность

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

Для самих плоскостей мы хотели попробовать различные техники. Все мы делали в 3ds Max по технике Тима Симпсона. Мы смоделировали ветки, шишки, запекли (спроецировали) их на 2D-плоскость там же, в 3ds Max. Мы повторили процесс пару раз и получили довольно много вариаций, которые могли разместить на деревьях. Здесь важно было использование референсов. То как гнутся ветки и где они расположены на дереве гораздо важнее, чем те же детали на его поверхности. Потому что их попросту видно издалека, и самое главное здесь - получить правдоподобный силуэт.

Для кустов мы использовали полезные техники из курса "Creating Foliage in Substance Designer" от Богодара Хаврюика. Потрясный курс. Мы создали все листья для кустов в Substance Designer. Сначала был выполнен базовый лист, затем добавлены вариации цвета и размера. Все это делалось в одном графе. В других графах мы делали букеты листьев и цветов. Опять же, форма идет первой, затем цвет и размеры. Все это мы выводим в одну текстуру прямо в Substance Designer. Как я уже говорил, в геймдеве важна оптимизация и эффективное использование "места".

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

  • Рисование по террейну. UE4 дает возможность добавлять меши на слои террейна. Вы можете изменять распределение, размер и другие параметры. Называется он Grass Tool, название говорит само за себя. Это неплохой подход, но у него есть проблемы: когда вы пытаетесь добавить несколько видов растительности, они начинают пересекаться. Единственный способ избавиться от этого - использовать уже другой слой. Не совсем удобный подход как по мне. Я не говорю что он совсем плох, просто для него нужна довольно сложная система слоев.
  • Рисование с помощью инструмента растительности. Это тоже хороший инструмент. Вы просто добавляете все нужные элементы в кисть и рисуете. Он отлично подходит для добавления крупных объектов. Однако довольно сложно получить из него что-то естественное.
  • Процедурная растительность (Procedural Foliage Tool). Вообще, это экспериментальный инструмент. Его довольно долго настраивать, у него множество опций и "правил", так как он пытается симулировать естественный рост растений. Он может сам распределять растительность и делает это вполне органично. Как по мне, это мощный инструмент, и так как он процедурный, можно довольно быстро изменять террейн или делать повторную симуляцию.

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

Сложности

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

Николай Маринов рассказал о создании окружения с Болгарскими мотивами под названием "Баничарница" совместно со своим другом, Дианом Дончевым.-13

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

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

Еще сложности возникли с освещением, у нас вообще был опыт его использования, но больше для интерьеров и реализма. Для этого проекта нам пришлось довольно плотно изучить техники освещения открытого пространства. Свет был динамическим, из-за большого количества растительности, не забывайте про галочку "Create mesh distance fields". В целом по настроению мы посоветовались с другом, Люцианом Стройни, он дал нам полезные советы и фидбэки. Так что большое спасибо ему и всем, кто помогал нам.

В целом работа была довольно сложной, но в то же время познавательной. Молодым разработчикам довольно сложно подготовиться к чему то заранее. И приходится решать проблемы по мере их появления. К тому же, пайплайн довольно требователен к оптимизациям и использованию различных программ. Помимо этого проблемой является и вдохновение с мотивацией, которые ведут вас вперед. Даже в таком маленьком проекте были подъемы и падения. Зачастую у художников бывает "отсутствие" вдохновения, но это работа. А работа должна быть сделана.

Оригинал интервью.

Если вам понравился перевод, ставьте лайки и подписывайтесь на канал!