Hand paint что это

Обновлено: 07.07.2024

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

Запечка (Bake) — четвёртый этап ААА-пайплайна. На прошлом мы сделали развёртку, а сейчас будем её использовать для создания Normal Map, AO и Color ID.

Примечание: нам часто говорят, что правильнее писать «запекание», а не «запечка». Мы пишем «запечка», потому что это устоявшийся термин в индустрии.

Гугл на слово запечка показывает то, что нам нужно, а на слово запекание предлагает запечь курочку

Что такое запечка

Взглянем на low poly модель, которую сделал наш студент Leon.

Низкополигональная модель, созданная на этапе ретопологии

В ней минимум полигонов и чистая сетка. Эта модель будет загружаться в игровой движок.

Есть ещё high poly модель с высокой детализацией и скульпт.

Хайполи модели под сабдив и скульпт

Технология запечки позволяет нам перенести все детали с high poly и скульпта на low poly-модель.

В итоге, в игровом движке будет low poly модель с минимальным количеством полигонов, но выглядеть она будет так, как будто на ней есть все эти детали:

Для внимательных: ID Map никак не влияет на вид модели, в отличие от нормала и АО, но она пригодится при текстурировании, поэтому эту карту тоже будем печь.

Как это работает?

Мы берём low poly модель и добавляем на неё запечённые карты Нормала и АО. А эти карты обманывают поведение игрового света. Модель начинает бликовать так, как будто на ней есть все эти фаски, вырезы и прочие детали.

Для тех, кто не понимает, о чём речь: мы очень подробно писали про вертекс нормали и принцип работы нормала в статье про сетку.На этом этапе пайплайна — запечке, наша задача: запечь 3 карты.

1) Normal map — карту неровностей
2) Ambient Occlusion (AO) — карту затенения
3) Color ID — цветные маски

В Marmoset можно запечь гораздо больше карт, про это будет дальше.

Мы добавим эти карты на нашу low poly модель, на ней появится вся детализация с high poly и скульпта, а благодаря карте Color ID модель будет легче разбить по материалам и текстурировать.

Все карты создаются на основе развёртки, которую мы сделали на прошлом этапе пайплайна. Без развёртки карты не запекутся. Если есть ошибки на развёртке или low poly модели, то мы столкнёмся с кучей проблем.

Ссылки на теорию

Вот несколько наших статей, прочитав которые ты точно поймёшь, как работает «магический» трюк с обманом вертекс нормалей.

Какие карты будем печь

Нет смысла запекать карты, если не знаешь, что они делают и как работают.

1. Normal Map

Normal Map переводится как «карта нормалей»
Она изменяет направление блика на геометрии.

Карта создаёт виртуальные вертекс нормали в каждой точке low poly модели и искажает поведение света. Если наложить запечённый нормал на модель, то она будет выглядеть почти как high poly.

Вот хороший пример: low poly модель с включенным Нормалом и без него.

Модель с включенным нормалом и без него

Новые полигоны не создаются, это лишь иллюзия формы:

Приглядись, видишь low poly сетку? Все детали и затенения, которые ты видишь — иллюзия.

Чтобы создать нормал, нужно взять развёртку, которую мы делали ранее, взять high poly и скульпт, загрузить в программу для запечки и нажать кнопку «bake».

Там много нюансов, но мы обо всём расскажем.

Из чего печётся Normal map

Что нужно знать о Нормале

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

Чёрные полоски на нормале

Почему не стоит сильно волноваться о чёрных полосах?
Игрок почти всегда видит модель в игре на расстоянии. Поэтому не нужно тратить несколько часов, чтобы убрать чёрные полоски на нормале:

Та же модель, но на расстоянии. Чёрные полосы не режут глаза, — значит, всё окей.

Из чего состоит карта нормалей

Normal map создает иллюзию объёма благодаря трем картам в каналах текстуры: красный, зелёный, синий.

Чтобы переключаться между каналами, откроем файл с нормалом в Photoshop и зайдём во вкладку Channels.

