Making Of "Arlinoe, the Guardian of the Boy-King"
Всем привет!
Меня зовут Никита Васильков, я 3D художник по персонажам с пятью годами опыта в индустрии. Я специализируюсь на создании персонажей для игр и иногда для синематиков. В этой статье я расскажу, как создавалась моя последняя работа Arlinoe, the Guardian of the Boy King.
И уже не в первый раз хочу сказать спасибо Render.ru за такую возможность.
Выбор концепта:
Для этого проекта я выбрал концепт, созданный Simon Gocal.
Когда я впервые его увидел, мне очень понравился образ героини. Для меня она олицетворяет уставшую воительницу, закалённую в боях, повидавшую многое в жизни и смиренно выполняющую свой долг. В персонаже сразу чувствовалась история и некий внутренний вес. Мне всегда были близки как греческий, так и средневековый сеттинги, а здесь получился удачный микс этих направлений. Это тоже сыграло большую роль в выборе. Отдельно меня привлекли мягкие и спокойные цвета экипировки. Кроме того, комплексность шлема и его внешний вид вызвали у меня дополнительный интерес. Учитывая всё перечисленное, я понял, что точно хочу воссоздать этого персонажа в 3D.
Цели проекта:
Этот проект начался максимально спонтанно. Первую половину 2025 года я потратил на другую персоналку, но в один момент она мне сильно наскучила. И я решил переключиться на более быстрый по срокам проект. При этом мне хотелось привнести в процесс новые методы и прокачать свои навыки.
Я начал делать этого персонажа в октябре 2025 года и закончил в конце декабря 2025. Вся работа заняла около двух с половиной месяцев. После этого я выждал ещё месяц перед публикацией на ArtStation, поскольку конец года считается не самым удачным временем для релиза.
У проекта было несколько ключевых целей:
Я хотел отрендерить персонажа в Unreal Engine 5 т.к. раньше я рендерил персональные работы в Marmoset, хотя с UEl работаю много лет. Мне хотелось глубже разобраться в движке и выйти на нужную для себя планку качества. Помимо этого, я хотел попробовать сделать волосы не через Haircards, а через Alembic groom. Такой подход даёт результат, который по качеству намного ближе к уровню синематиков и кино.
Также я позволил себе больше свободы в оптимизации. Ручная ретопология здесь сделана примерно для 60 процентов персонажа, а остальное получено через ZRemesher и другие методы автоматической генерации сетки. Плюс я решил сделать большее количество текстурных сетов (в районе 10), чтобы понять, насколько будет заметна разница c привычным количеством в 4-5 текстурных сета.
Референсы:
В плане референсов мне особо нечего рассказать. Я не уделял большого внимания сбору обширной базы под каждый элемент персонажа, что, скорее всего, не совсем правильно. Я собрал базовые картинки по греческим шлемам и элементам брони, отдельно изучил сабли, а также подготовил много материалов по распущенным волосам, так как в этот раз полностью выращивал их в XGen.
Вообще я рекомендую всегда собирать как можно больше референсов, независимо от вашего уровня скилла. Сам я обычно так и делаю, но в этот раз в приоритете была скорость, поэтому этап поиска референсов получился быстрым.
Блокаут:
Стадия блокаута безумно важна, но признаюсь, я не особо люблю этот этап. В силу его специфики персонаж выглядит очень просто и примитивно, но это позволяет не совершить ошибок в будущем, когда, к примеру на хай поли этапе резко выяснится, что один из элементов персонажа никак не сочетается с общим образом.
Большинство элементов я быстро набрасываю в ZBrush и Maya. Что касается одежды, то иногда под настроение я симулирую её в Marvelous Designer, а иногда просто скульпчу в ZBrush с примитивными складками, чтобы в кратчайшие сроки получить силуэт и образ персонажа в 3D.
Блокаут особенно важен, если на герое много одежды. Он помогает заранее понять, какие объекты прижимт ткань в разных местах. Это также даёт понимание, где в Marvelous нужно сделать морф таргет или использовать прокси обмотки, чтобы позже получить дополнительные реалистичные складки от наслоения материалов.
Симуляция одежды:
Мой процесс симуляции особо ничем не отличается от пайплайна других художников. Я так же создаю выкройки в окне 2D и стараюсь добиться того, чтобы они хорошо сидели на аватаре. После этого я понижаю значение Particle Distance и начинаю получать вторичные и третичные складки.
Но в этой статье я хочу рассказать о паре фишек, о которых раньше нигде не упоминал:
Когда я симулировал платье, я понимал, что для максимально реалистичного результата нужно сразу закинуть в сцену все элементы экипировки. Своим наслоением они будут прижимать ткань в нужных местах и давать дополнительные правдоподобные складки. В моем случае это: кираса спереди и сзади, висящие ремни, сумка, плечевая броня, обмотки на локтях и запястьях.
Сначала я попробовал просто забрать эти меши из блокаута в ZBrush и использовать их как аватар, но в Marvelous симуляция начинала сходить с ума. В определенный момент стало понятно, что самый стабильный вариант - экспортировать эти меши без толщины, чтобы они были в окне 2D как гарменты, назначить им слои и уже после этого запускать симуляцию. И вот тогда всё начало вести себя гораздо более предсказуемо.
Для симуляции любых обмоток в Marvelous я предпочитаю сразу включать толщину ткани и использовать квадовую сетку вместо треугольной. По моим ощущениям так получается добиться более реалистичного и аккуратного результата.
Дальше я экспортирую эти обмотки уже с толщиной в ZBrush и продолжаю работу там. А вот с остальной одеждой я всегда работаю без толщины.
Хай поли:
На этапе хай поли главная задача дать понять зрителю с полувзгляда, из каких материалов состоит ваш персонаж. Причём это должно читаться на любой дистанции, даже если вы выключите весь полипейнт и оставите только один серый материал. Я не советую добавлять нойз по типу паттернов ткани или очень мелких морщинок для кожаных изделий. Лучше добавить это в Substance Painter. Если сделать это на хай поли, то в зависимости от текселя на лоу поли и разрешения текстур, при запекании карт четкая детализация может превратиться в размытое месиво.
На этом персонаже я хотел отдельно прокачаться в работе с орнаментами. Хотелось, чтобы они выглядели не просто налепленными деталями, а органично вписанными в образ. Для этого я начал активнее использовать функцию Bas Relief в ZBrush, хотя раньше почти никогда к ней не обращался.
Например, змею для передней кирасы я сначала скульптил как обычный меш, потом применял Bas Relief, и уже полученную альфу растягивал на кирасе, а затем дорабатывал скульптом. По такому же принципу я создал головы льва и человека на шлеме, а также узор под ними. А вот сцену со львом, который бросается на двух воинов на лбу шлема, я полностью скульптил руками, так как эта композиция была слишком сложной и требовала много времени, чтобы использовать ее с Bas Relief.
Если говорить про базовую детализацию металла, для меня абсолютный фаворит - Easy Metal Surface Brushes. Чаще всего использую кисти Easy Metal Surface и Scratches 02. Потом прохожусь морфом, чтобы убрать повторяемость и сделать повреждения более живыми.
С тканью у меня уже есть пара любимых кистей, наработанных с годами. Кожу я обрабатываю с похожим подходом как ткань, но с другими альфами. Важно, чтобы в итоге материал ощущался весомым, а не пластилиновым.
Лоу поли:
При создании лоу поли я, как и говорил ранее, держал в голове две цели: сделать всё быстро и немного поэкспериментировать с плотностью сетки и количеством текстурных сетов.
Поликаунт модели составил 294 тысячи треугольников. На скриншотах видно, что, например, в кирасе змеи полностью вретоплены и отбиты топологией. Шлем также по большей части представляет собой один отретопленный кусок геометрии. Во многих местах я добавлял плотность ближе к краям объектов, чтобы по периметру они не выглядели угловатыми.
В то же время вся ткань, кроме юбки платья, это ZRemesher или 1-2ой сабдив из ZBrush. Я также не экономил на количестве эджлупов у круглых объектов. Если обычно цилиндру для верёвок я давал до этого пять или шесть сечений, то здесь использовал по девять. Все клёпки сделаны отдельной геометрией, но справедливости ради это практикуется и на реальных real time моделях даже при наличии ограничений по полигонам.
Кроме того, во многих местах я использовал саппорт лупы и бевелы вместо хард и софт эджей. В итоге топология получилась миксованной, но при этом с хорошим шейдингом.
Что касается текстурных сетов, я сделал их девять штук, включая голову. Средний тексель на всей одежде и экипировке был в районе 45 или 55. Кстати, о голове: это LOD0 от MetaHuman.
Запечка:
По поводу запекания не могу сказать ничего особенного. Использую классический пайплайн бейка в Marmoset с ручной подгонкой cage и skew.
Всегда запекаю настоящую хайпольку без децимации, чтобы сохранить максимальное качество после запечки. Для персональных проектов запекаю карты в 4K 8 bit в формате PNG. При этом normal map пеку в 16 bit для максимального качества.
Формат JPEG легче по весу, но он не поддерживает 16 bit. Кроме того, если сравнить 8 bit JPEG и PNG, особенно в Substance Painter, можно заметить, что normal map в JPEG часто дает артефакты. Если запекать в PSD, каждая текстура будет весить значительно больше. При импорте всех бейк мап в Substance Painter, проект сразу становится очень тяжелым.
Текстуры:
Текстурирование это второй по важности этап после хайполи моделирования и симуляции, если вообще не находится на одном уровне с ними.
Каждый материал не обязательно должен состоять из огромного количества слоёв. В целом я всегда придерживаюсь следующей структуры для абсолютно любого материала:
- Базовый слой Base с нужным цветом, рафнесом и металликом.
- Слои с флуктуациями цвета: один или два слоя с цветовыми вариациями, где один будет светлее базового, а другой темнее.
- Края и впадины: далее уже можно добавлять высветление краев и затемнение впадин. Но будьте осторожны, запаситесь терпением и вручную дорабатывайте процедурные гранжи и генераторы, так как глаз опытного художника сразу распознает повторяемость. Также хочу заметить, что края на кожаных изделиях обычно будут матовее основы, а у металла наоборот более блестящие.
- Детализация: для трех основных материалов, таких как ткань, кожа и металл, можно добавить царапины и трещины. Логика по рафнесу абсолютно такая же, как в предыдущем пункте.
- Градиенты: также нужно добавлять градиенты и разбивать тона на светлые и темные везде, где это возможно.
- Пыль и грязь: ну и в конце всегда можно добавить слои с грязью и пылью.
- Адаптация под движок: я заметил, что для Unreal Engine 5.6 иногда приходится усиливать яркость и сатурацию цвета некоторых слоев, чтобы в движке все выглядело сочно. При этом в Substance Painter это может смотреться слишком ярко и нереалистично. Вообще держите в голове, что семиреализм и реализм обычно строятся на блеклых оттенках и тонах.
Волосы:
волосами была целая эпопея. Я использовал XGen несколько раз за всё время опыта в 3D, иногда по работе, иногда для себя, но никогда не углублялся в него на серьезном уровне. В этот раз я хотел вырастить прическу, ресницы, брови, косы и гриву на шлеме полностью в XGen.
Скажу сразу, что более нестабильного софта я еще не встречал. Очень много вылетов и битых сохранений было встречно пока я создавал грум и приходилось постоянно гуглить варианты как решить разные проблемы, либо откатываться на прошлое сохранение, теряя драгоценное время.
Самая большая проблема в том, что волосы, выращенные как классические XGen descriptions, а не interactive groom, намного более капризные. Когда я вырастил прическу и решил поставить персонажа в позу, в рамках одной сессии Maya прическа принимала новое положение головы и шлема. Но после перезапуска сцены прическа возвращалась в А позу, притом, что персонаж уже стоял в нужной позе. Это ужасная ситуация, в которой итеративность и процедурность просто теряются.
Так что мой совет: выращивайте всё по возможности через interactive groom и запасайтесь терпением. Это муторное занятие, но результат по качеству получается очень достойным.
Не могу не упомянуть, что мне сильно помог туториал от Hadi Karimi
Это просто золотая жила, всем очень советую.
Лукдев и рендер в Unreal Engine 5:
Ни для кого не секрет, что Unreal Engine сейчас является самым популярным движком в индустрии. До этого, всех своих персонажей для личного портфолио я рендерил в Marmoset. Там процесс идет раза в три быстрее, начиная от настройки сцены и света и заканчивая общей скорости работы с интерфейсом.
Конечно, на работе проектах мне уже приходилось делать лукдев персонажей в Unreal. Но тогда мои задачи сводились к минимуму: импортировать модель и назначить текстуры. Со светом работать почти не приходилось, так как заказчик обычно предоставлял отдельный уровень с уже готовым освещением. В этот раз я поставил себе цель сделать в Unreal Engine рендер, который по качеству будет как минимум не хуже, а в идеале превзойдет мои прошлые работы из Marmoset.
Вас может смутить количество графических настроек в самом движке. Но если упрощать - есть два основных места, где вы будете настраивать качество картинки. Это раздел Rendering в Project Settings. Здесь я также люблю фиксировать FPS, так как в движке мне не нужны 90 или 120 кадров, а компьютеру будет значительно легче работать.
А второе место - это Post Process Volume, который вам нужно добавить и настроить самим. Я приложу все скрины со своими настройками и уточню: доступных параметров там намного больше, но я показал именно те, которые менял для лучшего качества картинки. То, что не показано, осталось стандартным.
Еще хотел добавить, что я люблю выкручивать Screen Percentage на 100, так как после этого я вижу все детали сразу даже на средней дистанции на своем 4к мониторе. Но при этом производительность упадет по сравнению с 60-70 процентами, которые движок устанавливает по умолчанию. Чтобы хоть немного сбалансировать нагрузку, в разделе Viewport Scalability я ставлю все значения на Cinematic, но Post Processing, Global Illumination и Shading выставляю на Epic.
Теперь к настройкам самой сцены. Для бэкграунда я создал HDRI Backdrop и вставил туда вручную созданную картинку в формате HDR. Учитывая особенности строения этого купола, снизу туман немного расплющится, но надо понимать, что на кадрах вы можете этого просто не показывать.
Касаемо освещения под главный кадр в полный рост: я люблю добавлять столько света, сколько нужно, а не ограничиваться классическим сетапом из трех источников. Сзади персонажа я также использовал AirGlow, который вы можете забрать из рендер сцены с MetaHuman. Туман на земле был получен через крутой плагин.
люблю под каждый кадр и ракурс выставлять индивидуальный свет. Если делать это на одном уровне, количество источников света может легко перевалить за сотню. А при каждом запуске Unreal они по умолчанию будут включены, и мне совершенно не нравится такой хаос. Поэтому приходилось создавать отдельный уровень для каждого кадра. Это тоже не всегда удобно, приходится постоянно переключаться между этими уровнями. Но таков путь. В итоге у меня получилось около 15 уровней.
Для окружения в первых кадрах, помимо тумана, я использовал текстуры земли с сайта Poly Haven. Я собрал из них материал и наложил его на обычный плейн. Также из Quixel Megascans я взял несколько ассетов травы и ситуативно расставил их в сцене, чтобы добиться нужного эффекта.
Однако для одного из ракурсов я решил заморочиться значительно сильнее: создал много ассетов вручную, хоть это всё и было под один кадр. Очень хотелось отдать дань уважения оригинальному концепту, на котором присутствовали эти пропсы.
В финале я сделал еще бонусный кадр: монеты с гравировкой персонажа. Здесь был достаточно классический пайплайн: High poly, Low poly, UV, Bake и текстуры. Единственное упрощение заключалось в том, что «лоу поли» я сделал через децимацию, чтобы не тратить слишком много времени на финальном этапе, когда сил на проект оставалось уже немного.
Заключение:
Для начала спасибо большое всем, кто дочитал статью до этого момента.
Завершая этот проект, я снова убедился, что пробовать новое это круто. Непривычные задачи в 3D, будь то другой движок для рендера или новая оптимизация, не только прокачивают навыки, но и приносят огромное удовольствие. Так что не бойтесь выходить из зоны комфорта.
Мое главное напутствие: всегда выкладывайтесь в 3D на все 100 процентов. Никогда не работайте вполсилы. Полная самоотдача обязательно приведет к крутому результату, карьерному росту и уверенности в себе.
Всем больших успехов в 3D!