Making Of "V for Vendetta"

Всем привет, меня зовут Владимир Урядов, я работаю Lead Artist’ом в компании Asymmetric VFX. В этом небольшом, но подробном уроке, я расскажу как делал одну из моих последних работ «V for Vendetta». Но сначала немного о том, что хотелось сделать и что получилось в итоге. Во-первых, модель создавалась, чтобы протестить новый набор текстур от texturing.xyz и научиться наконец делать красивые реалистичные волосы. Добавлю, что название «V for Vendetta» как раз и исходит из того, что это своего рода месть за неудачно сделанные волосы в моей предыдущей работе Middle-earth Talion fanart. Плюс хотелось сделать темнокожего персонажа с веснушками (знаю, тема веснушек не раскрыта, вернусь к этой теме в следующей работе).

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

Создание базовой модели:

На модель головы у меня ушло порядка 3-4 дней со всеми экспериментами и неудачами. Процесс создания начал с готовой топологии, которую когда-то сделал, изучая топологию для киноиндустрии. Почему не из сферы? Ну я же не враг своему здоровью.

1.jpg

Basemesh

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

2.jpg

base skulpt

Результат не идеален, но этого вполне достаточно, чтобы продолжить работу. Финальный скульпт делаю уже после нанесения слоя с порами. Пришло время упомянуть "XYZ" текстуры. Немного о том, что включает в себя этот набор. Во-первых, это текстура с дисплэйсмент картой, которая состоит из трёх разных карт одного и того же скана, но с разной проработкой. Все они собраны в одной текстуре, но в разных RGB каналах. В Red (красный) канале - дисплэйсмент карта с самым большим рельефом (это формообразующие морщины, носогубные складки и тд.). Именно её мы будем применять и дорабатывать в Zbrush. Остальные тоже немаловажны, в них содержатся поры и складки более мелкого характера вплоть до небольших морщинок между порами. Они нам понадобятся на этапе рендера.

3.jpg

xyz explaination

Во-вторых, в наборе имеется диффузная карта (face_CL_albedo) и дополнительная (fullface_CP_utility), которая содержит в себе, если не ошибаюсь, Bump, Specular и Roughness. Эти карты тоже разложены по каналам для простоты использования.

Применение XYZ текстур.

Основная цель – применить эти заготовленные текстуры на нашу модель в ZBrush. Как это сделать? Уже имея опыт работы с XYZ текстурами, я принялся по привычке накладывать их в фотошопе с помощью Liquify. Ну и после определённого момента я понял что, это можно сделать проще. Наткнулся на статейку на сайте texturing.xyz в которой они с помощью ZWRAP проецируют плоскость с текстурой на лицо персонажа. Недолго думая, создал в 3dsmax плоскость пропорциональную размеру текстуры от XYZ, подогнал приблизительно под размеры головы и экспортнул её в ZBRUSH(использовал GOZ). Назначил на неё диффузную текстуру, чтобы лучше было видно. И вот что у меня получилось.

4.jpg

projection preparation

Немного о программе ZWrap – это отдельный плагин для браша, который по заданным точкам проецирует готовую топологию на ваш меш. Стоит сказать, что существует стэндэлон версия с большим набором инструментов. Бесспорно это очень крутая и крайне полезная софтина для всех, кому не хочется возиться и каждый раз делать ретопологию моделей вручную.
В общем, запускаем ZWrap (ВНИМАНИЕ! Проецируемый меш должен находить выше во вкладке subtool, чем тот меш, на который мы проецируем, так же советую пару раз сабдивнуть плэйн, чтобы избежать ошибок при проецировании). Открывается стороннее окно, в котором нам надо указать, какая часть на плэйне будет проецироваться на наш скульпт. Проще говоря, ставим точки на соответствующих частях лица (будь то уголок губ, край глаза и т.д.) сначала на плоскости, потом в том же порядке на нашем скульпте. Количество точек произвольное, но на самом деле чем их больше, тем точнее результат. Для каждой правой и левой стороны можно включить симметрию для удобства ( имейте ввиду, что текстура от XYZ не идеально симметричная).