Красный канал показывает искажение вертекс нормалей по горизонтали. Чем светлее пятно на красном канале — тем сильнее виртуальная поверхность наклонена вправо, а чем темнее — тем больше «поверхность» бликует влево.

Красный канал нормала

Зелёный канал — работает так же, но искажает шейдинг по вертикали.
Светлый-блик поворачивается наверх, а тёмный — вниз.

Зелёный канал Нормала

Чтобы лучше понять разницу между этими двумя каналами, посмотрим на эту часть модели:

У бочки на high poly есть фактура дерева.
Затемнение идёт только по одной из осей.

Так как красный канал нормала показывает искажение вертекс-нормалей только по горизонтали, а скосы между досками как раз и отклоняются влево или вправо, то на нём будет много информации.

А зелёный канал — показывает искажения по вертикали. Так как виртуальные плоскости не отклоняются вверх/вниз, то затемнений почти нет, то информации на нормале в этом канале почти не будет:

Зелёный и красный канал нормала на примере бочки

Красный и зелёный каналы — основные для нас (как моделлеров).
Но у Нормала есть ещё синий канал.

Синий канал имитирует углубления в объекте.
В играх он практически не используется.

За счет изменения синего цвета на нормале создаются искажения на плоской поверхности.

Если на синем канале есть артефакты, можно просто выключить этот канал, т.е. отключить синий цвет у нормал мапа в фотошопе. Или просто их замазать артефакты кисточкой.

Синий канал нормал

Больше про три канала Нормала — в этой статье.

Нейтральный цвет Нормала

128х128х255 — нейтральный цвет нормала.

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

В каком формате лучше хранить нормал

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

Поэтому файл лучше сохранять в форматах Targa или TIF.
При сохранении есть выбор, сохранять в 24 или 32 bit.
Если есть Альфа-канал — сохраняем с 32 bit.
Если Альфа-канала нет — в 24 bit.


2. Карта АО

Так выглядит запечённая карта АО

Карта Ambient occlusion (AO) — это карта затенения.
Она показывает самые глубокие тени, которые есть в объекте.
В основном это тени в углублениях и на пересечениях. Эту карта используют игровые движки для корректного освещения. Она также очень полезна в текстурировании.

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

Если добавить на low poly модель карту АО, на модели появятся самые глубокие тени

Также как и нормал, карта АО печётся на развёртку модели из high poly и скульпта.

Карта AO создаётся из highpoly и скульпта

При запекании по-умолчанию эта карта чёрно-белая, но на этапе текстурирования её можно покрасить.

С картой АО разобрались, последняя карта, которая нам нужна — Color ID


3. Карта Color ID

У наша модель состоит из разных материалов: металла, камня, дерева и ткани.

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

Чтобы это можно было сделать в один клик внутри Substance Painter, нам нужно запечь карту Color ID. Она позволяет быстро выделять большие куски. А в программе для текстурирования эту группу объектов можно легко затекстурить.

Вот так, с помощью этой карты мы в считанные секунды красим модель в разные цвета:

Быстро красим модель в Substance Painter, используя карту Color ID

Для того, чтобы создать карту Color ID, нам нужно покрасить high poly-модель в разные цвета. Один цвет — это одна группа объектов, как правило разбитая по материалам. Например, всё дерево на Color ID оранжевое, вся кожа —розовая, ржавый металл — синий, шерсть — голубая, а новый и чистый метал —зелёный.

Это не цвета будущей модели — здесь они могут быть любыми. Главное, чтобы они были контрастными.

Дополнительные карты

В мармосете куча карт, которые можно запечь.

Их в разных пайплайнах используют разные художники для текстурирования:

Position map с помощью градиентов помогает накладывать текстуры в разных плоскостях модели.

Сurvature выделяет все края на модели и упрощает создание затёртостей и повреждений. Очень полезная карта на ряду с АО.

Thickness запекает толщину, что необходимо для имитации подповерхностного рассеивания.

Часто для hand paint текстур пекут свет прямо на текстуру. Иногда необходимо запечь альфу — карту прозрачности.

Еще мармосет умеет печь цвета и материалы с других моделей и текстур, это иногда помогает не переделывать много текстур с нуля.

