Постапокалиптический, немного ржавый гриль, он всё ещё в состоянии порадовать своего хозяина вкусной рыбкой. При работе над этим объектом я прошёл через все этапы пайплайна создания игровых моделей и с наибольшими трудностями я столкнулся в процесс запекания нормалей.
В этой статье я хочу поделиться своим опытом создания карт нормалей на примере этого гриля.
Что бы правильно запечь нормали необходимо соблюсти множество условий, в интернете уже присутствует не мало статей разной степени подробности на эту тему. Я не ставил перед собой задачи повторить их, а лишь хотел поделиться тем, на что сам лично обратил внимание и что мне показалось интересным и важным при работе над этой моделью. Думаю, что кому-то, особенно новичкам будет полезен мой опыт.
Моделировал и развёртывал модель в Блендере и по началу предпринял попытку запечь нормали непосредственно в блендере, но ничего хорошего из этой затеи у меня не вышло. Тогда я обратился к услугам Marmoset Toolbag.
Начнём мы с развертки нашего гриля, т.к. правильная развёртка — это обязательное (но не единственное) условие на пути к качественно запечённым нормалям. Если на этом этапе допустить ошибки, то это отразится на финальном виде модели не самым лучшим образом.
Итак, развёртка. Мне кажется в Блендере есть несколько достаточно удобных, но в тоже время простых инструментов для облегчения этой задачи, о них мы и поговорим вкратце.
Мягкие и жёсткие грани. Золотое правило — это пометить все жёсткие грани. Начнём с бочки. Конечно, можно сделать это вручную, на такой не сложной модели это не займёт много времени, но у нас есть отличный инструмент Select Sharp Edges в меню Select.
Инструмент выбора жёстких граней
Воспользуемся им в режиме редактирования, быстро выделим все жёсткие грани и пометим их как швы на нашей развёртке. Далее в случае необходимости можно вручную пометить прочие грани для разреза. Таким не хитрым способом разворачиваем все детали нашей бочки, и получаем вот такую картину.
Некоторые шелы после развёртки имеют изогнутую форму
Здесь мы видим, что некоторые UV-шелы имеют изогнутую форму, что не лучшим образом скажется на нашей карте нормалей. Что бы это поправить, их следует распрямить. Так же это позволит нам более рационально использовать текстурное пространство. Для этого выберем один четырёхугольник и выровняем все его вершины, затем выделим этот шел целиком и используем инструмент Follow Active Quads. Получаем прямой шел. Проделываем эту операцию с каждым искривлённым островком.
Выпрямляем изогнутые шелы
Так же хочу обратить внимание на то, что мы можем на одно UV пространство разворачивать сразу же несколько объектов. Это позволит нам использовать одну текстуру, а вернее текстурный атлас для нескольких объектов. В моём случае это оправдано, т.к. гриль состоит из нескольких элементов и создавать отдельную текстуру для каждого из них было бы не разумно. В ходе манипуляций с шелами разных объектов мы можем получить на разных участках различающуюся плотность пикселей (texel density). Чтобы привести это значение к среднему знаменателю воспользуемся инструментом Average Island Scale – усреднение размера островков. Развертка готова, можно паковать.
Так же вам может понадобиться что-то сделать с шейдингом своей модели, что бы она выглядела не так…
Не правильный шейдинг
… а так.
Правильный шейдинг
Для этого нам отлично подойдёт аддон для Блендера Y.A.V.N.Y. В режиме редактирования выделяем все фейсы объекта, который необходимо привести в порядок и в боковой N-панели во вкладке Tools, где находится меню этого аддона, нажимаем на символ «+», предварительно выбрав Face Area в выпадающем меню напротив. Так же можно поэкспериментировать с другими вариантами для получения наилучшего результата. Если этого оказалось недостаточно, можно вручную отредактировать нормали через соответствующее меню, которое вызывается сочетанием клавиш alt+n в режиме редактирования. Данные действия необходимо провести как для лоу-поли так и для хай-поли варианта запекаемого объекта.
Когда наша модель полностью готова и развёрнута, а нормали поправлены можно переходить непосредственно к запеканию. Но для начала рекомендуется триангулировать вашу модель, это необходимо что бы избавиться от н-гонов и нон-планаров, их присутствие в поли-сетке вашей модели может подпортить финальный результат. Если же вы уверены в своей топологии, можно оставить всё как есть и сразу экспортировать модель в формат подходящий для Мармосета, например fbx. В меню мы можем выбирать типы объектов, которые хотим экспортировать и отключить лишнее, например камеры и источники света.
Переходим в Мармосет и импортируем наш гриль. Так как он состоит из нескольких составных объектов имеет смысл разбросать их по разным группам запечки, чтобы в будущем избежать артефактов на карте нормалей, которые могут быть вызваны пересечением кейджей этих объектов.
Распределяем объекты по группам сглаживания
Далее дело техники, выставляем количество сэмплов, битность на канал, отступы и конечный формат изображения. Если на предыдущих этапах всё было сделано правильно, получим такой результат.
Гриль с наложенной картой нормалей
Конечно, это далеко не всё что нужно знать для того, чтобы получить хороший результат при запекании нормалей. Возможно, когда-нибудь я возьмусь за написание такого материала. Буду рад ответить на вопросы в комментариях и надеюсь, что эта информация кому-то будет полезна.