Создание итальянской деревни в Unreal Engine 4

Создание итальянской деревни в Unreal Engine 4

Unreal Engine 4 Italian Village

Художник по игровому окружению James Brisnehan очень подробно рассказывает о своем большом проекте UE4 Villaggio Toscano, последовательно повествуя о дизайне и сборке уровней, моделировании в Maya, текстурировании с помощью Substance, создании листвы, освещении и полировке.

Villaggio Toscano: концепт и цели

Приступая к работе над проектом под названием Villaggio Toscano я поставил перед собой несколько целей. Во-первых, мне хотелось создать наиболее насыщенное, вылизанное и красивое окружение, какое только возможно. Во-вторых, я хотел почувствовать большую свободу в работе с Unreal Engine 4 и Substance Designer, попрактиковаться c тримом разверток (далее trim sheets), а также прокачать одну из своих слабейших сторон: растительность. Прежде всего  нужно было решить, какой тип окружения я хочу получить. Так что я нагуглил несколько картин, на которых были изображены итальянские улицы и городки. Их живые цвета и уютная атмосфера стали для меня прекрасным источником вдохновения. Там я нашел невероятное сочетание рукотворных поверхностей и природных элементов; идеальное количество растительности и миллион возможностей попрактиковаться с ее временными и погодными изменениями.

Создание итальянской деревни в Unreal Engine 4

Дизайн уровня

Изначально масштаб проекта были значительно меньше: на моем концепт-скетче было всего 8 зданий. Но в процессе работы я просто не мог удержаться, чтоб не заглянуть за угол очередного здания. А потом еще и еще…

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

Проект все рос и ширился, а в перерывах между наращиванием масштаба я урывками моделировал, пытался подобрать удачный свет и текстурировал. Мне бы следовало определиться с тем, что я хочу построить еще на стадии планирования  (и следовать этому плану), но самое веселое в проекте – это когда ты можешь вдоволь поиграть с шаблоном в Unreal Engine 4. Это, как вернуться в детство, когда ты строишь что-то из лего или пытаешься создать идеальный парк в Rollercoaster Tycoon. Я думаю, иногда стоит подурачиться, потому что благодаря этому в финальной версии городка появились такие фантастические области, как широкая главная улица, городская площадь и две прилегающие улицы.

Создание итальянской деревни в Unreal Engine 4

Создание итальянской деревни в Unreal Engine 4

Моделирование зданий

Здания – это первое, что я начал моделировать и текстурировать после блокинга. В Unreal Engine 4. Я использовал BSP, чтобы наблочить 8 строений. Я нарисовал их на своем концепт-скетче, а потом экспортировал в Maya, чтоб использовать в качестве гайда. Моделировать каркасы зданий было достаточно просто, так как это просто круглые кубы с пробитыми в них дырками.  Добавление же деталей потребовало куда более кропотливого планирования и обдумывания.

Создание итальянской деревни в Unreal Engine 4

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

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

Создание итальянской деревни в Unreal Engine 4

Что касается внутреннего вида зданий, я подумал, что мог бы обойтись простой текстурой, которая создавала бы иллюзию наполнения… но нет. Та идея была просто ужасна. Назад к чертежной доске! «Какой минимум я мог создать для внутреннего пространства, чтоб оно выглядело прилично?», — подумал я. «Как насчет куба с инвертированными нормалями?» Я протестировал этот способ и могу сказать, что он работает вполне неплохо. Реверсивные нормали выступают в качестве односторонней ловушки для света, позволяя солнцу проникать внутрь комнаты сквозь окна, при этом не просвечивая постройку насквозь, Добавление штор скрыло бы резкую пустоту внутреннего пространства. И если бы я поместил их только внутрь куба с неподвижным точечным светом, полупрозрачные шторы ловили бы и внешнюю и внутреннюю подсветку, создавая иллюзию большей наполненности.

Создание итальянской деревни в Unreal Engine 4

(Пере)освоение Substance Designer

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

