Моделирование и текстурирование киоска, вдохновлённого восточноевропейскими городами начала 2000-х годов
Даниил Гиббс рассказал о проекте «Киоск», объяснил, как идея началась с ассета, подробно описал, как моделировались объекты, добавил такие детали, как гофрированные листы и оконные решётки, и показал, как он текстурировал каждый элемент сцены.


Введение
Я впервые занялся 3D в 2018 году, работая инженером в Москве. Мне совсем не нравилась эта профессия, и я знал, что долго в ней не задержусь, поэтому начал искать что-то, что действительно могло бы мне понравиться и на чём потенциально можно было бы построить карьеру. Сначала я рассматривал графический дизайн и работу в Photoshop. Но в какой-то момент, даже не помню точно, что именно стало причиной, я очень заинтересовался 3D, особенно в контексте разработки игр, и решил сосредоточиться на этом направлении.
Изучая различные 3D-пакеты, я в итоге выбирал между 3ds Max и Blender. Хотя 3ds Max в то время был более распространён, его интерфейс показался мне довольно сложным и неинтуитивным по сравнению с Blender. Я начал изучать моделирование с помощью обучающих видео на YouTube в свободное время после работы. Сначала я предполагал, что буду работать с текстурированием в Blender, но позже понял, что это не очень подходящий для меня вариант. Поточный рабочий процесс на основе узлов показался неудобным, а Blender редко используется в качестве основного инструмента для текстурирования в современных конвейерах разработки игр.
Следующие два года я в основном сосредоточился на улучшении своих навыков моделирования. После ухода с инженерной работы у меня внезапно появилось много свободного времени и достаточно сбережений, чтобы полностью сосредоточиться на развитии новых навыков, пытаясь пробиться в игровую индустрию. Именно тогда я начал более серьёзно изучать рабочие процессы текстурирования PBR. Промышленным стандартом как тогда, так и сейчас является Substance 3D Painter, и я сразу же почувствовал себя комфортно, работая с ним.
Чуть более чем через шесть месяцев, после публикации восьми проектов в моём портфолио, я получил свою первую работу, точнее, работа нашла меня через ArtStation. Так началась моя карьера в разработке игр в CM Games, где я работал над VR-проектом Into The Radius. Позже я присоединился к Social Quantum, внося свой вклад в мобильный проект Lost Future. В настоящее время я работаю художником по текстурам в L3D Studio, где фокусируюсь на реалистичном текстурировании PBR для транспортных средств и реквизита, используемых в AAA-проектах, включая Wardogs, World of Tanks, War Thunder, MXGP, Microsoft Flight Simulator и Enlisted.




Киоск
Изначально ассет киоска был создан как один из моих последних заказов на фрилансе. Мне пришло сообщение в Telegram с вопросом, могу ли я создать ассет киоска, вдохновлённый небольшими уличными киосками, которые обычно можно увидеть в России в начале 2000-х годов. Требовался средний/высокополигональный поликаунт, но без чрезмерного усложнения геометрии. Согласно заданию, камера должна была просто проехать мимо киоска в кадре пролёта, без крупных планов.
Из-за этого не было необходимости добавлять излишнюю геометрическую детализацию. Например, витрина была намеренно сделана плоской, а не моделировались отдельные товары на полках. После выполнения заказа я решил доработать ассет и подготовить его к публикации в моём портфолио. Собирая референсы, я старался максимально аутентично передать атмосферу той эпохи — типичный пыльный киоск где-нибудь в провинциальном российском городе начала 2000-х, обклеенный рекламными плакатами, публичными объявлениями и граффити.
У входа должен был стоять переполненный мусорный бак, а рядом — старый, но всё ещё крепкий стул, на котором продавец мог сидеть во время перекуров. Вокруг киоска беспорядок, лужи после недавнего дождя. Естественно, прямо перед окном продавца есть большая лужа. Чтобы люди не заходили прямо в неё, я поставил там поддон.
Большинство референсов было легко найти через Google. Однако найти хорошее изображение для витрины оказалось на удивление сложно, особенно такое, на котором не было бы отражений на стекле и которое имело бы достойное качество изображения. В конце концов, ChatGPT помог сгенерировать подходящий референс. После нескольких запросов у меня получилось что-то пригодное, не идеально, но достаточно хорошее для задачи.

Как упоминалось ранее, клиент хотел, чтобы ассет был среднеполигональным/высокополигональным, поэтому мне не нужно было запекать карту нормалей, что я обычно делаю для низкополигональных ассетов. Я придерживался того же подхода и с дополнительными пропсами, чтобы всё было единообразно.