5.jpg

zwrap

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

5,5.jpg

dots

Если всё прошло хорошо, то плоскость должна идеально лечь по форме головы.

5,75.jpg

plane projected

Далее интересней, чтобы плоскость лучше повторяла форму головы я сабдивнул её ещё пару раз и нажал Zproject. Затем я начал пододвигать несовпадающие части плэйна, при этом каждый раз нажимая Zproject для коррекции формы. Это напоминает работу с Liquify в фотошопе. После окончательной подгонки модели, нам нужно странсферить XYZ текстуры на нашу модель. Для этого в ZWrap есть специальная функция ZTexTransfer. Как ни странно, модель, на которую надо переносить текстуру, должна находиться выше, чем модель, с которой снимают текстуру. Нажимаем ZTexTransfer, в Preferences выставляем размер текстур и нажимаем Project (да, вот так просто) и Done. Таким методом переносим все три текстуры (disp, albedo, utility).

Применение дисплэйсмент карты на модель.


Перед тем, как мы начнём применять дисп на збрашную модель, нужно сделать несколько действий. Первое, открываем дисплэйсмент карту в фотошопе. Сейчас нам нужно заменить всё чёрное (т.е. то, что не имеет никакой информации) на тайл с порами. Выбираем подходящую затайленную текстуру с порам (в моём случае это была текстура из другого набора от XYZ) и с помощью функции Pattern Fill я выставил scale на нужное значение, таким образом залив всё нужное пространство тайленными порами. Края у нашего основного слоя с диспом немного разблюрил, чтобы сделать плавный переход между двумя текстурами. Это нужно для того, чтобы при выдавливании диспа в браше не возникало резких и острых краёв, от которых сложно избавиться. Сохраняем текстуру, она нам пригодится в будущем, т.к. на данном этапе нужен только слой, который хранится в канале Red. Достаём её оттуда с помощью Split Channels, которая разделит текстуру на каналы и отдельно сохраняем Red канал в отдельную текстуру.

6.jpg

split button

Далее проще, переходим в ZBrush, открываем вкладку Tool > Displacement Map, нажимаем на квадрат, нажимаем import, открываем сохраненный Red канал, нажимаем Disp On. Обычно он тут ругается, что во вкладке выше (Texture Map) хоть что-то но должно быть вставлено, переходим туда, нажимаем New (можно всё, что угодно вставить, но лучше пустую белую текстуру, чтобы были лучше видны детали). Опять переходим в Displacement Map, опять жмём Disp on и наконец в Intensity выставляем значение интенсивности диспа (в моём случае это 0,3). Перед тем, как нажать кнопку Apply DispMap я обычно создаю новый слой во вкладке Layers и нажимаю кнопку StoreMT, чтобы сохранить исходное положение точек. В общем, применяем дисп, правим, фиксим, доводим модель до финального состояния. Можно использовать кисть Morph чтобы подкрасить проблемные места (т.е. вернуть в то состояние когда мы нажали кнопку StoreMT).

7.gif

sculpting steps

Далее снимаем дисп и нормалмэп и экспортим модель. Настройки следующие.

8.jpg

Export settings

Всё, на этом закончили c моделированием головы.

Текстурирование головы.

Первым делом я открыл запечённую албедо текстуру в фотошопе, закрасил всё чёрные пробелы clone stamp’ом. Место под волосами просто закрасил чёрным, настроил брайтнес и контраст, сохранил и открыл в Substance Painter’е. Тут я добавил веснушки, подобрал цвет кожи, добавил пигментных пятен, слегка затемнил поры, ну и самое главное сделал правильную Roughness карту путём смешивания, размешивания и вымешивания таких карт как AO, curvature, thickness, cavity ну и конечно тех карт, что мы запекли в текстуре Utility.

Texturing.gif

Substance process

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

Создание волос.