И если мы говорим о программном обеспечении, которое на сегодняшний момент используется в игровой индустрии, то неплохо бы уметь работать с Substance Designer (ранее я лишь единожды пробовал эту программу). Освоить trim sheets было достаточно легко: парочка уроков и дело в шляпе! А вот над освоением Substance Designer пришлось попотеть. Даже не смотря на том, что я уже однажды пользовался этой программой, мне пришлось начать ее изучение с нуля.  После туториалов начального уровня я приступил к изготовлению текстур камня и брусчатки. Сначала я решил создать несколько разных типов камня, а потом попробовать по-разному скомбинировать их, используя узел ‘flood fill’. Выглядело это ужасающе.

Создание итальянской деревни в Unreal Engine 4

Так я принялся искать более специализированные туториалы по созданию камней и брусчатки. Я тщательно изучил, как там блочат формы и добавляют детали, используя узлы типа  ‘Warp’ и  ‘Slope Blur’, а потом попробовал снова. На этот раз получилось гораздо лучше. Затем я взял паузу и продолжил работу над прочими составляющими проекта, а потом  вернулся к камням и брусчатке, что позволило увидеть все это по новому, лучше использовать  референсы и прокачать промежуточный результат.

Создание итальянской деревни в Unreal Engine 4

Я начал вплотную работать с Substance Designer: собирать техники и стратегии из разных туториалов и вспоминать названия нужных узлов.  Я решил, что должен создать список нужных для работы текстур: трим каменной кладки, трим крыши/водостока и глазированную черепицу. Я начал крышу с моделирования простой геометрической формы для быстрого нормального запекания, потом подчистил карту в Photoshop, сделал ее тайловой и наблочил некоторые маски. Наконец я перенес то, что получилось в Designer, чтоб превратить заготовки в материал для тримов.  Управлять всем этим гораздо  проще, когда разбиваешь работу на подматериалы: металл, краска, ржавчина, глина и цемент, а потом собираешь все вместе, используя маски.

Для тримов камня и черепицы я использовал другой рабочий поток. Из просмотренных туториалов я понял, что лучше начинать с базовых форм, потом уже приступать к надстройке деталей в поле высот. Такой порядок действий необходим, когда скульптурируешь с помощью узлов. Законченное поле высот можно использовать для создания текстурных карт normal, roughness и ambient occlusion. Осталось разобраться с цветом. Для этого берем элементы других каналов и прогоняем их через узлы ‘gradient map’.

Создание итальянской деревни в Unreal Engine 4

Я достаточно поднаторел в  Substance Designer, чтоб на базе полученных знаний начать разрабатывать собственный рабочий поток. И любому, кто читает эту статью, я бы порекомендовал «My Toolkit». Я уверен, что узнал про эту штуковину из серии Youtube-видео на канале Allegorithmic (переименован в  «Substance by Adobe»).  Идея в том, чтоб создать файл или ‘Package’ для наполнения лайфхаками и графами, чтоб те были под рукой. Например, я создал текстуру древесины с параметрами которые отвечают практически за все, начиная от размера узелков и до угла древесных волокон.  Также можно было легко забить значения высоты, нормали, AO, масок и контраста. Я сохранил универсальный граф деревянной текстуры в моем toolkit, и теперь, когда мне нужно что-то деревянное, я просто перетягиваю этот граф, как кастомный узел,  тем самым экономя себе часы работы.

Еще один граф, который я создал  для toolkit – это граф быстрого старта для материалов UE4. Если я начинаю работу над новым материалом, я копирую граф из  toolkit, переименовываю его, а все нужные параметры и набор нужных аутпут-узлов уже подобран так, как мне надо. Когда я раньше начинал граф с нуля, мне всегда приходилось тратить много времени на такие вещи, как  добавление  AO к аутпутам, разбивка пути поля высот на нормальную карту и AO, подключение некоторых  узлов ‘uniform color’ к аутпутам цвета, шероховатости и металла, чтоб куб не выглядел  зеркальным и  вмешивание  серых карт в  законченную RGB-текстуру. С UE4 графом быстрого старта мне больше не нужно проделывать все эти манипуляции, и я могу сразу начать работу с полем высот.