Этот обучающий материал посвящён тайловому текстурированию: как создаются и применяются тайлы и почему это одна из важных основ в геймдеве — акцент будет на применение в разработке игр.

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

В одном из своих обучающих материалов я уже упоминал метод тайлового текстурирования, но рассказал о нём поверхностно — тогда основная тема касалась оптимизации UV-развертки.

Tile — произносится как «тайл», переводится как «плитка», а означает повторение. Повторяющуюся текстуру используют для текстурирования больших поверхностей: грунта, стен, домов, модулей и иногда мелких объектов. Такой вид текстур позволяет добиться высокого качества и при этом уменьшить количество применяемых материалов в игровой сцене.

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

Trim Sheet или тримы , в какой-то степени — это тоже тайлы, однако они бесшовные лишь по одной оси и применяются к вытянутым объектам: балкам, перилам, плинтусам, узорам на стенах и многим другим. Наглядные примеры таких текстур ниже.

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

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

Оптимизация. Известно, что файлы игр состоят примерно на 60-80% из текстур, а возможно и на 95% — всё зависит от конкретного проекта. Однотипные, бесшовные текстуры часто используются повторно на различных моделях, тем самым позволяя экономить место на жёстком диске, снижать время загрузки и обращение к видеопамяти. Повторное использование материала в сцене вместо создания нового снижает количество Draw Calls — вызовов отрисовки.

Сокращение времени на разработку. Опытный левелдизайнер может создавать новые и уникальные локации, используя одни и те же модели и текстуры. Разумеется, это занимает меньше времени нежели создание каждой сцены с нуля.

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

Зато большая часть Тамриеля (Мира вселенной The Elder Scrolls) умещается в 95 гигабайт, что по сравнению с новыми играми не так уж и много.

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

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

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

Обработка фотографий в 2D редакторе — в Photoshop или в специализированных программах. Для создания полноценного PBR-материала не достаточно одной текстуры цвета — необходимы маски метала, шероховатости и карта рельефа (Metallic, Roughness, Normal Map). Всё это нужно либо рисовать вручную, либо генерировать из той же фотографии, что, конечно, даст результат, но не лучшего качества. По этой причине способ считается устаревшим.

Для генерации существуют отдельные программы — например бесплатный materialize или Bitmap2Material — который по сути является набором нод из Substance Designer. Ещё есть онлайн-сервис NormalMap-Online, он может создать Normal, AO, Sepcular из любого изображения. У всех этих генераторов похожий принцип, цвет используется как маска, карта нормалей получается вдавленной в тёмных местах и выдавленной на светлых, в некоторых случаях из этого можно получить приемлемое качество.

Моделирование и запекание. Художник создаёт геометрию на прямой плоскости при помощи скульптинга или моделирования. Геометрию окрашивают ID-материалами или через Vertex Paint. Далее это запекается на обычный плейн в текстуры: Normal, ID map, Curvature, Ambient Occlusion.

Остальное создаётся вручную. ID Map помогает отделять друг от друга элементы на плоской текстуре. Metallic, roughness и базовый цвет можно создать в Substance painter, в Blender через нодовый редактор, в Photoshop или даже внутри игрового движка, смешивая текстуры по ID-маске.

Hand Paint — создание текстур вручную, рисование в Photoshop или в других 2D-редакторах. Как правило, этот метод подходит для стилизованной графики, так как добиться реализма мазками кисти крайне сложно, если вообще возможно. Для создания стилизованной графики с PBR можно комбинировать с методом запекания.

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

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

Лучшей нодовой программой для создания тайлов и не только, считается Substance Designer, так как она, её инструментарий и библиотека нодов были созданы для этой задачи.

Продолжаем серию уроков о том, как стать художником по поверхностям.

Hello there! Моё имя Денис Кузнецов. Я - программист =)

  • Часть 1. Пиксель.Здесь.
  • Часть 2. Маски и текстуры.Здесь.
  • Часть 3. PBR и материалы. Вы ее читаете.
  • Часть 4. Модели, нормали и развертка.Здесь.
  • Часть 5. Система материалов.Здесь.
  • Часть 6. Погружение в систему материалов.Здесь.

