Создание фотореалистичного 3D-страуса
Представляем breakdown создания фотореалистичного сомалийского страуса в исполнении художника Юрия Дулича. Поэтапный разбор проекта из первых уст. Понеслась!
Предпроизводство
Я задался целью создать фотореалистичного страуса в кратчайшие сроки, и начал процесс с подборки референсов. Нужно было, чтобы вся визуальная информация была у меня под рукой.
В ходе этого процесса для меня открылось много интереснейших фактов о сомалийском страусе. Я просматривал фото- и видеоматериалы, макросъемки, документальные фильмы, фотографии перьев, анатомические атласы... Словом, все, что могло пригодиться. Мое главное правило в работе – ничто никогда не бывает лишним.
Затем я организовал проект, создав типичную структуру папок, и разложил материалы в нужных местах. После я обязательно ввожу проект в лист Google, вношу туда теоретические расчеты и сроки для различных этапов разработки. Это позволяет мне получать статистику в будущем и улучшать планирование. Кажется, все готово к старту. После этого начинается моя обычная рутина.
Моделирование
Как всегда, я начал в ZBrush, со сферы в режиме dynamesh. В Maya подготовил блокинг, используя простые примитивы, которые задают объем тела. Далее вылепил объем внешних мышц. Я выбрал для страуса Т-образную позу, чтобы было легко складывать крылья и в то же время иметь контроль над основными перьями. Затем еще немного усовершенствовал свою скульптуру.
Когда объем и пропорции были точно подобраны, я сделал ретопологию в TopoGun и приступил к UV.
Всегда использую UDIM.
На следующем этапе модель с рабочей топологией и UV возвращается в ZBrush. Я перенес необходимые готовые детали, но многое добавил вручную. Я не стал тратить время на детализацию частей тела, которые все равно скрыты под перьями.
Чтобы сэкономить время, я купил готовые сканы кожи ног и подготовил «альфа-текстуры», которые использовал в ZBrush. Остальные детали, такие как большие складки кожи, части головы и поры, были сделаны вручную. Для клюва и когтей использовался генератор поверхностного шума. После окончательного скульптинга я экспортировал их из ZBrush в виде 32-битных displacement-карт. Я также экспортировал регулярное смещение оттенков серого для различных уровней разделения и карты полостей для будущего текстурирования.
Груминг
Это была самая веселая и кропотливая часть процесса. На этой стадии я использовал Yeti. Имея опыт работы с перьями, я уже знал некоторые технические нюансы, такие как их длину, приблизительную плотность и структуру. Я использовал упрощенный груминг и scattering, так как не было необходимости контролировать каждое перо в отдельности. Тот факт, что перья были растрепаны, на самом деле облегчал процесс и делал его быстрее.
В этот момент я нарисовал основные маски для груминга, используя метод additive RGBA mask (подробнее о нем можно посмотреть здесь).
Было ясно, что шея и голова будут покрыты свернутым мехом с комками, а на голове будет всего несколько перьев, в отличие от тела, где ими всё будет просто усеяно.
При создании strands я всегда применяю свой итерационный метод. Я использовал упрощенный грум для большей детализации и сгенерировал ноды Yeti fiber, которые затем были преобразованы в грум. И повторял это до тех пор, пока не получал желаемого результата (обычно я останавливаюсь на 3-4 итерациях). На этом этапе я решил, на сколько узлов Yeti разделю модель и сколько узлов грума создам. Всё это в конечном итоге повлияет на объем кэша. У моего страуса оказалось 8 нод грума и 5 нод Yeti.
Перья
Я не люблю использовать полигональные плоскости с текстурой. Вместо этого предпочитаю имитировать перья на основе волокон. Мне нравится думать, что в этом и заключается секрет моего фотореалистичного результата. Для создания перьев я использовал плагин jcFeather for Maya и стандартное перо Yeti. Я сделал это, чтобы более тонко подготовить перья к анимации. Таким образом, каждый волосок в пере может реагировать на свет и правильно расфокусироваться на макрорендерах, как это было бы в природе.
В этот момент я сгенерировал нужный набор перьев и преобразовал их в кривые, которые использовал в Yeti. После этого я выбрал количество волос и их толщину, основываясь на своих фотографиях и постоянной визуализации базового дерева Yeti. Я также использовал трехслойное и многослойное рассеивание на теле с различной плотностью для определенных областей.
Я использовал Expressions – необходимый набор перьев подбирался автоматически в зависимости от длины пряди и их положения на теле. На рисунке ниже показаны различные наборы перьев, организованные по цвету.
Каждый показанный набор состоит из 6-8 перьев, которые случайным образом сортируются по expression. Я разработал двухосевую модель для изменения атрибутов (таких как scraggle, bend и т. д.) по длине перьев и на каждом отдельном волокне внутри пера путем раскрашивания атрибутов в ноде грума.
Риггинг
Ничего особенного здесь не было. После того, как я подправил модель, я создал анимационный риг.
Я использовал Advanced Skeleton для Maya. На этом этапе я разделил проект на reference-сцены: сцена с ригом, сцена с грумом и сцена с шейдерами. При сборке использовался Alembic и кэш Yeti.
Текстуры и шейдинг
Текстурирование тела было сделано в Mari и в основном ограничивалось ручной росписью. Я смешал dispacement, cavity-текстуры и разнообразные мраморные текстуры для кожи, клюва и когтей с различными шумовыми процедурными текстурами. Я также рисовал технические текстуры и маски для SSS.
Забавный факт: в Yeti вы можете создавать координаты текстуры для любого объекта на основе волокон с помощью пользовательских UVs и использовать их позже с любым движком рендеринга. Я использовал эту функцию. Вы можете проверить текстуры, которые я нарисовал для меланина ниже. Я также использовал процедурный шум Arnold.
В общей сложности было создано 24 текстуры для 11 комплектов перьев.
Шейдинг
Я настраивал предварительный шейдинг во время груминга с основной текстурой и без нее. Но даже тогда я скорректировал внешний вид материала и его основные характеристики, потому что результат во вьюпорте отличается от того, что мы видим на рендере. Я использовал стандартный материал Arnold aiStandardHair со встроенной моделью, ориентированной на меланин.
Другими словами, я рисовал монохромные текстуры, которые шли к параметру меланина и немного корректировали цвет в базовом цветовом параметре. Для реализма я слегка изменил оттенок, как в меланине, так и в цвете каждого отдельного волоса по его идентификатору в самом пере. Кроме того, с помощью рампы я отрегулировал оттенок волос от корня до кончика и добавил центральную жилку каждого волоска в пере.
Каждый слой перьев и каждое отдельное перо имели свой собственный идентификатор. Затем я передал всю эту информацию от Yeti и использовал ее в массивной системе шейдинга.
Рендеринг и постобработка
Я склонен изображать животных в тёмном пространстве, потому что хочу, чтобы фокус был сосредоточен на самой модели. Поэтому я повторно использовал «студию» для моего субарктического проекта «Большая рогатая сова». Лишь добавил к ней несколько деталей для реализма, таких как грязь у ног страуса. Наконец-то проект ожил! Я создал light-риг для каждой позы. Финальная сцена рендеринга была собрана из reference-сцены с грумом + шейдинг, mesh + поза и освещение + студия.
Я всегда стараюсь добиться хорошего результата на рендере, чтобы сделать минимальную постобработку. Я отрендерил необходимые RGB-маски, position, иногда normal и всегда Z depth пасы.
Наконец, я сделал свою постобработку и цветовую градацию во Fusion.
Интересная статистика проекта:
Всего перьев – 9 196
Всего волокон – 3 427 455
Всего комплектов перьев – 11
Всего текстур перьев – 24
Поликаунт Zbrush-модели высокого разрешения – 43.18 М
Рендеринг 8К – около 17 часов