Создание итальянской деревни в Unreal Engine 4

Моделирование всего остального

Когда набор текстур готов, я возвращаюсь к наполнению библиотеки модульными ассетами. Я тут немного переборщил, создав такую огромную вариативность ассетов (так много, как я думал мне понадобится, но больше, чем я на самом деле использовал). Каждый раз, когда я смотрел на референсы, то думал: «О да, мне нужно сделать что-то такое»», или «Или мне нужно сделать несколько вариантов вон того!». В процессе работы над проектом я выбирал нужный вариант основываясь на его эффективности По крайней мере текстурировать было просто, так как я везде использовал trim sheets и к счастью я нашел в  UE4 функцию, которая создала все LOD за меня. Если бы мне пришлось создавать все LOD для  284 уникальных ассетов самостоятельно, я бы с ума сошел..

Создание итальянской деревни в Unreal Engine 4

На что стоит обратить внимание на стадиях моделирования и текстурирования

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

Создание итальянской деревни в Unreal Engine 4

Большую часть материалов я создал полностью в  Substance Designer по аналогии с тримом камня, но для металлов потребовался другой рабочий поток. По некоторым причинам я решил создать один трим металла для всех ассетов, которые мне понадобятся для окружения в целом, и другой — для декоративных элементов из кованного железа. Чтоб воплотить в жизнь этот план, я тщательно спланировал, какие ассеты я хочу создать и какие металлические элементы для них понадобятся.  Затем я смоделировал высокополигональные и малополигональные модели фонарей, перил, петель, цепей, дверных ручек и т.д. Я сохранил верхнюю треть UV-пространства для горизонтально уложенных тримов (по сути это 4 разных металлических бруска ). Затем я перенес их в Substance Painter, чтоб запечь и текстурировать. Декоративные железяки я также начал моделировать в Maya, но в этом случае необходимо было начать с кривых NURBS. Для начала я создал несколько базовых кривых, экструдировал по ним многоугольники, разделил на подгруппы, раскидал по разными паттернам и декорировал листьями и шипами. Возвращаемся в Painter для запекания и текстурирования.

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

Создание итальянской деревни в Unreal Engine 4

Скатерти, занавески и колонны  – это единственные ассеты которые не имеют переиспользуемых  или многоцелевых текстур. Моделирование скатерти и занавесок блещет своеобразием. Так как я использую дешевую версию «Maya LT» (там нет встроенной симуляции материи), мне пришлось задействовать кривые NURBS в качестве помощи в ручном моделировании скатертей и занавесок  в высоком разрешении. Затем я создал версии с низким разрешением, удалив контуры кромок, запек нормальные карты и текстурировал скатерти в Substance Painter, а занавески в —  Substance Designer. В Painter для скатерти я использовал трафареты для добавления складок и паттерн золотой оборки. В Designer я использовал простые формы, чтоб создать ‘геральдическую лилию’, уложил ее в паттерн и добавил все это в сгенерированный материал ткани, который я ранее кастомизировал. Затем в Maya я создал альтернативные версии занавески и скатерти, сплющив и растянув их в разные формы.  С колонной еще проще:  высокое разрешение > низкое разрешение > запекание > процесс покраски, хотя понять топологию  завитка  было не просто.

Создание итальянской деревни в Unreal Engine 4

Все мои новые материалы уже в Unreal и я начинаю добавлять цветовые вариации. Процесс, кстати, был не сложный. Я просто добавлял узлы типа add, multiply, hue shift и desaturate в цветовой канал и конвертировал их в параметры. Затем я создал  инстансы  всех материалов и изменил цвета так как мне хотелось. В случае материалов для зданий я использовал узел height-lerp и vertex color painting, чтоб смешать 4 текстуры  (2 типа кирпича и 2 типа штукатурки) и узлы parameter, чтоб  создать инстансы с разными цветовыми палитрами. Далее я также добавил узел parallax occlusion mapping, чтоб кирпичи приобрели  3D-вид.