Итак, котятки, погнали! =)

Расшифровывается эта аббревиатура так: Physically Based Rendering. Что в переводе значит «Основанный на физике рендер». Это важно, так как очень многие переводят PBR как "Физически корректный" - но это не так. Очень много физических явлений света не учитывается при обработке текстур в PBR, поэтому это именно "основанный на физике", а не точный рендер.

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

В зависимости от поверхности, от ее состояния (отражает ли оно, как зеркало, или имеет шероховатость, есть ли капли грязи / воды / кофе на поверхности, кусок дерева) вам в глаз приходит уже видоизмененный луч (или волна?).

Суть одна — то, как мы видим мир, выстраивается из того, как свет отражается от поверхности объектов. И стандарт PBR описывает то, какие какие физические явления должны учитываться, чтобы свет выглядел максимально кинематографично.

Расписывать о том, по каким правилам конструируется свет, как он отражается и отражается ли вообще, я не стану. Про то, как работает на уровне физики свет есть куча статей:

  • Статья по основам от создателей Substance Painter / Designer здесь. И ее перевод от 2015 года здесь . Ссылка на вторую часть перевода есть на той же странице.
  • Статья от Google по их разработке PBR (те же яйки, только в профиль с другими формулами) здесь.
  • Статья от MrShoor, который рассмотрел PBR на низкоуровневом программировании шейдеров здесь.

Мы рассмотрим PBR с точки зрения общей концепции и на уровне работы с каждым параметром отдельно через каналы пикселей.

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

  • Color (Base Color / Albedo). Использует комбинацию из 3 каналов.
  • Metallic. Использует 1 канал.
  • Specular. Использует 1 канал / 3 канала в зависимости от реализации рендера. об этом будет чуть ниже.
  • Roughness. Использует 1 канал.
  • Glossiness. Использует 1 канал.
  • AmbientOcclusion (далее AO). Использует 1 канал.
  • Height. Использует 1 канал.
  • Normal map. Использует комбинацию из 3 каналов.

Все параметры, кроме Color и Normal map, используют по 1 каналу, а Color и Normal map — по 3 канала каждый:

  • Color использует 3 канала — RGB, чтобы формировать цвет пикселя.
  • Normal map использует 3 канала, чтобы сымитировать наклон поверхности. Каждый канал отвечает за наклон по вертикали, горизонтали и глубину соответственно, а значения в этих каналах определяют силу наклона.

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

В первом типе учитываются параметры Color-Metal-Roughness, во втором — Diffuse-Specular-Glossiness. Именно во втором случае параметр Specular имеет 3 канала.

Оба типа реализации используют одинаково 3 параметра — АО, Normal map, Height.

Мы будем использовать первый вариант, так как в дальнейшем перенесем наше обучение на Unreal Engine 4, а этот движок использует первый вариант комбинаций + имеет дополнительно параметр Specular из одного канала.

Обратите внимание, что UE4 использует первый вариант рендера, но так же использует параметр Specular. Однако, если во втором случае Specular имеет 3 канала, то в UE4 используется Specular с одним каналом, что лишний раз показывает, что PBR — это условность, а параметры - это абстрактные входы для текстурных карт с каналами, чтобы можно было получить определенный результат. Спасибо Constantine Ponomarev за уточку =)

Мяу-Мяу.

Хотя при создании текстур в Substance Painter параметр Height и вынесен отдельно, при запекании текстур он вшивается в карту нормали. Но его все еще можно его выделить в отдельный канал.

Итого, конечный результат картинки состоит из наложения параметров в одном пикселе:

Давайте рассмотрим теперь то, как это работает в Substance Painter. Для этого мы снова создаем новый проект с обычным плейном и стандартными настройками (о них я рассказывал во второй части статьи). И создадим новый слой заливки:

Теперь рассмотрим стандартную текстуру нормалей из набора Substance Painter «Niche Rectangle Top Wide», которая располагается под тегом Hard Surface:

