Офтоп Стас Шиловский
1 748

Создание монстра: от концепта до рендера

Marius Wittig и его коллеги рассказывают о процессе скульптинга, текстурирования и рендера фотореалистичного существа.

В закладки

Знакомство

Привет! Меня зовут Marius Wittig и недавно я окончил 15-тимесячную программу 3D-анимации и VFX в PIXL VISN Media Arts Academy в Кёльне, Германия. Мои основные специализации – моделирование, текстурирование и шейдинг. И еще я очень люблю делать существ. Я интересовался ими задолго до того, как стал задумываться о карьере в CG. Существа очаровывали меня, а с развитием компьютеров и программного обеспечения становилось все сложнее определить, что в кинофильмах реально, а что –компьютерная графика. Это побудило меня задуматься о том, как попасть в 3D-индустрию.

Я не мог поверить своим глазам, насколько правдоподобными могут быть визуальные эффекты. Я помню, как вышел из кинотеатра после просмотра «Аватара», первого 3D-фильма, который я увидел, и насколько я был ошеломлен графикой. Я не представлял, как это вообще можно было сделать, но знал, что хочу этим заниматься. Спустя несколько лет, после стажировки и года работы в компании, которая производит автомобильные запчасти, я накопил достаточно денег и поступил на программу в PIXL VISN. За время моего обучения я узнал обо всех ступенях производственного пайплайна. Я моделил, делал риг, текстурировал, занимался композом и тд. Программа была очень интенсивной, и пришлось учиться каждый день, но это был единственный способ освоить такое огромное количество информации всего за 15 месяцев. В конце мы должны были сделать деморил, и я стал искать подходящие концепты, чтобы создать существо.

Опустошитель

Я не планировал делать существо по концепту для игры Evolve. Хотя я всегда любил ее визуальный стиль, сам факт того, что я нашел рисунок, который идеально мне подошел, было чистым везением. Для своего первого проекта я не хотел прыгать выше головы и связываться с концептом, который не сумел бы закончить в срок.

Pinterest – отличный инструмент для поиска идеи. Когда вы смотрите какой-нибудь рисунок, сайт предлагает вам схожий арт, который также может вам понравиться. В один прекрасный момент мне попался один из концептов Stephen Oakley. Большинство из его существ были достаточно сложны, чтобы вписаться в мои временные рамки, поэтому я очень обрадовался, когда нашел концепт Опустошителя. Я сразу влюбился в рыбоподобную голову и шипы на спине и руках. Зубы существа были отличным поводом проверить мои навыки шейдинга и нового random walk SSS-режима в Arnold. Я немедленно стал собирать референсы ко всем частям тела персонажа.

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

Создание модели

Я начинаю с базовых форм, которые создаю из Dynamesh-сферы при помощи кисти Move, ClayBuildup и Clay. Моя цель – получить приблизительный силуэт существа. В этом очень помогает Switch Color (горячая клавиша ‘v’), который заливает объект черным цветом, позволяя четко увидеть очертания модели.

Вы также можете включать и выключать перспективу клавишей ‘p’, но когда моделируете, всегда держите ее включенной, имейте ввиду, что мы видим реальный мир не в ортогональной проекции. Очень важно было понимать анатомию существа. В этом мне помог потрясающий сайт anatomy4sculptors.com. Там есть отличные референсы и картинки с разбиением частей тела на базовые составляющие. Все это очень помогло создать правильные формы модели. Дело в том, что когда вы моделируете персонажа, учитывая мышцы, кости и анатомические ориентиры, его тело автоматически начинает выглядеть корректно. Вам остается только покрыть его кожей, добавить жира и морщин. Если вы перейдете к детализации, не разобравшись с анатомией, то ваш персонаж будет выглядеть неестественно, поэтому не спешите!

Детализация

На этом этапе я использую пайплайн Javier Blanco или Gael Kerchenbaum. Согласно ему, вы создаете готовую к детализации модель в Zbrush, потом делаете ретопологию и UV-развертку, а затем отправляете ее в Mari. Там вы рисуете пасс displacement, который позже применяете в Zbrush. Таким образом ваша модель получает максимум информации и деталей с текстуры. Вы можете сделать предпросмотр этого пасса в виде bump-карты или даже displacement-карты в Mari, если у вас достаточно мощный компьютер.

Такой подход позволяет получить отличную детализацию. Конечно, вы можете конвертировать часть displacement-детализации в bump-карту, но я хотел выжать из геометрии максимум деталей. (Режим Displacement-Autobump в Arnold автоматически создает bump-карту для участков, где меш ими перегружен). Перед тем, как я приступил к созданию displacement, модель выглядела так:

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

Затем я делаю ретопологию в Maya, там же разворачиваю модель и запекаю базовые карты cavity, AO, displacement и curvature.

Для ретопологии я использую «классический» способ – применение инструмента Quad Draw.

UV я организовал в 7 тайлов разрешением 4к. Я разместил их симметрично, чтобы текстурить только одну сторону существа, а потом просто сделать Мirror.

