Пайплайн создания оружия для игр в Blender

IMG_9103.png

Приветствуем, на связи команда MFG! Возможно, Вы знаете о том, что существует несколько способов создания игровых hard surface моделей.
Сам процесс обычно структурирован и поделен на этапы, а весь путь от начала до конца называется пайплайн (Pipeline). Существует три основных вида пайплайна, главным различием которых является метод создания хайполи версии модели:
- классический Subdivision;
- Zbrush;
- CAD.
У каждого из способов есть свои плюсы и минусы. В этой статье мы расскажем о пайплайне создания игровой модели оружия с применением комбинированного подхода к созданию хайполи: с использованием как модификатора Subdivision, так и довольно любопытного способа создания фасок инструментами скульптинга. Этот пайплайн применялся в нашем видеокурсе по созданию автомата АК-12.


1. Первым подготовительным и обязательным для любого пайплайна этапом является сбор референсов. Референсы помогают определить общий вид и пропорции модели, а также не забыть про важные детали. Главное помните – много референсов не бывает :) В нашем случае отличным дополнением к референсным фотографиям автомата будет видео. Оно даст представление о конструкции оружия, особенностях его использования, а так даст возможность увидеть оружие с тех ракурсов, которые сложно найти в формате фото.

1.jpg

2. High poly. Создание высокополигональной версии модели можно поделить на несколько более мелких подэтапов.

2.1. Блокинг. Добавляем элементы модели, форма которых больше всего схожа с примитивами, т.е. цилиндрами и кубами. Затем добавляем более сложные элементы, используя модификатор Subdivision. И уже после этого возвращаемся к примитивам и с помощью булевых операций увеличиваем детализацию. Тут главное не бежать вперёд паровоза, и не пытаться сделать всё и сразу. Чёткое планирование и структурированный подход поможет не рассевать Ваше внимание и не распыляться по мелочам. Не стоит сразу пытаться воссоздать каждый винтик и фаску. Вместо этого можно добавить примитив, подогнать его по размерам и только позже вернуться и увеличить степень детализации. Главным условием в самом начале будет то, что нужно добавить все элементы модели, чётко следить за размерами и пропорциями, а также не забывать про соблюдение иерархии коллекций. Это существенно облегчит весь процесс, поскольку позволит по одному щелчку скрывать целые группы объектов и взаимодействовать только с той частью модели, которая нужна именно в конкретный момент времени. Тут же сильно помогут референсы, и чем больше у Вас их будет, тем подробнее и точнее можно будет воссоздать элементы модели.

2.jpg

Использование модификатора Subdivision помогает быстро создавать красивые скругления без особых проблем. Кроме того, если помечать отдельные рёбра как Crease, это поможет сохранять острые углы в тех местах, где размер фаски будет небольшим. А сами фаски можно будет добавить в дальнейшем.

3.jpg

Стоит обратить внимание, что помимо Subdivision для отдельных элементов могут применяться различные модификаторы. Такие, как Mirror, Solidify, Bevel и, как ни странно, Boolean. Многие напрасно избегают пользоваться этим модификатором. Булевые операции в Blender являются модификаторами и это даёт возможность редактирования форм вплоть до того момента, когда этот модификатор будет применён. А если соблюдать определённые правила, то время, которое нужно будет тратить на оптимизацию сетки будет сведено к минимуму. Главное здесь не экономить на количестве рёбер у цилиндров, ведь в будущем эти цилиндры будут вашим lowpoly.

4.jpg

Этап создания highpoly является самым затратным по времени, так именно здесь мы тратим большое количество часов на создание нужных форм и элементов.

5.jpg

2.2. Детализация. Когда основные формы готовы, создаём дубликат blend файла. Вся созданная геометрия будет основой как для хайполи, так и для лоуполи. Оригинальный файл проекта откладываем, и продолжаем работу в дубликате. Наша задача – увеличение степени детализации путём выкручивания модификаторов Subdivision и Bevel, чтобы каждый элемент выглядел максимально ровным, без угловатостей и при этом сохранил гладкий шейдинг. Эти манипуляции проделываются как для основных элементов, так и для форм используемых при Boolean.