Создание итальянской деревни в Unreal Engine 4

Я забыл, когда именно это произошло, но решил, что нужно добавить больше текстур ландшафту. Хоть моя брусчатка и выглядела многим лучше, в Unreal она больше напоминала простую текстуру на плоском ландшафте, а не настоящую улицу. Я подумал, что если разобью ее на секции, дела пойдут лучше. Я создал 3 дополнительные текстуры брусчатки и текстуру бетона. Затем подключил все их к моим ландшафтным материалам и начал раскрашивать, но столкнулся со странной проблемой… лужи. Раньше я создавал лужи так: разветвлял слой брусчатки, делал его темнее и более глянцевым, а затем применял линейную интерполяцию нормали с чистым цветом. Но тот слой луж не работал с новыми слоями брусчатки. Я попытался создать слой луж с чистыми цветами для текстурных карт normal   roughness и normal color, но потерялось слишком много деталей Так что мне пришлось  сделать отдельные вариации луж для всех новых текстур.

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

Создание итальянской деревни в Unreal Engine 4

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

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

Изначальный план был таков: сначала смоделировать высокополигональные версии всех этих растений, затем запечь их в текстуры и наконец использовать карты текстур для создания малополигональных  моделей. Звучит просто, да? Что ж, в результате я переусложнил первый шаг, который в свою очередь создал сложности на второй стадии. Я начал с моделирования семпла каждого цветка, нескольких листьев, ветки и лозы в Maya. Затем я решил перенести все это в Mudbox, чтоб сделать из них  высокополигональные объемные модели, а потом немного раскрасить. После этого я запек нормаль, AO, и цвет из объемных моделей в модели со среднем разрешением из Maya и перенес их в  Substance Painter, чтоб закончить создание материала. Также я решил сделать альтернативную версию материала.

Создание итальянской деревни в Unreal Engine 4

Я загрузил законченные материалы для среднеполигональных моделей в Maya, готовый к финальному запеканию, но  внезапно почувствовал неуверенность в плане того, как все это будет работать. Я никогда раньше не создавал растения на таком уровне сложности и у меня не было плана по моделированию низкополигональных растений. Я имею в виду, что не был уверен, как лучше подготовить среднеполигональные модели к запеканию на плоскости. Я видел множество туториалов по созданию game-ready моделей травы и деревьев, но у меня не было ни малейшего понятия, как смоделировать петунии и бугенвиллии. Затем у меня появилась странная идея, и я загрузил «Uncharted 4». Я прыгнул в итальянский уровень, нашел несколько петуний, плющ и бугенвиллии, затем влетел photo-mode камерой прямо в растения, чтоб понять, какие части смоделированы, а какие — просто плоские текстуры. Это очень помогло, и с новым планом я вернулся в Maya и начал подготавливать среднеполигональную  растительность.

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

Создание итальянской деревни в Unreal Engine 4

Когда все было подготовлено для фазы запекания, появилась очередная проблема. У меня были среднеполигональные модели с полным набором собственных материалов, и я готов был запечь их на плоскости, но ни одна моя программа не способна была запечь весь материал (особенно это касалось normal map). Mudbox мог запечь только цветовые каналы материала. Так что  мне пришлось загружать каждую текстурную карту среднеполигональной модели в цветовую карту, чтоб все это можно было перенести. Я загрузил  карты roughness, AO и thickness, цвета и все маски и даже преобразовал нормальную карту среднеполигоналей в поле высот для запекания.

Создание итальянской деревни в Unreal Engine 4