Далее мы перенесем эту карту нормалей в параметр слоя Base Color (из предыдущего урока мы должны помнить, как это делать). Так выглядит карта нормалей, если воспринимать ее, как изображение (изображение выше). Но теперь удалим ее из параметра BaseColor (мы это сделали для общего ознакомления), нажав на крестик в параметре:

И перенесем ее в параметр Normal:

Ваш конечный результат сразу обновился?

Теперь, если зажать Alt и ЛКМ во viewport'е— можно крутить камерой и смотреть на плейн под разными углами. Свет, отраженный от пикселей, начнет переливаться, создавая иллюзию глубины. Как будто на плейне действительно есть какие-то впадины и выпуклости. Все это заметно под углом от 90 до 140-150 градусов. И чем больше угол наклона, тем больше становится понятно, что это расчет видеокарты, который определяет, как должен отражать свет каждый пиксель, чтобы создавать эту иллюзию. В качестве исходных значений мы передаем в видеокарту 3 параметра в виде каналов пикселя (иначе говоря, текстуру Normal map):

Теперь давайте извращаться. Удалим из параметра Normal эту карту и укажем ее в Metallic.

Но для параметра Metallic используется только один канал, а карта нормалей имеет 3 канала, соответственно, вставляя карту нормалей в этот параметр, Substance Painter обрежет 2 лишних канала (GB - второй и третий по очередности) и оставит только один для расчетов:

В конечном результате видно теперь, что больше нет никаких выпуклостей и впадин, но сама поверхность стала походить на какую-то металлическую плату. Вы так же можете посмотреть, как будет выглядеть параметр Metallic в градациях серого без остальных параметров (BaseColor и прочих), переключив режим отображения на 1 канал Metallic (если вы ничего не меняли, то во вьюпорте справа сверху есть возможность переключения отображения):

Выбираем металлик и получаем следующий результат:

Как видим, это один канал в градациях серого, который определяет, какие пиксели должны выглядеть как металл, какие — как нечто среднее, а какие — не металл. 0 — не металлический. 1 — металлический.

Аналогично и с параметром Roughness (1 канал) — любая текстура подойдет для работы с ним. В зависит от того, какой конечный результат вам потребуется. Можете попробовать самостоятельно воткнуть в параметр Roughness любую доступную вам текстуру и посмотреть на результат.

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

Так как считается стандартом наименование последовательности каналов RGBA, то первым каналом будет всегда R.

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

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

Визуально, кресло состоит из 3 материалов:

  • Кожа.
  • Металлические клепки.
  • Пластиковые (возможно, деревянные) ножки.

Каждый материал имеет свои параметры:

  • Color. (например, кожа — это близкий к черному цвет с крапинками трещин, а клепки — это золотистый цвет с какими-то пятнами грязи ).
  • Metallic (в коже практически равен 0, а в клепках близок к 1).
  • Roughness (в коже он ближе к 1, а в клепках ближе к 0).
  • Normal Map (В коже карта нормалей отображает трещинки и их глубину, а в клепках — технические углубления/выступления).
  • AO (в коже будет отображать корректность затенения трещин, а в клепках — углублений).

И вот так параметры кожи выглядят визуально:

Сейчас мы знаем:

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

Исходя из всего этого, мы можем теперь представить, как можно создать мокрый грязный асфальт со следами шин. Можем ведь? Да, конечно, можем. Иначе мы не котятки =)

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

  • Асфальт.
  • Грязь.
  • Следы шин (проще говоря, резина).

Их нужно где-то найти, а потом добавить в проект Substance Painter =)

Встал вопрос — где брать эти материалы?

Можно немного помучиться и создать коллекцию параметров для каждого материала вручную. Например, найти изображение асфальта. Обрезать его до квадрата и сделать его в качестве BaseColor. Потом, через специальные программы (например, xNormal) по этому изображению создать карту нормали. Через карту нормали отрегулировать Metallic и Roughness (можно и по BaseColor). В итоге, потратить несколько часов на создание идеального материала асфальта, выверяя корректные параметры для металла и шероховатости.

А можно сделать все проще.