Делимся секретом добавления мелких фасок на объекты! Используем для этой операции два инструмента: модификатор Remesh и инструменты скульптинга внутри Blender. Remesh подготовит всю модель, то есть «пересоберёт» геометрию из вокселей, величину которых мы можем указать самостоятельно. Далее можно пользоваться инструментами скульптинга. В боковом меню, там же где находятся все кисти, есть инструмент Mesh Filter. Переключим его режим работы со стандартного Inflate на нужный нам Smooth. Теперь остаётся только нажать левую кнопку мыши в любом пустом месте, потянуть её вправо и следить за тем, как острые края превращаются в сглаженные фаски!

Помимо этого инструмента можно вручную добавлять маски, чтобы исключить влияние этого инструмента на отдельных участках модели. Таким образом можно будет сделать разную величину фасок в рамках одного объекта.

!! Однако, у этого метода один серьёзный минус — модификатор Remesh очень сильно «раздувает» количество полигонов. Даже самый мощный компьютер наверняка начнет подвисать, так что неизбежно придётся использовать модификатор Decimate. Он позволит убрать геометрию там, где она не влияет на форму объекта. Но нужно быть аккуратным, ведь если указать слишком большое значение, то испортится шейдинг или появятся различные артефакты на геометрии. Поэтому тщательно осматриваем объекты целиком перед применением этого модификатора. !!

6.jpg

Этот способ пригодится далеко не на всей модели, только с комплексными, сложными формами. В случае более примитивных деталей можно обойтись применением комбинации модификаторов Bevel и Subdivision.

В итоге всех действий получаем высокополигональную версию автомата, где есть приятные глазу фаски и при этом хороший шейдинг. Главные преимущества такого подхода заключаются в простоте исполнения и экономии времени!

7.jpg

3. Lowpoly. Теперь возвращаемся к оригинальному файлу и начинаем процесс создания лоуполи. Подход к отдельно взятым частям нашей модели будет разный. Первыми будут те части модели, при создании которых использовались булевые операции. Оптимизируем количество итераций модификатора Subdivision и Bevel. Главная задача в том, чтобы lowpoly элементы повторяли силуэт highpoly. В погоне за оптимизацией количества полигонов стоит помнить, что модель не должна выглядеть угловатой. На скриншоте ниже показан пример того, как именно лоуполи должна повторять форму хайполи.

8.jpg

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

Как в случае работы с элементами, где применялся Boolean, так и там где использовался лишь один Subdivision, нужно вручную очищать и оптимизировать сетку. В нашем курсе этому уделяется немало времени, поскольку только так можно убрать лишнюю геометрию. Этот процесс не быстрый, требует усидчивости и определённого уровня знаний.

9.jpg

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

На лоуполи проблемный шейдинг зачастую решается ручным указанием Hard Edge и добавлением модификатора Weighted Normal. Однако иногда нужно вручную добавить немного геометрии. Чаще всего проблемы с шейдингом возникают из-за N-гонов. Даже если какой-то такой элемент не является нонпланаром, то есть находится в одной плоскости, алгоритмы блендера выбирают не самый оптимальный вариант отрисовки нормалей. Но если знать методы исправления каждого типа проблем с шейдингом, то все эти их можно с лёгкостью решить.

Ручное указание Hard Edge будет просто необходимо, если возникнет потребность в объединении группы объектов. Если этого не сделать, то шейдинг неизбежно будет некорректным.

Можно сразу добавлять объектам Lowpoly модификатор Triangulate чтобы избавится от массы N-гонов. В противном случае результат непредсказуем и навряд ли всё будет гладко и без ошибок. Модель для текстурирования будет экспортироваться в Substance Painter, и любая программа производит триангуляцию по своим алгоритмам. Триангуляция пригодится также для экспорта в игровой движок!

10.jpg

4. UV развёртка. Мы уже рассказывали подробно про этот этап в другой нашей статье. Подробнее можете ознакомиться по ссылке.