В результате я получил тонны разных текстурных карт и из-за запекания среднеполигональных моделей и из-за переноса высокополигонального материала.  Я скомбинировал и подчистил несколько карт в Photoshop, организовал все и скинул все кары в Substance Designer, чтоб скомпоновать их в материалы, которые можно использовать в UE4. Я решил объединить все в SD, чтоб можно было видеть, как будет выглядеть финальный материал и вносить какие-либо изменения и исправления. Не смотря на крайне неровный рабочий процесс, я получил весьма неплохие финальные материалы.

Создание итальянской деревни в Unreal Engine 4

Шаг третий: время создавать низкополигональные модели растительности. Но прежде я решил создать несколько цветочных горшков, чтоб лучше понимать какого размера будут мои группы растений.  В конце концов у меня получилось 10 разных горшков, опять же вариации я выбирал исходя из эффективности. Ok, теперь я был готов к моделированию растений.  Я начал с распределения материала на плоскости и разрезания на отдельные куски, по ходу пьесы убеждаясь, что я вырезаю достаточно крупные пространства, чтоб позже  уменьшить  quad overdraw. Затем я расслоил кусочки на квадраты и треугольники и завернул их в формы с бОльшим  3D эффектом. Я распределил их в ветки, а затем —  в кусты, букеты и прочие композиции, используя скриншоты из Uncharted 4 в качестве референсов. После тестирования и редизайна я получил довольно большой выбор модульных кластеров.

Создание итальянской деревни в Unreal Engine 4

Когда все было загружено в  Unreal, настало время создания растительных материалов. Мне пришлось оставить цветы белыми, чтоб иметь возможность наслаивать разные цвета поверх, используя маски. Я начал с 4 или 5 цветов и добавлял еще по мере необходимости. К концу проекта у меня накопилось 8 цветовых вариантов для базовой версии материалов цветочков и 6 —  для альтернативной версии, плюс 3 — для плюща.

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

Создание итальянской деревни в Unreal Engine 4

Детализация и декорирование городка

Когда настало время  переноса в уровень UE4, поначалу я размещал все вручную. Я хотел, чтоб все постройки имели уникальный вид, но так как я продолжал расширять и изменять шаблон городка и добавлять группы ассетов,   это казалось все более утомительным.  Перемещение построек стало ночным кошмаром: сами понимаете, еще то счастье каждый раз выделять все окна, шторки, дверные ручки, двери и декоративные элементы. К счастью когда я просматривал серию туториалов, ища лайфхаки  по освещению, я нашел эпизод по использованию  Unreal’s Blueprints, в котором рассказывалось, как изготовить  префабы ассетов. С помощью этого метода я мог полностью собрать каждое здание и с легкостью закинуть его инстансы в уровень, когда мне это было нужно. Вместе с фоновыми зданиями финальный макет городка содержал 67 построек, так что это сэкономило мне кучу времени. Как только макет начал меня полностью устраивать, я кастомизировал модели строений в центре городка, добавив украшения, разные цветочные штучки и немного изменив архитектуру. Я также добавил дым, выходящий из труб некоторых зданий, чтоб вдохнуть в них больше жизни.  (их я просто позаимствовал из стартер пака UE4.)

Создание итальянской деревни в Unreal Engine 4

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

Создание итальянской деревни в Unreal Engine 4

Как помните, когда я только начал создавать текстуру зелени, я включил два кластера разбросанных цветочных лепестков, чтоб можно было вырезать их в качестве сеток и располагать в рандомных местах.  Во время участия в челлендже Artstation я познакомился с  инструментом  Unreal’s foliage brush, так что когда вернулся к работе над городком, у меня появился план получше, как раскидать эти лепестки.  Я вырезал несколько отдельных лепестков, превратив их в  1-полигональные сетки, продублировал их, чтоб получить по одному лепестку для каждой цветовой вариации цветка, загрузил их в foliage brush и покрасил ее городок. С помощью этого метода я мог укладывать лепестки прямо на тенты и зонты или посыпать ими дорожку или запустить лепестки в плаванье по водостоку.

Создание итальянской деревни в Unreal Engine 4

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