Как я уже сказал выше, большинство материалов уже заготовлены давно за вас. Не думаете же вы, что вы первые, кто создает свой материал? =) Ваша задача лишь найти готовые решения, которые отвечают вашим требованиям, скачать их и установить. Если вы пользуетесь Substance Painter, то у компании allegorithmic (теперь уже у Adobe) есть специализированное хранилище готовых материалов, которые можно скачать. Доступ к ним есть как платный, так и бесплатный.

Если вы пользуетесь Quixel Mixer, то в этой программе уже заложены сотни различных материалов, которые были отсканированы с реальных объектов со всего мира и представляют собой огромную базу реалистичных материалов. А вам достаточно лишь указать их и начать работать.

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

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

Всегда изучайте правила и условия игры. Когда вы знаете правила игры от и до - у вас появляется понимание сути игры и то, как можно нарушать правила без последствий, а как их можно модернизировать, чтобы быть максимально эффективным. Мяу-мяу.
А если вы будете играть в игру, не понимая правил - вы так и будете получать штрафные баллы "ни за что", а судья кикнет вас с поля спустя 3 предупреждения. Задумайтесь, мяу-мяу.

Если вы уже посмотрели файлы, то, наверное, обратили внимание на маску для шин. Она подготовлена отдельно, так как я не смогу ее сгенерировать на ходу в Substance Painter, поэтому я воспользовался рисунком шин, найденным в интернете и подготовил его через Photoshop для работы в Substance Painter:

Теперь создадим новый проект и добавим все наши файлы в него. Для этого мы выбираем стандартные настройки, но теперь нам нужно при создании проекта еще указать наши текстурные карты :

В проекте создадим 3 папки под каждый материал и проименуем их, чтобы не путаться:

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

В нашем случае очень важна иерархия папок (да и не только в нашем - она всегда важна). Иерархия определяет уровень материала, иначе говоря — что на чем лежит. Асфальт в нашем примере — это дно, самый низкий объект. На нем остаются следы от шин. А вот грязь может быть и на следах шин, и на асфальте. Поэтому грязь будет выше всех.Теперь давайте сразу спрячем все, что должно быть спрятано, и оставим только асфальт. То есть, создадим черные маски на папках Rubber и Dirt:

Теперь создадим в каждой папке по 1-ому слою. А точнее, создадим слои и распределим их в папки. Не забываем о нейминге, чтобы потом не путаться (не смотря на то, что визуально не совсем понятно, что слои находятся в папках — поверьте, они в папках):

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

Ваша задача сейчас распределить все текстуры материалов в нужные параметры слоев.

После того, как вы все это проделаете, назначим маску для резины и создадим эффект следов. Так как у нас уже есть черная маска у папки, то нам нужно просто подключить файл со следами колесиков к этой маске. Для этого кликаем ПКМ по маске и выбираем Add Fill:

И в параметрах GrayScale указываем маску:

В результате на асфальте появятся следы резины, но их будет достаточно сложно разглядеть, так как это все таки PBR и кинематографичность (. ). Чтобы их увидеть, нужно Plane повернуть под определенным углом:

Сейчас эти два слоя (асфальт и резина) находятся на одном уровне. Но мы-то знаем, что резина находится НА асфальте, а значит, слой с резиной должен быть физически выше. И вот теперь мы воспользуемся тем самым параметром Height.

Найдите его в параметрах слоя Rubber и выкрутите его на максимум, чтобы прочувствовать, как он работает. Покрутите камерой, чтобы увидеть, как свет начал обрабатывать пиксели, которые вы настроили своими руками. Прочувствуйте свою мощь! =)

Ну а теперь выровняйте параметр на 0.1, чтобы это было не так явно и более правдоподобно:

Мы могли бы выкрутить в -0.1, чтобы у нас проявились ямки, как после машин на грязи, но это асфальт, и он не проваливается так легко.

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

Как это работает? Если посмотреть на BaseColor асфальта, то можно обратить внимание, что чем темнее пиксель, тем больше он похож на трещину. То есть, в этом изображении все темное — это трещины, а все светлое — это поверхность. И если мы хотим воспользоваться изображением, как маской, то нам достаточно было бы инвертировать цвета (темное сделать светлым и наоборот) пикселей, и у нас получилась маска для грязи.

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