Если с созданием модели и текстур было всё понятно, то с созданием волос, как и ожидалось, возникли проблемы. Во-первых, сразу себе сказал, что не буду связываться с Xgen’ом и со всеми его багами и недостатками. А из альтернатив был только Ornatrix. На моё удивление он оказался очень интуитивным и проблем с ним не возникало, на обучение и эксперименты у меня ушло где-то недели 2. В итоге собравшись с мыслями и всем имеющимся опытом я сделал следующее.
1 – сделал скальп под то, чтобы растить волосы
2 - создал для этого меша систему волос. Количество гайдов – 300, 10 сечений на гайде, выставил минимальную длину, чтобы редактировать её отдельным модификатором.
3 – Модификатор длины с параметрами, как на картинке
4 – Применил модификатор SurfaceComb. Просто великолепная штука, благодаря ей можно быстро накидать заготовку для любой причёски. В ней есть функция sink, с помощью которой можно указывать направление движения гайдов в данной области. В общем развёл гайды вдоль пробора, ну и прошёлся по всей причёске.
5 – далее идёт непосредственно само причёсывание, стрижка и тд. Этот модификатор правился до самого последнего момента
6 – следующим модификатором я добавлял детализацию на гайды, чтобы их можно было скрутить в завитушку
7 – Модификатор Curl превращает прямой гайд в кудряху. Вот здесь возникло больше всего сложностей и экспериментов
8 – далее превращаем кривые в волосы и создаём модификатор Clump. Вот тут тоже повозился, пока не нашёл удовлетворяющие параметры. Ну ещё один модификатор - это ChangeWidth, т.к. по дефолту волосы ну очень толстые.
9 – последние два модификатора это Frizz чтобы распушить клампы. Тут пришлось много рендерить, чтобы понять как оно выглядит в итоге и, если что поправить. Причём рендерить в 4К, что занимало по 20 минут на картинку.

hair.gif

hair process

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

9.jpg

brows and eyelashes

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

Создание одежды.

Тут сразу скажу, что одежда не планировалась... да, но причёска получилась довольно-таки пышная, пришлось что-то придумывать, чтобы сделать более законченный образ. После обсуждения с женой, во что одеть модель, было принято «обоюдное» решение (я предлагал оставить ее голой облегающую футболку) сделать ей худи. Ладно, подумал я, открыл Marvelous Designer и за вечер сшил ей худи, получилось как-то так.

marv.jpg

cloth in marvelous designer

Не буду вдаваться в подробности что да как, но Marvelous Designer - это крутейшая штука и её в нынешних реалиях должен знать каждый уважающий себя персонажник. Из интересного было только то, что, начал делать одежду на аватаре, где руки были под 45 градусов, а закончил, применив морф таргет в то положение рук, что на картинке выше. После марвелоуса решил, что негоже оставлять одежду без ретопологии. Хотя она и не нужна была, в принципе. То, как я ретоплю одежду из Марва я уже писал (тут сейчас пойдёт разговор про 3dsmax, так что кому не интересно, можете пролистнуть), но меня просили пояснить более подробно. Постараюсь описать в деталях.

Первое что нужно – это конечно сама одёжка, причём в двух вариантах, финальный результат и развёрнутая т.е. после нажатия кнопки Reset 2d Arrangement. Настройки экспорта в обоих случаях следующие.

9,5.jpg

Reset 2d arrangement button

10.jpg

export settings

Загружаем их в Макс, итого у нас две модели, причём с одинаковым количеством вертекстов и нумерацией точек. Т.е если применить модификатор Morpher, то одна может плавно перетекать другую.

11.jpg

morpher modifier on flatten cloth

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

12.jpg

retopo

Тут сейчас начинается самое запутанное. Значит у нас сейчас есть плоская одёжка, на которую назначен модификатор Morph и в том же самом месте (т.е. поверх её) лежит наша новая топология. На новую топологию я обычно назначаю Unwrap UVW и делаю планарный маппинг и поверх него кладу TurboSmooth. У TurboSmooth стоит Iteration на 2 (тут как вам угодно). И поверх всего этого нужно положить модификатор Skin Wrap и указать на меш одежды из Марва (чтобы наш новый меш следовал за его изменениями).