Я разузнал, какие магазины и рестораны распространены в Италии, при этом убив кучу времени на перевод вывесок и почти удвоив количество референсов.  Когда я понял во что хочу превратить каждое здание, я скачал несколько бесплатных шрифтов, которые выглядят по-итальянски и  засел за Photoshop, пытаясь припомнить, чему меня учили в плане типографики и дизайна логотипов.  Для меню-бордов сэндвичей я просто собрал вместе текстурные атласы вырезанных фото. В Unreal я опять разбил меню с помощью узла ‘UV Remap’, чтоб создать инстансы каждого меню. Узел UV remap немного привередливый, так что мне пришлось добавить ‘Constant 4 Vector’ и ‘Make Float 4’, чтоб все заработало.

Создание итальянской деревни в Unreal Engine 4

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

Создание итальянской деревни в Unreal Engine 4

Освещение и наведение красоты

Освещение — это то, над чем я не только работал, но и изучал в течении проекта. Сложно переоценить важность освещения для любых 3D артов: оно либо выводить окружение на новый уровень, либо портит его. Я хотел осветить все так, чтоб показать истинную красоту этого места. Я подумал, что золотой час или рассвет – это то, что нужно. Мне нравится, как солнечный свет под низким углом отражается от зданий и делает деревья тенистыми.

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

Создание итальянской деревни в Unreal Engine 4

Перед тем, как заняться освещением, я прошел через фазу наведения красоты, приходясь по пунктам моего воображаемого списка низкоприоритетных вещей, которые тем не менее не дали бы мне жить спокойно. Я подправил материалы, изменил цветовые палитры, подвинул точки отражений и решил проблемы, связанные с  LOD. Самым сложным в этом списке было исправление UV-карты света для большой части моих ассетов. Некоторые из моих lightmap UV были натыканы слишком часто и тень от одной UV-оболочки могла перебрасываться на соседнюю. Я просмотрел уровень в режиме «только свет» и пометил все ассеты с худшими световыми картами, а также их настройки lightmap resolution. Это были по большей части двери, окна, ставни, некоторые из первых сделанных для проекта ассетов. В Maya я использовал инструмент automatic UV layout, и он очень помог мне с большинством UV световых карт. Настройки самых ранних ассетов были такими: максимизированное UV-пространство, плотная запаковка в UV-оболочки и иногда странный угол освещения. Я же изменил  настройки шаблона так, чтоб они обеспечили чистое запекание цвета. Второй раз я запаковал оболочки строго под углом в 90 градусов и оставил буферное пространство между оболочками в 2-3 пикселя шириной. (близко к внутри движковым настройкам lightmap resolution), чтоб предотвратить смешивание.

Создание итальянской деревни в Unreal Engine 4

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

Так как я отказался от пролетов, плей-тестов и вообще всего анимированного для моего портфолио, я немного сжульничать на финальных скриншотах. Для  21 оставшейся камеры я провел финальную полировку, тщательно всмотрелся в каждый кадр и внес конечные изменения. Я добавил дополнительную подсветку, чтоб подсветить объекты и впечатать отражения, передвинул  или скрыл объекты, которые портили композицию и подправил настройки color correction/post-process для каждой камеры (я не особо здесь что-то трогал за исключением баланса белого). Для одной камеры идеальный кадр случился прямо за зданием, так что я скрыл его, когда смотришь прямо через камеру. Также каждый лепесток, который укладывался вручную был немного поднят в воздух.  Я не особо хотел изучать эффекты в Unreal Engine 4 просто, чтоб у меня на скриншотах были лепестки. Плюс, в моем случае я мог контролировать расположение каждого лепестка, что только плюс для создания идеальной композиции каждого снимка.

Создание итальянской деревни в Unreal Engine 4

В итоге

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

Создание итальянской деревни в Unreal Engine 4

Все изображения принадлежат автору

Источник

ПоделитьсяВКонтактеLinkedIn
Прочитано
Dmitry
Комментировать


доступен плагин ATs Privacy Policy ©

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.