Дмитрий Черемисин: воплощаем персонажа в жизнь

Хочу поделиться с вами процессом создания моей последней работы. Я покажу вам этапы создания девушки-эльфийки (моделирование, текстурирование, наложение теней и рендеринг). Надеюсь, это будет интересно, и вы узнаете что-то новое и полезное для себя. Что ж начнем!

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

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

Стадии моделирования и детализации 

Далее я создаю UV-равертку без наложения. Каждый раз, добавляя новый участок бюста, я пользовался функцией Project All в ZBrush для того, что бы я мог переносить полученную фигуру в новую полигональную модель. Эта новая полигональная модель выглядит идентично, однако обладает хорошей конфигурацией и UV-раверткой. Я проделывал эти этапы для каждой детали модели: очистить топологию, сделать UV-равертку, перенести на новую полигональную модель.

Создание UV и перенос модели

Детали модели

Моделирование кожи

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

Структура пор и морщинок

Конечный вид модели бюста

Параметры окружения

Для создания правильного окружения нам нужно определить куда будет падать тень, источник света и расположения камеры – все эти элементы должны работать как одна система. Если мы правильно настроим источник света и камеру, то мы значительно облегчим процесс настройки теней. Для пробного рендеринга я установил источник света и камеру под настройки тени, конечный вариант может быть другим. Я расположил свет таким образом, что бы подчеркнуть рассеивание. Обычно я делаю фронтальный источник света с наклоном в 45 градусов и еще один на заднем плане, что бы подчеркнуть рассеивание в области ушей. Параметры для V-Ray камеры точно такие же, как и для обычной, Баланс Белого – нейтральный (я старался избежать искажения цветов). Я так же добавил HDRi карту для верхнего освещения и использовал ее в качестве карты окружающей среды. И я еще раз убедился в том, что модель, импортированная из ZBrush составлена верно, так как тени в VRayFastSSS2 очень чувствительны к размеру.

Параметры сцены в 3dsmax

Параметры для наложения теней на кожу – часть 1

Наложение теней на кожу это сложный процесс, поэтому я предпочитаю разбить его на несколько частей или подпунктов. Я начал с подповерхностного рассеивания (SSS) без каких-либо бликов. Текстуры влияют на тени (цвет, насыщенность, яркость) на ранних стадиях я вместо текстур использую точки VRayColor. Это намного упрощает задачу и в будущем эти точки станут основой для текстур. Затем я стараюсь найти радиус рассеивания, как правило, величина оптимального находится где-то между 1.2 и 2 cм.

Различные радиусы рассеивания для подповерхностного рассеивания

Cпомощью VRayMtl Я добавил единичное рассеивание (SS) к структуре шейдера, связав серый цвет со слотом Diffuse (цвет рассеивания на освещённых участках). Затем я объединил шейдеры при помощи VRayBlendMtl, при этом задав вычитания SS (серого цвета) из SSS. Разница между SSSи SSSвместе с SSбудет более заметной, когда я использую текстуры вместо VRayColor.

Добавление единичного рассеивания для шейдера структуры кожи

Так как красный цвет рассеивается намного глубже, чем зеленый и синий я решил использовать это для наложения теней на кожу. Я разделил SSS цвет на красный, зеленый и синий (RGB) каналы, используя ColorCorrection. Каждый канал имеет свой VRayFastSSS2 шейдер с индивидуальным радиусом рассеивания. Все это было объединено с помощью VRayBlendMtl (Additive (shellac) режим должен быть включен!). В итоге у меня получилось многослойное подповерхностное рассеивание и плавный переход градиента (сравните единичное рассеивание и многослойное).

Многослойное подповерхностное рассеивание  

Затем я добавил основные и вторичные блики. Все шейдеры связаны с VRayBlendMtl (Additive (shellac) режим должен быть включен!). Теперь можно приступить к процессу наложения текстур.

Добавление основных и вторичных бликов на текстуру кожи

Текстуры

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

Функция PolyPaint в ZBrush 

Добавляем разнообразие цвета в PolyPaint

Для того что бы из обычной карты (Normal map) получить cavity map я воспользовался в Photoshop функцией xNormal>Normals2Cavity в меню фильтры. Затем взял ее за основу для Glossiness, Specular, Single Scattering карт.

Конвертирование текстур. Из обычной карты в cavity.

Простой способ создания текстур для радиуса рассеивания:

  • Инвертировать нормали модели
  • Соединить карту VRayDirt с одним из слотов Self-illumination шейдера VRayMtl
  • «Запекаем» текстуру (texture baking) (я использовал VRayCompleteMap)
  • Инвертируем полученную текстуру

 

 

 

 

(Как вариант, вы можете поменять местами черный и белый цвета в VRayDirt, тогда вам не придется выполнять 4й пункт)

Простой способ создания текстур для радиуса рассеивания

Это все текстуры, что я использовал для наложения теней на кожу. Хочу заметить, что макияж был наложен уже поверх всех тексту, а не поверх SSS.

Текстуры для шейдера кожи

Параметры для наложения теней на кожу – часть 2

Вернемся к параметрам шейдера. Это финальная структура шейдера кожи и как вы могли уже заметить, VRayColor был заменен готовыми текстурами. Я так же поработал с микро-геометрией фигуры и сделал плавные текстуры для отдельных участков головы. Для каждой текстуры я установил определенное количество копий. Каждый участок с разными текстурами пор выделен маской – для одной текстуры у меня было три маски. Каждая маска располагается на своем канале (R, G, и B), который отражен на изображении масок соответственно красным, зелёным и синими цветами. (На самом деле у вас может быть и 4 маски для каждого файла (R, G, B, и Альфа канал)). Спросите, чем это может быть полезно? Благодаря этому вы можете четко видеть границы каждой маски и тем самым избежать пробелов. Я извлек каждую маску из файла с помощью ColorCorrection в 3ds Max. Затем я объединил обычную карту (Normal map) головы с микрогеометрической картой. Я повторил все те же шаги как для Specular так и для Glossiness карт.

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

Наглядная схема структуры мультислойного шейдера кожи

Золотая маска

Для золотой маски я использовал 3 шейдера — Base, Glossy с царапинами, и Dirt. Я так же использовал маску, что бы ограничить влияние последних двух шейдеров. В этом случае все шейдеры так же соединены с VRayBlendMtl (Additive (shellac) режим должен быть включен!).

Схема структуры шейдера маски

Три слоя шейдера маски

Волосы

Я использовал стандартный генератор волос в 3ds Max, модификатор волос и шерсти. Я разделил волосы на отдельные пряди. Косички и хвостики это уже другая история. В качество основы для генератора волос я использовал сетку.

  • Сперва я сделал направляющие и сплайны
  • Затем я добавил сферы в качестве поперечного сечения для сплайнов
  • После чего я с помощью сплайнов обернул косу вокруг хвостика. Я использовал модификатор Path Deform
  • Выделил все края витков…
  • … и создал новые сплайны
  • И наконец, для этих сплайнов применил генератор волос и шерсти

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

Для ресниц я использовал дополнительные (тем не менее, временные) формы. В 3ds Max есть очень полезный инструмент Graphite. С помощью функции Draw On: Surface я выделил все фигуры, где будут находиться ресницы. В той же категории (произвольная форма) я подобрал сплайны. Теперь можно создать основу для ресниц, после чего применить генератор волос. Точно таким же способом я сделал брови.

Создание ресниц и бровей

Рендеринг и готовый результат

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

Корректировка цвета и добавление финальных штрихов

Готовая работа