Начиная с UV развёртки, все остальные этапы 3D моделирования универсальны для любого пайплайна. Развёртка→ Запекание→ Текстурирование идут друг за другом и неразрывно связаны. Однако при создании модели автомата были некоторые особенности и инструменты, о которых мы расскажем подробнее.

В курсе мы использовали сторонние аддоны TexTools, UV-Packer и TexelDensity. Базовые действия можно выполнить и без их помощи, но тогда процесс будет дольше и сложнее. Кроме того, развёртка для игровых моделей требует соблюдения определённых правил и норм, к примеру определённый отступ шеллов друг от друга, указанный в пикселях.

Аддон TexTools позволит корректно разворачивать «кольца» и преобразовывать отдельные элементы в более правильные геометрические формы. TexelDensity имеет функционал измерения и преобразования величины текселя. А UV-Packer просто хороший упаковщик, который справляется со своей задачей значительно качественнее и быстрее стандартного. Разница в скорости запаковки может быть незаметна, если сравнивать её на примитивных формах. Но чем больше будет геометрии (и следственно шеллов), тем медленнее будет работать встроенный
упаковщик. UV-Packer в свою очередь укладывается в пределах 2-3 секунд!

Развёртка любого элемента начинается с того, что хард эджи помечаются швами. Если имеются цилиндрические формы, нужно добавить дополнительный шов в том месте, где он будет максимально скрыт. Очень важно не просто выставит швы и развернуть, а ещё и правильно повернуть шеллы. Правильно повернутые шеллы позволят снизить затрачиваемое время на этапе текстурования. В таких случаях, очень сильно помогает чекер текстура. Стандартного двухцветного чекера из нодов Blender будет недостаточно, поэтому желательно использовать отдельную текстуру, на которой будут присутствовать символы. На скриншоте ниже приведен пример такой текстуры.

11.jpg

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

Как и на прошлых этапах работаем отдельно с каждым элементом. В статье описывается только общий принцип, в видео-курсе «Автомат» все действия показаны "От" и "До" в полном объёме. Процесс развёртки достаточно рутинный, но требует высокой концентрации внимания. Делайте перерывы, чтобы не утомиться от однообразной работы!

В процессе развертки могут обнаружиться такие элементы, в которых геометрия пересекается друг с другом и не видна. Такие фейсы попросту удаляются. Это сократит количество полигонов и освободит свободное пространство на развёртке.

12.jpg

В курсе очень подробно показан метод оптимизации модели для корректного создания оверлапов. Они просто необходимы, так как это один из самых эффективных методов увеличения размера текселя, путём наложения друг на друга симметричных шеллов.

13.jpg

Так как большинство элементов модели симметричны, нужно добавить дополнительную геометрию, чтобы на развёртке можно было «наложить» друг на друга симметричные элементы. Основа используемого в нашем курсе метода состоит в том, что сперва симметричным частям модели назначается свой материал. По этому материалу часть этой геометрии отделяется, и с этой частью работа производится не будет.

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

Когда модель развёрнута, упакована и нас устраивает размер текселя придётся вручную вернуть удалённую часть модели, которую мы отмечали оверлапами и вновь привязать к отдельному материалу. Может показаться, что мы сделали работу дважды, но на самом деле нет. В начале мы просто «удалили» симметричные части как в формате геометрии, так и с развёртки. А после упаковки мы возвращаем геометрию. При этом новая геометрия благодаря такому подходу остаётся в тех же координатах на UV пространстве. Всё что останется сделать, это выделить все помеченные оверлапы и сместить их на 1 тайл по любой координате X. Делается это для того, чтобы информация с Ambient occlusion перенеслась только один раз.

14.jpg