Далее, укажем, что в маске грязи должен быть файл и присоединим к ней файл Asphalt_BaseColor:

Как я и писал выше — светлым был асфальт, а темным — трещины. Соответственно, на больших поверхностях начала проявляться грязь, а в трещинах доминирует базовый серый цвет (базовые параметры / фон).

Теперь наша задача заставить эту текстуру восприниматься иначе — инвертировать цвета и усилить их, чтобы маска проявила грязь в трещинах. Проще всего это сделать с помощью дополнительного эффекта «Уровни» (Levels). Добавляем к маске дополнительный фильтр «Levels» так же, как мы добавляли Fill (ПКМ — Add Levels). И выкручиваем параметры примерно, как на картинке ниже:

И нажимаем на кнопку ниже «Invert» для инвертирования уровней интенсивности канала:

Теперь грязь располагается именно там, где нам нужно — в трещинах асфальта:

Включаем асфальт и присматриваемся к нашим трудам:

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

Но это слишком просто. Поэтому, давайте теперь добавим на наш асфальт оранжевую разметку. Для этого нам необходимо будет:

  • Создать новую папку и назвать ее Road_Line.
  • Добавить черную маску папке.
  • Добавить в папку новый слой и назвать его Layer_RoadLine.
  • У слоя в параметрах BaseColor указать оранжевый цвет напрямую:

Вы так же можете отрегулировать параметры Metallic и Roughness на свой вкус, чтобы создать реалистичную краску. Я не стал этого делать, чтобы сократить размеры тутора.

Теперь, вспоминая правила иерархии слоев, расположим папку с дорожной линией между асфальтом и резиной.

Перед тем, как что-то красить и определять иерархию слоев, художники порекомендуют вам подумать над тем, какая была история у объекта. Сначала покрасили асфальт, а потом он стал грязным, и по нему проехала машина, или краску наложили после, просто не мыли асфальт (прям, как в жизни). История объекта всегда определяет его внешний вид, мяу-мяу.

Научись создавать стилизованное оружие — придумывать концепты и создавать на их основе полноценные 3D-модели.

Начало обучения: 1 мая.


Коротко о курсе:

  • Преподавательница — Тамара Бахлычева, старшая 3D-художница по персонажам в Blizzard Entertainment, работавшая над World of Wacraft, Heroes of the Storm и Overwatch.
  • Научим фундаментальной технике hand-paint и основам создания стилизованного дизайна.
  • Создадим концепт и трёхмерную модель оружия в технике Hand-Paint и подготовим его для портфолио.
  • Обучение длится 3 месяца: два на основную программу и один на доп. проверку домашних заданий.

Что такое hand-paint

Hand-Paint — это первая техника по созданию текстур, которая появилась в связи с переходом игр из 2D в 3D-пространство. В ней при помощи рисованных текстур создаётся иллюзия объема с освещением, а также задается информация по цвету и типу материала.

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

Есть несколько причин того, почему Hand-Paint остаётся востребованным:

  • В хорошем исполнении ассеты в этом стиле могут выглядеть как ожившие иллюстрации и приносить эстетическое удовольствие.
  • За счёт лимита на количество и разрешение текстур, а также небольшого количества полигонов стиль Hand-Paint не сильно нагружает систему. Это позволяет делать игры для очень слабых устройств и для большего разнообразия платформ.
  • Грамотно стилизованный hand-paint визуально не устаревает дольше чем графика, выполненная в реалистичном стиле.
  • Производство стилизованного hand-painted ассета в целом занимает меньше времени, и благодаря этому снижается цена.

Бюст демона, работа Тамары по собственному концепту

Умение работать в Hand-Paint необходимо любому, кто работает со стилизованной графикой. Даже если на конкретном проекте не используется hand-paint в его классическом варианте, знания, которые ты получишь на этом курсе, пригодятся в любом случае. Например, если на проекте используется Substance Painter, в конце всё равно придётся что-то дорисовывать при помощи техники hand-paint — без этого не создать необходимого для стилизации ощущения, что ассет нарисован вручную.