Когда база была готова, я начал рисовать displacement в Mari. Я подобрал карты рыбьей чешуи, панциря черепахи и краба, а также человеческой кожи. Все это я взял с сайта texturing.xyz.

Перед началом рисования вы должны создать комбинированные карты. Я имею ввиду, что вы будете использовать RGB-каналы для подключения различных черно-белых карт, чтобы одновременно рисовать, например, displacement (красный канал), spec roughness (синий канал) и spec weight (зеленый канал). Для их объединения, просто загрузите карты в Photoshop, нажмите ctrl+a и ctrl+c, чтобы выбрать и скопировать карту целиком. После этого вы открываете каналы первой карты и вставляете (ctrl+v) карту в зеленый или синий канал, затем повторяете это действие с оставшейся картой для свободного канала.

Вы получите странную на вид карту, но когда вы находитесь на одном из каналов, это будет или displacement, или spec roughness или spec weight. Конечно, это работает только для черно-белых карт.

Образец лесной почвы с комбинированными displacement, gloss и reflection картами:

После этого я создал в Mari канал для каждой текстурной карты. Несмотря на то, что на данном этапе нужно нарисовать только карту displacement, позже это сэкономит вам время. Затем вы создаете слой для рисования и группу для него. Вы назначаете корректирующий слой (adjustment layer) под названием «Copy channel», который дает вам доступ к каналам RGB. Gael Kerchenbaum сделал туториал на эту тему.

Для рисования дисплейсмента я не применяю каких-то особенных методов. Чтобы избежать ошибок при проецировании я использую режимы edge masking и backface masking. Всегда следите за иерархией ваших каналов, слоев и групп. Удаляйте то, чем не пользуйтесь и обращайте внимание на именование элементов. Тогда даже месяцы спустя вы сможете разобраться в вашей работе. Это также поможет, если вам понадобится передать вашу модель другим специалистам.

Чтобы посмотреть на дисплейсмент как bump-карту, вам нужно создать новый шейдер. Откройте меню Shaders и нажмите на плюс. Я выбрал шейдер aiStandart, потому что я буду рендерить мою работу в Arnold. Затем подключите канал, в котором вы рисовали дисплейсмент, к слоту шейдера Bump Map. Выберите режим освещения (lighting mode) basic или full – и вы получите ваш дисплейсмент в виде bump-карты.

Моя карта displacement выглядела вот так:

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

Для когтей я использовал панцирь черепахи, а для языка – смесь процедурных слоев (clouds, turbulence) и тайловое изображение очень бугристой поверхности.

После применения дисплейсмента в Zbrush моя модель стала выглядеть вот так:

Чтобы достичь такого уровня детализации Опустошителя, мне понадобилось 114 млн. полигонов (возможно, автор имеет ввиду 11,4 млн — прим. редактора).

Поскольку на референсе не было цветового паттерна для текстурирования, мне пришлось его искать отдельно. Мой выбор пал на работу Taran Fiddler для конкурса Beneath the waves на Artstation.

После того, как я определился с цветовой палитрой и собрал дополнительные референсы для детализации, я отправил модель в Mari.Сначала я приблизительно набросал темные, светлые и зелено-синие участки кожи. Мне нравится использовать для этого кисть tRex, потому что она обладает визуальным эффектом искажения, который слегка деформирует края окрашенных областей. Это действие автоматически привело к появлению новых малозаметных элементов. Для окрашивания цветовых переходов очень хорошо подходит кисть Supersoft. Таким образом, медленно но верно, я покрасил мое существо.

Естественно, я использовал вспомогательные карты для создания мельчайшей детализации. Карта Curvature добавляет эффект износа на твердые объекты. В моем случае – клыки и шипы.

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

Рендер

Честно говоря, чтобы получить хороший рендер в Arnold, не нужно никакой магии. Я установил классическую схему освещения из основного, заполняющего и контурного света с небольшими источниками света для акцентов на некоторых частях существа. С помощью light linking я убрал блики всех светильников от его глаз и добавив туда только HDR свет. Я также использовал плоскости, чтобы заблокировать части HDR. Два светильника и дополнительные плоскости были созданы, чтобы моя модель выглядела хорошо со всех сторон.

Эти плоскости не видны на рендере, потому что позже я изменил задний план в Nuke. Такой подход значительно сэкономил время рендера. Я создал пять камер, и применил функцию Playblast, чтобы проверить, насколько хорошо они работают вместе. Затем я объединил ракурсы в Adobe Premiere. Использование модели в формате Alembic Cache вместо оригинальной модели с ригом значительно ускорило работу в Maya и playblast в частности.

Для удобства последующего композа я создал light groups, которые сохранил, как отдельные AOV. Не забывайте использовать плагин Cryptomatte – он очень полезен в подобных ситуациях.

Пример: группа освещения (light group) для заполняющего света называется «Fill». Справа вы видите другие группы освещения — «Key»,»Default» и тд.

Для семплов я использовал пайплайн «Removing Noise», который можно найти на сайте solidangle.com. Не все каналы обязательно должны быть чистыми на 100%, потому что нода Denoise в Nuke творит чудеса и сильно сокращает время рендера.