13.jpg

final preperation

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

Шейдинг и рендеринг.

Для рендера я использовал Redshift, крайне быстрый и удобный в обращении рендерер. Шейдинг на голову очень простой:

14.jpg

Skin shader

Как видно, рафнесс знает своё дело. Но начнём с дисплэйса. Чтобы долго не заморачиваться, заходим по ссылке (http://teamgms.free.fr/XYZ_Displacement_Tool_V1.02.zip) и качаем тулзу от XYZ (Script done by Richard Trouve) , которая создаёт готовый шейдер под набор текстур от XYZ. Если вкратце, то кидаем .mel файл в майку, запускаем, указываем меш, запечённую текстуру из браша и сам файл с XYZ диспом, который мы прожектили в браше, ну и рендер движок.

Что же он создаёт и как этим пользоваться?

15.jpg

XYZ tool explanation

В XYZ_TEX (это у меня он так называется, под № 1) вставлена текстура, которую мы прожектили, она разбивается на 3 слоя XYZ_R, XYZ_G, XYZ_B, что соответствует каналам RGB. В этих нодах мы указываем интенсивность диспа для каждого из каналов. В нашем случае, поскольку мы применили R канал в браше, интенсивность стоит на нуле. В остальных я поставил 0.010. Ну и в ноде V_dsip_1001 у меня наш дисп из браша. В общем всё подключено и на этом с диспом всё, ставим сабдив на меше и можно рендерить.
Далее диффуз идёт в Diffuse Color, Roughness в Coating Roughness. Вот настройки шейдера.

16.jpg

Да, слишком просто и можно было сделать сабсуфейс, эпидермал и тд, но я лентяй. На волосах тоже простой шейдер c двумя нодами для волос, это rsHairPosition и rsHairRandomColor. Одна делает градиент от корня головы к кончику, другая слегка рендомайзит цвет волос.
Далее ставим свет - один домлайт с HDRI, основной источник слева и римлайт сзади. Рендерим в 4К. Рендерилось 40 минут на общий план, часа два на крупняк. Помню, поставил рендериться на ночь и с мыслью о том, что времени у него много, выкрутил настройки рендера до максимума, в результате через 18 часов комп выдал синий экран смерти. Бывает, подумал я, и вернул всё как было. Результат вот :

Closeup2.jpg

final closeup render

final.jpg

final render

wire.jpg

wireframe

TURN.gif

turntable

ЛИРИКА

Ну на этом всё. Хочу сказать следующее... в этой работе, как вы видите, было много именно технического, а не артистического, а это значит, что каждый может сделать всё то же самое, сидя у себя дома. Но какой бы вы ни были технарь, без простейших знаний анатомии, которая задаёт основу для вашей работы, вы не обойдётесь. Так что развивайтесь, стремитесь к новым вершинам, не зацикливайтесь на том, что у вас что-то не получается и вы добьётесь всего, чего только пожелаете. Я надеюсь этот мейкинг оф (походу он перерос в тутор) был вам полезен, ну или хотя бы вы не уснули на середине статьи. А так подсписывайтесь на мой инстаграм (да, все мои 20 подсписчиков будут вам рады), ставьте лайки, если меня где увидите, ну и увидимся.
www.artstation.com/xeno
www.instagram.com/vladimiruryadov/
ну в бонус – гифка с болью

pain.gif

pain

812 0 850 25
4
2020-01-12
Отличный Making! :)
2020-01-14
А что не так с x-gen'ом? Впервые слышу о нем, что-то плохое)
2020-01-14
Гена ПахомовА что не так с x-gen'ом? Впервые слышу о нем, что-то плохое)

Autodesk...
А если серьёзно, то стоит попробовать и понять все его слабые и сильные стороны самому.
2020-01-16
Классно! Еще бы курс выложил на Gumroad.
RENDER.RU