Для кого этот курс

Этот курс подойдёт тем, кто хочет научиться придумывать и воплощать 3D-арт в Hand-Paint стиле.
Тебе необходимы два основных навыка:

— Умение работать в Adobe Photoshop.

— Умение работать в любой 3D-программе. В какой — не имеет значения. Если пока не умеешь работать ни в одной, то перед тем, как забронировать место на Hand-Paint, пройди наш бесплатный INTRO-курс по созданию своей первой 3D-модели.

Цель курса

Цель — научить тебя создавать стилизованное оружие в стиле hand-paint по пайплайну, по которому работают в студиях разного уровня — в том числе и AAA.

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

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

Чему ты научишься

— Работать над оружием в стиле hand-paint по пайплайну, принятому в студиях,

— Создавать собственные концепты для оружия,

— Создавать трёхмерные ассеты на основе концептов,

— Выигрышно подавать получившуюся работу в портфолио.

Оружие, выполненное в технике Hand-Paint

Автор курса:

Курс для нас подготовила Тамара Бахлычева, старшая 3D-художница по персонажам в Blizzard Entertainment.

Тамара с детства увлекалась видеоиграми. Окончив колледж по специальности «педагог ИЗО», она решила посвятить себя игровой индустрии и стала 3D-художником. Вскоре она поставила себе новую цель — устроиться в Blizzard Entertainment. Там она и работает по сей день.

Тамара работала над такими проектами, как Allods Online, World of Warcraft, Heroes of the Storm и Overwatch.

Программа курса

Курс состоит из трёх больших частей.

В ней мы расскажем о технике hand-paint и о том, как в ней работать, а также научим создавать собственные концепты.

В этой части ты научишься:

— Анализировать техническое задание, применять на практике теорию стилизованного дизайна и работать с референсами.

— Разбираться в базовой теории цвета и светотени.

— Искать интересные идеи, создавая силуэты и наброски дизайна оружия, а также переходить от силуэта к более сложным уровням детализации.

— Доводить концепты до финального состояния, «уточнять» дизайн и подбирать необходимые цвета при помощи референсов.

— Создавать поддерживающие концепты, например для эффектов и кастомизации.

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

2. 3D-моделинг.

Здесь мы создадим на основе твоего концепта трёхмерный ассет и пройдёмся по всем основным этапам 3D-моделирования. В итоге у тебя получится полноценная модель оружия, готовая для использования в игре.

На этих уроках ты научишься:

— Создавать low-poly модель на основе своего концепта.

— Делать оптимизированный UV-mapping.

— Запекать поддерживающие базовые карты на примере программы 3D coat.

— Создавать Diffuse hand-painted текстуры.

— Создавать и настраивать под выбранный игровой движок на примере Marmoset такие карты как: Specular, Emissive, Alpha channel

Ты научишься превращать 2D-концепты в 3D-модели.

3. Рендер и презентация.

Наша модель уже готова, но её нужно выигрышно подать — а это не так уж просто. В итоге у тебя получится красиво оформленная работа, которую можно использовать в презентации или в портфолио. На этих уроках ты научишься:

— Ты научишься настраивать материалы, свет и рендер в Marmoset.

— А также оформлять презентацию из скриншотов и видео для своего портфолио.

В таком виде ассет можно использовать в портфолио.

Результат

По окончании курса у тебя в портфолио будет полноценный стилизованный ассет оружия; ты сможешь брать заказы на несложные объекты в стиле Hand-Paint и будешь обладать необходимой базой, чтобы научиться создавать более сложные ассеты.

Конечно, трёх месяцев обучения не хватит, чтобы стать востребованным художником по персонажам: на это может уйти несколько лет. Но мы зададим верное направление для дальнейшего развития и научим понимать, как устроен стилизованный дизайн. Работать в программах можно научиться и самостоятельно, а вот понимание стиля — это важный и не самый простой в освоении момент.

Добейся успеха с персонализированным обучением

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

Читайте также: