Making Of "Man-at-arms"
Всем привет! Меня зовут Марат Исляев. 3d моделированием занимаюсь примерно с 2021 года. В основном интересуюсь созданием комплектов брони, одежды и оружия.
В этой статье я опишу процесс создания проекта Man-at-arms. Здесь, в основном, будут технические скриншоты. Все красивые рендеры можно посмотреть на странице работы.
Суть проекта
Man-at-arms – это термин, обозначающий профессионального воина Средневековья.
Идея проекта Man-at-arms возникла в основном из моей сентиментальной привязанности к снаряжению в играх. Комплект, который ты находишь в начале и постепенно улучшаешь на протяжение всей игры. В качестве примера можно привести ведьмачьи сеты доспехов из Ведьмака 3.
Элементы комплекта:
- Шлем.
- Броня для верхней части тела.
- Перчатки.
- Броня для ног.
Основные цели
- Разобраться в устройстве средневековых доспехов - хотелось сделать именно реалистичную броню, с правильными пропорциями и соединениями.
- Улучшить скилл в Marvelous Designer - в MD у меня был достаточно скромный опыт. Хотелось потренироваться и больше узнать о возможностях программы.
- Найти способ делать кольчугу - до этой работы я несколько раз пытался её делать, но до конца работы не доводил.
- Сделать game-ready модель - итоговую работу я планировал сделать модом для Skyrim, а также ассетом для Unreal Engine.
Проектом я занимался очень долго. Первые блокауты, судя по датам файлов, были сделаны ещё в начале 2024 года.
Основные проблемы, из-за которых проект затянулся
Делать два года один проект непростительно. Для начала поговорю о проблемах, с которыми я столкнулся и перечислю причины задержки. Возможно, это поможет кому-то избежать тех же ошибок, которые я допустил.
a. Отсутствие видения и референсы.
Все знают, что нужно собрать множество референсов, чтобы создать интересный и качественный проект. Но в моём случае обилие референсов стало ловушкой.
К подбору референсов я подошёл ответственно, разбил всё по группам и упорядочил.
Мне очень нравятся доспехи. Из Pinterest в рефборд шло всё, что как-то зацепило глаз. Очень сложно выбрать что-то одно, когда тебе нравится всё. В итоге я получил не цельный концепт, а солянку из стилей и эпох. К концу работы рефборд пришёл в хаос и оброс кучей картинок, которые в итоге даже не использовались.
2. Стремление к проработке и суть проекта.
Модульность и разбитие на уровни, которые можно улучшать. Изначально было разделение на 6 уровней. Здесь проблема заключается в том, что в реальности доспехи во многих местах связаны между собой и один элемент не может использоваться без другого. Мне нужно было придумать, какой элемент убрать на первом уровне, а какой прибавить на уровне повыше так, чтобы это имело смысл. Например, не получится убрать переднюю часть наручей просто так. Придётся сделать крепления, обхватывающие руку, для задней части, чтобы они не висели в воздухе на уровне 1. Но, если сделать крепления, они будут мешать и уже не имеют смысла на уровне 3, когда передняя часть уже присутствует и всё это связано другим типом креплений. И так практически со всеми элементами. Из-за этого я проделал много ненужной работы, некоторые элементы были сделаны, но не использованы.
3. Неоптимальное использование софта/незнание лимитов своего компьютера
В особенности это касается работы с Marvelous Designer. Изначально я всё делал вместе. Через некоторое время я разделил проект на торс, ноги и койф, так как скорость работы была очень низкая, компьютер не мог справиться с одновременной симуляцией нескольких слоёв одежды.
Это основные причины, которые тормозили проект на старте. Повреждение файлов/сабтулов в Zbrush, выгорание и занятость в сторонних проектах тоже значительно замедлили процесс, но обсуждать здесь эти причины смысла нет, поэтому перейдём непосредственно к процессу создания.
Блокаут в Maya
На этом этапе я выбирал, какие элементы брони будут на разных уровнях. Первоначальный блокаут сильно отличался от итогового варианта, в котором я избавился от первых двух уровней.
За референс для уровней брал разделение на качество доспехов из Skyrim. От железной до драконьей кости. Элементы отличались не на всех уровнях. Для последних двух планировал сделать отличия в текстурах.
Разделение на уровни делал с помощью Layers. Это удобнее, чем обычное разделение на группы. Можно управлять видимостью выбранных элементов и не прятать саму группу.
Симуляция одежды в Marvelous Designer – база
Примерно определившись с уровнями, я начал делать одежду. На этом этапе я определял основные паттерны и формы. Выбирал длину, расположение линий на стёганой куртке и койфе. Для удобства на каждый элемент назначил слой (Layer) в настройках ткани. Элементы с более высоким значением всегда будут оставаться сверху при симуляции.
Эффект «надутости» для койфа и остальных стёганых элементов одежды я подсмотрел на туториалах. Суть в следующем:
1.1.1. Сделал первый слой ткани и на ней, в местах, где будут швы, расположил внутренние линии (internal lines).
1.1.2. Дублировал слой со всеми линиями - Layer Clone (Under).
1.1.3. Для самой ткани выставил Pressure. Например, 2 для верхнего слоя и -2 для нижнего. Этот параметр влияет именно на саму ткань, а не на линии.
1.1.4. Выделил внутренние линии нижнего слоя и включил для них эластичность. Основной элемент управления для линий — Ratio. От него зависит, насколько сильно будет сжимать ткань выбранная линия.
Улучшение блокаута в Maya
На этом этапе я доводил до ума металлические элементы брони, полностью определился со стилем и уровнями.
Броню для рук и ног хотелось сделать максимально достоверно с точки зрения артикуляции, чтобы при сгибании и разгибании конечности доспехи вели себя как в реальности. Для этого я разделил элементы на группы, установил для групп вручную пивот, как если бы это было колено/локоть, и проверял на сгибания.
Симуляция одежды в Marvelous Designer – складки от доспехов
Далее я импортировал элементы доспехов в MD, заморозил их и запустил симуляцию. Желательно, чтобы элементы одежды уже были под бронёй, чтобы уменьшить нагрузку на систему и избежать проблем. Также для элементов брони нужно выставить значение Layers выше, чему у одежды, чтобы ткань не пыталась выползти из-под брони при симуляции.
Подготовка одежды из MD к хайполи
При экспорте из Marvelous Designer все паттерны будут идти отдельными кусками. Для дальнейшей работы необходимо их сшить в один. Это можно сделать как в Zbrush, так и Maya. Я делал в Maya с помощью команды Merge.
Топология после импорта из MD в Zbrush обычно плохая, а разрешение у меня было низкое. Поэтому нужно было сделать ретоп и увеличить поликаунт для дальнейшего скульптинга. Но если сделать ретоп на импортированной модели, часть мелких складок теряется. Поэтому я сделал следующее:
- Дублировал импортированную модель и сделал для неё ретоп. На этом этапе достаточно обойтись автоматическим ZRemesher.
- Увеличил поликаунт на обеих моделях (Ctrl+D или Dynamic Subdiv для большего контроля).
- Выделил ретоп-модель и сделал ProjectAll с оригинальной модели.
Так я получил оригинальное качество со всеми складками на модели с хорошей топологией.
Хайполи
Ткань
Если планируете использовать Noise для наложения деталей с помощью альфы, то желательно сделать UV развертку. Шум можно наложить и без неё, но с готовыми UV выглядит лучше.
На стёганые элементы одежды, где ткань грубая с крупным паттерном, я добавил альфу ткани с помощью Noise. Остальные элементы решил оставить как есть. Нитки швов сделал с помощью кастомной IMM кисти с включенным curve mode.
Металл
Делать сильные повреждения я не хотел, так как планировал сделать разные текстуры на разные уровни. Но идеально гладким металл тоже не хотелось оставлять, поэтому решил добавить помятости (как от удара молотом при ковке или починке) и немного скруглил дамагом края. По скульпту кажется, что дамаг достаточно серьёзный, но при запечке часть глубины всё равно теряется, поэтому слишком сильно не сдерживался.
Основные инструменты - это кисти Standard в режиме Spray, им добавляем мелкие «надутости», и TrimDynamic, которыми эти надутости разглаживаем. Получается эффект сплюснутости.
Кольчуга
Пожалуй, самый сложный этап. Я перепробовал множество вариантов, долго экспериментировал. В итоге выбрал самый сложный способ, но он обеспечивал лучшее качество. По крайней мере, для хайполи модели.
1. Я сделал в Maya одно кольчужное звено.
2. Потом дублировал его развернул. Это основа для дальнейшей работы.
3. Дальше дублировал эти два звена, объединял в группы и дублировал дальше.
Размер полотна зависит от формы поверхности, по которой будет вестись кисть. Если для кольчужной юбки можно сделать несколько больших пластов и закрыть сразу всю поверхность, то для кольчуги в области подмышек подойдёт только маленький кусок, так как кисть в режиме curve mode не деформирует саму модель.
4. Далее я импортировал кольчугу в Zbrush и сделал кастомную IMM кисть. В режиме curve mode я закрыл всю поверхность несколькими рядами колец.
5. После этого я вручную подгонял кольца, которые пересекались. Делал это в Maya, мне так показалось удобнее.
Этот способ долгий и муторный, не уверен, что кто-то будет так делать в студии с дедлайном. По правде сказать, на кольчужных рукавах я почти отказался от кольчуги вообще. поверхность была слишком неровная, особенно в области подмышек, а ряды кольчуги были разрознены слишком сильно, поэтому пришлось очень много править руками.
Кольчужная юбка получилась слишком плоской, поэтому добавил небольшие складки Standard брашем с большим радиусом. Отдельные кольца немного искривились, но это практически незаметно.
Подготовка к ретопу
Для ретопа сначала «облегчил» хайполи с помощью Decimate в Zbrush. Также нужно назначить vertex color для разных элементов. В дальнейшем это сильно упростит работу с текстурами. Я назначаю vertex color в Maya.
Ретоп и UV
В целом лоуполи модель у меня была уже готова. Теперь нужно было только решить, какие элементы сшить, а какие оставить отдельно.
Развёртку я изначально планировал сделать по одной на элемент. Но плотность текселя получилась слишком низкой, поэтому я сделал несколько материалов для брони ног и торса.
Некоторые UV шеллы для мелких элементов, например пряжек и заклёпок, увеличивал отдельно.
Запечка в Marmoset Toolbag
Запекать можно и в Substance Painter, но в Marmoset есть незаменимый инструмент Paint Offset для редактирования сетки запекания. Он нужен для случаев, когда в каком-то месте, например на заклёпках, расстояние сетки нужно большое, а для элементов, расположенных близко друг к другу, вроде пряжек ремней, расстояние нужно маленькое.
С кольчугой на торсе, впрочем, Substance Painter наоборот, справился лучше. В Marmoset были артефакты, от которых я не мог избавиться.
Текстуры в Substance Painter
Для избежания проблем с производительностью, текстурировал я элементы также по отдельности. Это немного осложнило процесс, так как нет возможности сразу посмотреть, как весь комплект будет выглядеть вместе. Поэтому сначала я полностью сделал текстуры для шлема. Из слоёв для металла, стёганок и кожи сделал смартматериалы и использовал их для других элементов. Таким образом, для торса, ног и перчаток нужно было только подправлять маски и подкручивать некоторые значения.
Металл и кожу текстурил по этому туториалу:
В принципе, на него можно ориентироваться при создании любого материала.
Суть такая:
- Базовый слой с цветом и рафнесом.
- Слои-фильтры с уменьшением/увеличением рафнеса (contrast_luminosity).
- Слои-фильтры с более тёмными и более светлыми вариациями этого же цвета (hsl_perspective).
По повреждениям на металл я добавил только мелкие царапины. Идею сделать несколько сетов текстур разного цвета и разной степени повреждённости я пока отбросил.
Тестирование текстур в Unreal Engine.
Изначально проект ориентировался на Unreal Engine, поэтому перед рендером в Marmoset я проверял текстуры в движке.
Оружие
Только после завершения работы над текстурами я понял, что если ставить готовый проект в позу, то было бы неплохо дать воину оружие. В идеале было бы сделать щит, меч и кинжал, но это очень долгая работа, а я уже был настроен закончить работу в мае. Поэтому решил остановиться на более простом, и в то же время более оригинальном для себя варианте - двуручном молоте. Сделал его достаточно быстро. Металл молота скульптил по тем же методам что и броню, а деревянную рукоять решил вообще не трогать и оставить на текстуры.
Риг и поза для рендера
Здесь я также перепробовал несколько вариантов. Качественнее всего поза выходит в Cascadeur, но экспорт в fbx оказался платным. AccuRIG делает хороший риг, но также возникли проблемы с экспортом, так как на один меш было назначено несколько материалов, и он их просто потёр. В итоге остановился на самом простом варианте. Плагин GameRig Tools для Blender. Он бесплатный и есть подробная видеоинструкция, как им пользоваться. Риг вышел плохой, по сравнению с остальными вариантами, веса распределились криво, левая нога тянула правую и т. д. Пришлось править всё вручную.
В итоге получилось довести риг до сносного состояния и поставить в позу. Но для анимаций этот риг не годится.
Рендер в Marmoset 5
В мармосет я импортировал модель в позе с оружием и а А-позе. Ориентировался на туториал:
От себя по этому процессу, пожалуй, добавить нечего, кроме того, что я использовал tone mapping ACES в настройках камеры. ACES даёт более сочные цвета и более приближён к Unreal Engine.
Заключение
Масштаб проекта значительно уменьшился в ходе работы. Я отказался от нескольких сетов текстур, а лоуполи модель вышла не совсем game-ready. Также пропорции шлема, кажется, не совсем правильные, он должен быть больше. Но результатом я в общем остался доволен. Чтобы сделать лучше, нужно учиться и практиковаться дальше.
Спасибо всем, кто прочитал статью. Не забывайте отдыхать.