Анимация

Marcell Fuzes:

Я сделал базовый риг с помощью моего личного авто-риггера, который я написал на Python. Он помогает избежать лишних сложностей и перейти к анимации и построению более сложных сетапов. Этот риг предназначался только для постановки персонажа в позу. После того, как риг оказался в руках Филиппа, он откорректировал его под анимацию.

Philipp Winterstein:

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

Временные затраты

Мне сложно оценить точные сроки, но я бы сказал, что от поиска концептов до финального результата прошло 6-8 недель. Это был первый проект такого масштаба, мне пришлось осваивать Mari и вышеупомянутый пайплайн и тд.

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

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

При желании вы можете посетить мой сайт или связаться со мной на Linkedin.

Удачи вам!

Оригинал статьи находится тут.

Читайте новости первыми на нашем канале в Телеграм.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Стас Шиловский", "author_type": "self", "tags": [], "comments": 17, "likes": 63, "favorites": 54, "is_advertisement": false, "subsite_label": "flood", "id": 18639, "is_wide": false, "is_ugc": true, "date": "Mon, 16 Apr 2018 15:51:01 +0300" }
{ "id": 18639, "author_id": 34176, "diff_limit": 1000, "urls": {"diff":"\/comments\/18639\/get","add":"\/comments\/18639\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/18639"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64955, "possessions": [] }

17 комментариев 17 комм.

Популярные

По порядку

Написать комментарий...
4

это же подросший мурлок

Ответить
4

Плюс немного от Лавкрафта

Ответить
–1

Тоже в глаза бросилось. А ещё я видел фильм с аналогичным монстром. Блин это же скучно и не оригинально.

Ответить
0

Анимация немного этих напомнила

Ответить
3

Где-то в альтернативной вселенной есть ВоВ 2, где персонажи ходят на рейды в стиле Evolve, и вот там в игре есть этот босс.

Ответить
1

Некоторые картинки не соответствуют тексту

Ответить
0

А некоторые рассуждения о мышцах, коже и костях не соответствуют результату. :)

Ответить
0

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

Ответить
1

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

Ответить
0

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

Ответить
1

Bullshit! Эта "оккуратная" сетка может быть и не плоха, но чтобы добиться нормальной топологии ты можешь спокойно убить несколько часов на её фиксы. Когда за час можно сделать более лучшую, окуратную сетку, которая работает как тебе надо. Ибо она сделана под воим контролем и теми целями что тебе нужны.
Да, в браше есть куча адвенст фишек для топологии(и не только), но, всё же это ничто по сравнению с опытным человеком который знает для чего ему эта сетка, а следовательно знает в какм напралении ему работать, более того, как уже написал выше, контроль за сеткой и её аккуратность на много выше.
Опять же ремешер зебры очень хорош чтобы снизить поликаунт и не потерять формы. в этом он топ.

Ответить
1

хотя опять же, всё это ситуативное дерьмо. К примеру в зебре какой-то чёрт дёрнул моделить очень жёсткий хардсёрфенс(есть в этом свои примущества, в отличии от майки и модо, в плане хайполи) и как дурак начал раскидывать и фиксить топологию в зебре руками. Убилл овер 3 чса времени. Психанул сделал откат, ремеш до нужного поликанта. Загнал ремешнутую штуковину и оригинал в модо, и там быстро нагнал ретопом и кусками лоуполи примитивов нужную сетку. Сшил это дерьмо и всего за час.
Опять же если делать ретоп вручную(а иначе никак ни зебра ни гудини не справляються с этим на том уровне, тчобы генерационку можно было юзать прям с ходу, иначе бы все пайплайны бы стали быстрее и жёстко сокращёными) то майка или модо это самый лучший выбор. Хотя в последнее время делать сетку мне больше нравиться в майке.
зебра - персонажка, скульптинг. Потом майка для ретопа, позже в модо для лоуполи и юви. запечка в майке или мармосете, а потом покрас в сабстенсе.
Ну и плюс меж итапные фиксы в фотошопах.

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

Есть ещё крутой плагин для блендера, он просто читерский. Но мне лень опять учить кнопки для блендера.

Ответить
0

В чем мой «булщет», интересно? Ничего не говорила по поводу нормальной ретопологии и прекрасно знаю, что и для анимации и для текстур нужен ручной ретоп, особенно для лица и рук. Откуда вопрос: вы, собсна, чего мне-то доказываете?

Ответить
0

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

Ответить
0

Восемь недель... Чет стыдно стало за своих тяп-ляп уродцев на часик работы.

Ответить
0

Я вот все пытаюсь понять, а зачем такой длинный пайплайн, если можно в zbrush сделать модель, затекстурить в painter и отрендерить Arnold'ом в майке например ну или сразу в игровой движок засунуть?
Или это нужно для анимации? Но можно же просто создать какую-нибудь лоу поли модельку и прицепить к ней хай поли. Или уже дело в количестве полигонов?

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Пять простых способов разогнать свой ПК
с помощью соли и чайной ложки
Подписаться на push-уведомления