Эта статья посвящена одной из моих последних работ - Сомалийскому страусу. Из нее вы узнаете: о моем типичном рабочем процессе такого рода проектов; о некоторых технических приемах; ну и наверно самое интересное, немного о эффективных способах создания фотореалистичной модели пригодную для анимации с нуля за 1 месяц.
Pre-production
И так цель - сделать фотореалистичного страуса в максимально сжатые сроки. Модель и грум должны полностью соответствовать всем критериям анимационного персонажа (не быть хуже всех моих работ до этого). С такими мыслями я приступил к предпродакшену. К одной из самых важных стадий любого проекта! Как правило, ТЗ содержит только пожелания технических характеристик к модели (или проекта в целом), базируясь только на одних картинках-референсах. На этом этапе я стараюсь за максимальное короткое время (обычно 1 день) подготовить и собрать максимальное количество материала для дальнейшей работы. Но для начала нужно отождествить конкретное животное.
Попутно с этим узнаю много интересных фактов о самом животном. Сам материал достаточно разнообразный — это фото и видео референсы, макрофото, документальные фильмы, фотографии перьев, анатомический атлас... В общем все что будет полезно. Здесь работает правило- ничего лишним не бывает.
Также произвожу сетап проекта, создаю типичную структуру папок и раскладываю нужный материал в нужные места. Еще одним из важным моментом в моей работе является грамотный менеджмент. По этой причине, я завожу проект в Google таблицу с теоретическими расчетами тайминга по различным стадиям. Это позволяет мне получить в будущем статистику и улучшить результат на конкретной стадии. Далее начинается рутина...
Modeling
Данная стадия почти типична для всех проектов, за исключением проектов, где очень мало референсов по анатомии и нужно экспериментировать на стадии груминга. Как правило начинаю с ZBrush с шарика в режиме dynamesh. Еще как вариант, в Maya я создаю блокинг объект из примитивов ограничивая объем и затем уже все остальное в Zbrush. На этой стадии скульптинг происходит до грубого объема внешних мышц, т.е. не супер детально. Выбор Т-позы для птиц я выбираю с того расчета, чтобы было легко сложить крыло и при этом иметь контроль маховых перьев при развернутом крыле. Некоторый прогресс создания модели страуса.
Далее, когда объем и пропорции меня устроили, я делаю ретопологию в TopoGun, а затем UV маппинг.
Я всегда использую UDIM и их количество зависит от сложности самой модели.
Далее модельку с рабочей топологией и UV, я вернул в ZBrush и сделал ре-прожект необходимых частей и довел руками необходимые детали. Хочу заметить, что я не делаю высоко детализированный скульпт, который скрывается под перьями.
Для экономии времени был куплен скан кожи ноги на texturing.xyz и нарезаны необходимые части на альфы. Остальные детали, крупныескладки кожи, детали головы и поры доводилось руками, а также использовался Surface Noise генератор для клюва и когтей. Результат скульпта я выгрузил ввектордисплейсмент текстуру. Так же попутно вывел обычный дисплейсмент для разных subdiv уровней и cavity для будущего текстуринга.
Grooming
До этого было все как у всех. И вот мы наконец-то подошли к самой веселой и кропотливой части рабочего процесса- груминга! Как рабочий инструмент, я использую Yeti. Бытуют разные мифы касаемо этого типа работ. Много мнений достаточно противоречивы. Исходя из моего опыта, есть одна аксиома - залог хорошей работы напрямую зависит от аккуратности артиста. Приступив к этой стадии, я уже знал много технических нюансов касаемо длины перьев страуса, примерной плотности, структуры перьев, и их вида. Для страуса я применил упрощенный метод груминга и скатеринга перьев, потому как не было необходимости в суперконтроле каждого пера в отдельности, да и сама структура перьев (то, что все перья имеют растрепанный вид) страуса позволяет упростить груминг. Что сильно влияет на скорость самого груминга. А в данном проекте времени было мало. Для начала отрисовал базовые маски для груминга. Я использую метод аддитивных RGBA масок (как использовать вы можете узнать тутhttps://vimeo.com/271036764 ). Эти маски в процессе работы много раз изменялись и добавлялись необходимые. Окончательный вариант показан ниже.
Ещё в процессе анализа было понятно, что шея и голова будет покрыта клампированой и скрученной шерстью и на голове буквально несколько перышек. В отличии от тела, где все усеяно перьями.
При создании стрендов я воспользовался своим итерационным методом. Суть его в том, что изначально вы используете упрощенный грум для получения более детального грума, путем генерации фиберов Yeti ноды, которые вы затем конвертируете в грум. И так до тех пор, пока не получите нужный результат. Обычно я останавливаюсь на 3-4 итерации. В процессе груминга я решаю на сколько Yeti нод я буду разбивать модель и сколько Groom нод я буду создавать. Результат решения влияет только на удобство и скорость выгрузки кеша. В итоге у страуса вышло 8 Groom Node и 5 Yeti Node.
Перья. Не такой страшный черт, как его рисуют! Во всех своих перьевых персонажей я не использую полигональные плашки с альфой, а делаю имитацию реальных перьев на основе fibers. Вот секрет моего результата. Для генерации перьев я использую jcFeather плагин для Maya и стандартное Yeti перо. Зачем я это делаю? Да потому, что в анимации и симуляции важно управлять не только объектом в целом, но иметь возможность более тонких настроек. Например когда перо парит на ветру, то оно не только деформируется, но и шевелятся его отдельные волоски. А намокание? Элементарно добавить пару нод, пару экспрешинов и мы это можем увидеть в анимации. Ну и результат на рендер, когда на свет реагирует каждый отдельный волосок, так и расфокусе на макро рендерах, все отрабатывает как надо. Вот для этого и заморачиваюсь.
Я сгенерировал нужный набор перьев и конвертировал их в кривые, которые и использовал в Yeti. Количество волосков и их толщину я подбираю на основе фотографий и постоянного рендера базового йети дерева.Сердцем всего груминга является содержимого Yeti дерева. Для страуса я использовал многослойный скатеринг в 3 слоя на теле с различной плотностью для определенных областей.
Благодаря написанным экспрешинам происходит автоматический выбор нужного набора перьев в зависимости от длины стренда и его положения на теле. На рисунке ниже показано разными цветами разные наборы перьев.
Каждый набор состоит из 6-8 перьев. Далее происходит их случайный перебор. Так же для страуса была разработана 2х осевая модель изменения атрибутов (таких как scraggle, bend и т.д.) вдоль пера и на каждый отдельный fiber в пере при помощи рисования нужных атрибутов в Groom ноде.
Эта функцию так же можно использовать и в анимации. По сути это вносит ещё больше хаоса и реализма в модель. Ну и завершает дерево нода displacement, в который и лежит вектродислпейсмен текстура. Для простоты визуализации слоев перьев и не только во вьюпорте я использую shader ноду, а как ею пользоваться вы можете узнать здесь.
Rigging
Здесь ничего особенного. После всех возможных правок по модели в процессе окончательного груминга (да такое тоже бывает) я создаю риг.
Для этого я использовал Advanced Skeleton. Я не супер ригер, но риг для моих работ мне нужен в основном для позинга. На этой стадии проект разбивается на референс сцены: на сцену с ригом, и сцену с грумом и с шейдингом. И общение между сценами происходит по средствам алембика и Yeti кеша.
Texturing and Shading
Текстуринг тела. Ничего особенного, весь процесс происходит в Mari, вся покраска производится руками. Также подмешиваю displace и cavity текстуры и проецирую различные текстуры мрамора для кожи и клюва и когтей с различными нойс процедурными текстурами. А также рисую технические текстуры и маски для SSS.
Текстуринг перьев. Благодаря мощи Yeti, я могу создать для любого объекта на основе fibers кастом UV текстурные координаты и в дальнейшем их использовать любым рендер движком. В работе над страусом эта фишка тоже использовалась. Рисовались такиете кстуры для меланина, а также использовались процедурные нойсы в Arnold.
В общей сложности для 11 наборов перьев было нарисовано 24 текстур.Шейдинг. В моем рабочем процессе я делаю предварительный шейдинг еще на стадии груминга с/без базовой текстурой, но уже там настраиваю вид материала и его основных характеристик. Потому что результат во вьюпорте иногда сильно отличается от того, что мы видим на рендер. Я использую стандартный материал Arnold aiStandardHair с меланин центрической моделью построенная.
Т.е. рисую монохромные текстуры, которые идут на меланин параметр и слегка корректирую цветом в base color параметре. Для реализма, я еще слегка изменил оттенок как в меланине, так и в цвете каждого отдельного волоска по его ID в самом пере. А также с помощью рампа регулирую оттенок волоска от основания до кончика и добавил центральную прожилку каждого волоска в пере.
Каждый слой перьев имеет свой ID, как и ID каждого отдельного пера. Всю эту информацию я передаю в Yeti и использую в массивном шейдинге.
Rendering and Post
Возможно, вы видели некоторые мои работы ранее. И некоторые из них выполнены в темной студии. Мне нравиться подобный эффект и страуса постигла та же участь. Потому что я хотел, чтобы акцент был только на саму модель. Поэтому студия полностью взята из проекта с совой. Мне оставалось лишь добавил кусочки грязи на полу от лап и сделать несколько складок ткани от лап. Такие вещи добавляют реализма. Проект оживает! Light Rig я создавал под каждую позу свой. Финальная рендер сцена была собрана из референс сцен с грумом + шейдера, меш с позой, освещение + студия.
Я всегда стараюсь добиться хорошего результата на рендере, чтобы делать минимальную пост обработку. Для этой цели я вывожу в основном необходимые RGB маски и Zdepth.
Пост Обработку и цветокоррекцию выполняю в Fusion.
Надеюсь вам понравилось, и вы узнали что-то новое.
Немного статистики:
- общее количество перьев - 9 196,
- общее количество фиберов- 3 427 455,
- общее количество наборов перьев- 11,
- общее количество текстур для перьев - 24,
- поликаунт hi-res модели- 43.18M,
- rendertime 8k ~17h.