Моделирование
Моделирование всех объектов началось с примитивных форм, определяющих силуэт. Большинство пропорций было намечено на глаз, а не с использованием строгих измерений реального мира, а позже я добавил интересные детали, такие как гофрированные листы и оконные решётки. Чтобы создать гофрированный металл, я сделал небольшую изогнутую плоскость в форме синусоиды и повторил её с помощью модификатора Array, пока не достиг нужного размера. Затем я добавил толщину с помощью Solidify и закончил работу с Bevel.
Для оконных решёток я использовал Subdivision Surface и Skin на простой краевой структуре, подобной той, что показана на видео ниже. Такой подход позволяет создать правильную изогнутую геометрию решёток без моделирования каждого элемента вручную. После этого я добавил модификатор Mirror по оси Z, применил Bevel и использовал Array для повторения решёток до нужной ширины.
Разрушенный синий фасад был создан с учётом Subdivision Surface. Я начал с добавления нескольких разрезов по петлям, чтобы согнуть край в нужную форму, затем применил модификатор и постепенно вводил дополнительные рёбра, слегка вытягивая геометрию для формирования крупных складок.
Остальные объекты были построены из простой примитивной геометрии с базовым Bevel, а большинство мелких деталей было добавлено позже на этапе текстурирования. Единственная оптимизация сетки, которую я выполнил, — удаление ненужных разрезов по петлям, созданных во время настройки оконных решёток после применения Subdivision Surface и Skin, поскольку они не влияли на окончательную форму.
Для UV-развёртки в Blender я всегда использую комбинацию дополнений UVToolkit, Texel Density и UVPackmaster. В итоге я разместил сам киоск на одном наборе UV, а дополнительные реквизиты — на другом.


В сцене используются две текстуры 4K. Чтобы оптимизировать плотность текселей, были удалены невидимые полигоны, а некоторые перекрытия UV использовались, например, на ножках стула или на пачках сигарет, висящих в окне. Кроме того, я добавил несколько готовых мусорных объектов, полученных с помощью фотограмметрии из Quixel, которые покажу позже на этапе текстурирования.
Текстурирование
Далее давайте рассмотрим процесс текстурирования. Я покажу настройку материалов в основном через видео. Так просто удобнее. Я не буду вдаваться в чрезвычайно подробные объяснения, но вы всё равно сможете увидеть, какие слои добавляются. Начну с самого киоска. Все материалы начинаются с основных цветов, за которыми следуют неровности поверхности и базовый Normal. После этого я добавляю такие детали, как износ и царапины на деревянной двери, потемнение выступающих элементов и различные цветовые вариации на вертикальных и горизонтальных поверхностях.
Эти вариации напоминают выцветание на солнце или изменение цвета. На вертикальных поверхностях они ведут себя больше как полосы, а на горизонтальных поверхностях они выглядят как сочетание различных пятен. Затем я добавляю изменение шероховатости, чтобы разбить зеркальные блики и создать более интересные отражения при освещении. Наконец, я добавил несколько тёмных и ярких царапин, чтобы закончить материал. Я использую аналогичный подход для синего покрытия фасада.
Металлический материал должен был выглядеть тёмным и грязным, с плесенью, ржавчиной и грязью, появляющимися вместе, сохраняя при этом относительно тонкую ржавчину. После этого я добавляю детали декора, такие как плакаты, граффити и объявления. Я не буду вдаваться в подробности о том, как я создаю материалы для бумаги и наклеек, поскольку это рабочий процесс, который я часто использую в своих проектах. Однако стоит упомянуть одну небольшую деталь: под объявлениями используется чёрный слой заливки.
Без него по краям бумаги появился бы белый контур из-за основного цвета. Затем я добавляю гвозди, протечки, различные виды грязи и, конечно же, лужи воды. Мне очень нравятся блики, которые они создают. Чтобы завершить материал киоска, я добавляю карту кривизны к базовому цвету в режиме наложения. Это слегка приглушает общий цвет, добавляя немного тени полостей, что помогает подчеркнуть мелкие детали поверхности. Я буду использовать этот приём ещё раз позже.
Далее идёт текстурирование земли. Здесь я смешиваю несколько материалов земли: рыхлая грязь, более гладкая почва со следами ног и почва с сухой травой. Затем я добавляю некоторые цветовые вариации, мусор и цветовую коррекцию. После этого я создаю лужи воды. Маска лужи позже повторно используется в качестве маски смещения для тесселяции. Опять же, я применяю карту кривизны в базовом цвете с наложением для дополнительной детализации. Однако в этом случае это не просто запечённая карта.
Это Curvature Sobel, сгенерированный с помощью специального фильтра, который преобразует карту нормалей текстуры земли в карту кривизны. Я извлек этот фильтр из Substance 3D Designer вместе с несколькими другими полезными фильтрами. Карта непрозрачности была нарисована с помощью кисти Dirt 2 и слегка скорректирована с помощью уровней.
Теперь что касается мусорного бака. Я начинаю с базового цвета, затем добавляю карту кривизны в базовом цвете с наложением. После этого я ввожу различные вариации, такие как состаренная краска, потёки и кривизну Собеля, чтобы подчеркнуть более толстые слои состаренной краски. Затем я выполняю коррекцию цвета. Далее идёт ржавчина и отслоение краски. Настройка материала здесь разработана таким образом, что почти всё генерируется автоматически с минимальной ручной настройкой.
Слои пыли и грязи почти не изменились. Они дублируются из материала киоска. Что касается самого мусора, я нашёл подходящую картинку и сгенерировал карты шероховатости и смещения на её основе. Кроме того, я добавил фотограмметрические ассеты Quixel различных типов мусора, упомянутых ранее.
Далее старый стул. Основная цель здесь — создать убедительный материал состаренного дерева. В этом случае я полагался больше на свой визуальный опыт, чем на референсы, хотя это не всегда так. Я добавил некоторые повреждения и постепенно наращивал слой материала древесины, слой за слоем.
Результат — довольно сложный материал, поэтому я не буду вдаваться в слишком много деталей. Затем я добавляю грязь, дублированную из материала мусорного бака, и перехожу к сиденью. Этот материал проще: выцветшая ткань, немного катышков, небольшие разрывы и грязь.
Наконец, старый грязный поддон. Я хотел, чтобы он выглядел грубым, сделанным из необработанных досок, треснувшим и выветрившимся от воздействия влаги, с сероватым, землистым тоном. Я добился этого эффекта, наложив картинку старого дерева поверх базового материала дерева и получив маски шероховатости и высоты. Внимательные зрители могут заметить, что когда я включаю слои базового цвета старых деревянных текстур (цвет var 1 и цвет var 2) в режиме наложения Normal со 100% непрозрачностью, они не полностью перекрывают цвет базового материала, а скорее дополняют его.
Это происходит потому, что папка с вариациями цвета, содержащая эти слои, настроена на режим наложения Soft Light. Края досок также были созданы с помощью обычной картинки, в сочетании с коррекцией цвета. Наконец, я добавляю грязь, следя за тем, чтобы сбоку она выглядела влажной, поскольку поддон лежит в луже и будет слегка погружен в воду во время рендеринга.
Рендеринг
Сцена была визуализирована в Marmoset Toolbag 5. Когда я только начинал изучать рендеринг, я встречал много материалов о том, как должна быть настроена подсветка и сколько источников света нужно использовать. Со временем я отошёл от строгих правил и теперь в основном полагаюсь на визуальную интуицию. Я стараюсь настроить камеру и освещение так, чтобы чётко показать глубину сцены, детали в картах нормалей и шероховатости, а также привлекательные блики и силуэты.
Я начинаю с настройки камеры. В этом случае поле зрения варьировалось от 35° для снимков сверху вниз до 45° для нижних ракурсов. Затем я переключаю Tone Mapping на ACES, слегка увеличиваю контраст и насыщенность, добавляю немного Sharpen и Vignette, и этого обычно достаточно.
Освещение обычно настраивается индивидуально для каждого кадра. В качестве основных источников света я обычно использую Directional Light, обычно от трёх до шести источников света. Когда мне нужно смоделировать реальные осветительные приборы, я добавляю Spot или Omni lights. Я также использую HDRI, обычно один и тот же для всех проектов, просто потому, что он мне нравится.
Как видно на видео, лампы, излучающие жёлтый свет, используют два источника света. Если использовать только тот, что размещён внутри стеклянной лампы, он выглядит хорошо визуально, но из-за характеристик шейдера стекла он едва освещает окружающую область. Независимо от того, насколько я увеличиваю интенсивность, сама лампа просто становится белой.
Поэтому я добавил второй источник света, размещённый под лампой. Для дополнительной постобработки я использовал Luminar Neo. В нём есть несколько отличных инструментов для интеллектуального улучшения детализации и контрастности. На видео я показываю пресет и разницу до и после.
Небольшой совет для всех, кто использует Luminar Neo: храните исходные рендеры отдельно от отредактированных версий. Если вы перезапишете оригиналы, эффекты будут складываться каждый раз, когда вы сохраняете изображение, и в конечном итоге станут слишком сильными. Также избегайте изменения местоположения исходных рендеров. Так вы всегда сможете снова открыть Luminar Neo и продолжить их настройку из каталога.
Заключение
Что касается времени производства, то сам киоск занял около 18 часов, что было согласовано с клиентом. Остальная работа, включая улучшения, внесённые для версии портфолио, заняла несколько дополнительных дней. В общей сложности проект занял примерно 7–8 дней. Самая большая сложность во время производства заключалась в том, чтобы выяснить, какие небольшие детали повествования можно добавить к такому простому объекту, чтобы сделать его визуально привлекательным и достаточно сильным для портфолио.
Моя любимая часть процесса — работа над мелкими деталями: стулом, мусорным баком, объявлениями и плакатами, а также над областью окна продавца. Эти элементы требовали наибольшего внимания к деталям и творческого решения проблем при создании материалов. Этот проект стал отличной возможностью воссоздать небольшой, но узнаваемый кусочек повседневной городской жизни начала 2000-х годов в России.
Работа над проектом позволила мне сосредоточиться на повествовании через детали окружения и исследовать, как мелкие несовершенства, беспорядок и старение могут сделать сцену достоверной и убедительной. Тем, кто интересуется моделированием, я бы порекомендовал YouTube канал Артёма Слаквы, который также создал курс Super Blender на VideoSmile. Для текстурирования я рекомендую курс Super Substance от Александра Коляса. Вы также можете найти несколько его бесплатных уроков на YouTube.
Даниил Гиббс, 3D и текстурный художник
Интервью проведено Эмбер Резерфорд
Автор: Daniil Gibbs
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.