5. Запекание. Перед непосредственно запеканием нужно переименовать все части модели и добавить им суффиксы _low и _high. Это нужно, чтобы Substance Painter смог понять, чем являются отдельно взятые объекты. Затем проверяем всю модель на типичные ошибки, вроде вывернутых нормалей и т. п. И убедившись, что никаких ошибок нет, экспортируем модель в два отдельных fbx файла. Вся разница будет в суффиксах _low и _high. После этого создаётся новый проект в который импортируем lowpoly версию модели. Делаем мы это с целью удаления лишних материалов, оставив только те материалы, которые соответствуют будущим текстурным сэтам. Затем необходимо заново экспортировать лоуполи версию, которая готова к запеканию и текстурированию.

Этап запекания в курсе показывался непосредственно в Substance Painter. Если на более ранних этапах вы сделали всё правильно, то сам процесс пройдёт довольно быстро и гладко, всё будет зависеть лишь от мощности вашей видеокарты.

15.jpg

Все проблемные моменты можно будет исправить не выходя за пределы программы.

На этапе запекания дополняется детализация, так как далеко не все мелкие элементы, такие как выемки и углубления, были сделаны на хайполи. Substance Painter позволит довольно быстро добавить их. После всех исправлений на карте нормали и дополнения детализации нужно экспортировать карту нормали и заново импортировать.

Приступаем к работе над ID картами. Эта текстура является своеобразной маской, благодаря которой можно текстурировать отдельные части модели. Существует несколько способов их создания, но в курсе «Автомат» применяется ручной способ раскрашивания модели разными цветами, соответствующими определённым материалам, например пластик или металл. Информация из Base Color экспортируется в отдельные файлы для каждого текстурного сета, они по сути и будут ID картами.

16.jpg

Настала очередь запечь Ambient Occlusion. Для этого вновь нужно вернуться в Blender и отодвинуть некоторые части модели друг от друга. Делается это того, чтобы на карте не было лишней информации, которая в последующем будет использоваться для генераторов текстур. Перед этим можно выполнить запекание других карт, таких как World Space Normal, Position, Curvature и Thickness. В курсе «Автомат» для этих карт мы уже не использовали хайполи, вся информация бралась из карты нормалей.

17.jpg

6. Текстурирование. Именно текстуры больше всего влияют на визуальную составляющую модели. Текстурирование – это максимально творческий процесс. Помимо того, что нужно передать все особенности референсов, можно ещё добавить модели уникальности: потёртости, текст, и прочие элементы, которые будут визуально рассказывать о судьбе объекта.

18.jpg

7. Рендер. В курсе этот этап не был затронут, но он играет очень важную роль. Ведь красивые рендеры — это простой способ демонстрации итогов Вашей работы. Выбор программы может быть любым, главное — итоговый результат должен быть качественным. Рендер можно сделать как внутри всё того же Blender. Популярными альтернативами являются Marmoset Toolbag и Unreal Engine 5.

Итак, мы постарались осветить каждый этап создания модели автомата. Очень надеемся, что вы смогли узнать для себя что-то новое и увеличили свой багаж знаний. А если хотите узнать ещё больше, то советуем перейти на официальный сайт MFG и самостоятельно ознакомится с нашими видеокурсами. В них мы детально разбираем каждый этап создания модели с подробными объяснениями каждого действия.

С вами была команда MFG, до связи!

19.jpg

709 0 850 3
5
2023-11-13
Дичь
2023-11-13
Максим, молодец, сложно тебе будет
2023-11-13
Крайне не советую юзать ремешер в Blender.Будете страдать. Используйте ZBrush
2023-11-15
Что касается рефов оружия - можно воспользоваться игрой World of Guns... В ней огромное количество разнообразного огнестрела (и не только), который можно покрутить и осмотреть со всех сторон, и даже разобрать вплоть до винтика. Всегда было интересно, где они берут чертежи...
2023-11-20
Владислав СтепановКрайне не советую юзать ремешер в Blender.Будете страдать. Используйте ZBrush

Так же можно сказать и наоборот..)
Крайне не советую юзать ремешер в Zbrush.Будете страдать. Используйте встроенный в Blender.
А если не смогли на нём добиться нужных результатов.
То просто поставьте Exoside Quad Remesher аддон связку.
RENDER.RU