Всем привет! В этой статье я хотел бы поговорить о запекании карты нормалей (normal map) в программе Substance Painter. Вернее было бы сказать, что я попытался собрать воедино все тонкости запекания в Substance Painter. В самом процессе запекания карты нормалей нет ничего сложного и сверхъестественного. Вопрос в том, почему у многих начинающих этого не получается. Хотя вроде все делают как надо. Я попытался вывести несколько правил, которые помогут вам сделать это быстро и качественно. Так же мы рассмотрим причины, по которым порой не получается запечь карту нормалей. Разбирать процесс подготовки мы будем на примере части 3d-модели бульдозера.
Я буду делать урок на основе программы Maya. В 3ds Max принципы те же, только инструменты другие.
Большинство наших действий будут направлено на подготовку модели для запекания. Что-то из моих пунктов не так критично и может просто указывать на то, как я подготавливаю модель для Substance Painter и игрового движка UE4 или Unity 5.
Чтобы запечь карту нормалей нам понадобиться две модели. Одна модель высоко полигональная (hi poly), а другая низко полигональная (low poly). Вы можете изготовить вначале высоко полигональную 3д модель, а затем на ее основе сделать низко полигональную модель. Или выражаясь по-другому сделать ретопологию. И сделать это можно с помощью программы topoGun или вручную. Хотя кто-то предпочитает делать вначале low poly модель и затем уже наделять ее деталями. Все зависит от вашего предпочтения и удобства.
Имеет смысл создать два отдельных слоя low и high. Это очень поможет вам в дальнейшем. В один будете кидать все что относится к низко полигональной модели, а в другой высоко полигональной.
Самое первое правило касается названий ваших деталей. Имена вашим деталям нужно будет давать специфические. Всем высоко полигональным деталям нужно будет давать суффикс _high, а низко полигональным _low. Обратите внимание на нижнее подчеркивание:
Base_low – Base_high
Крыло_low – Крыло_high
Всегда обращайте внимание на название ваших деталей чтобы не закрались ошибки, иначе Substance Painter откажется запекать карту нормалей. Важно, чтобы имена деталей совпадали и отличались только в суффиксе, _low и _high должны быть четкими. То есть без каких-либо приписок типа _low1. А такое бывает потому, что Maya сама приписывает цифры, так как название _low уже есть.
В дальнейшем, вы сможете поменять название суффиксов на те, которые вам удобны, но об этом позже.
Внимательно посмотрите названия деталей в Outliner. Возможны вот такие казусы:
Важно выровнять обе модели – вернее, отцентрировать их по отношению друг к другу! Делается это с помощью инструментов выравнивания Align.
Иначе, у вас может получиться вот такая штука:
Я, конечно, немного утрирую. Потому что сдвинул очень далеко. Но у вас могут быть мелкие артефакты, и вы будете задумываться почему такое происходит.
Помимо того, что вы выровняете все детали можно еще сбросить все координаты в ноль посредством инструмента Freeze. Рекомендую делать эту операцию непосредственно перед экспортом модели в .obj формат.
Для дальнейшей работы вам необходимо будет выставить реальный центр детали Center Pivot.
Следующим шагом будет проверка нашей модели на наличие ошибок в геометрии: это один из важнейших этапов для последующего запекания карты нормалей (normal map) в Substance Painter. Для этого мы будем использовать инструмент Cleanup.
Operation.
Scope.
Раздел Fix by Tesselation.
В зависимости от выбранных ранее пунктов программа либо исправит проблему, либо укажет на нее.
Раздел Remove Geometry.
Ваша UV развертка должна тоже соответствовать определённым правилам.
Основная проблема «запекателя» в Substance Painter состоит в том, что он не любит большие натяжения в модели. То есть, ему проще понимать объект как множество отдельных полигонов. Если же у модели есть острые углы, то программе это не совсем нравится, и она не корректно запекает карту Normal. Поэтому я рекомендую при нарезке UV обращать внимание на эти самые углы под 90° или 45° и разрезать 3д-модель прямо по ним. Это снимет напряжение на развертке и модель запечётся более-менее хорошо. А главное, не будет мерзких швов.
Если в вашей модели присутствуют острые углы, то режьте UV прям по ним. Я сделал как-то так.
В результате, у меня получилась хорошая, сглаженная модель.
Также, программа плохо относится к вытянутым полигонам. Поэтому, при возникновении проблем во время запекания normal map, нужно стараться делать полигоны по форме ближе к квадрату.
Следующим важным элементом в наших правилах будет определение жестких и мягких граней.
По сути, это правило сводится к тому, что острые углы детали – жесткие (hard), а внутренности- мягкие (soft).
Полезно будет изучить окно Polygon Selection Constraint on Edge (Select => Use Constrants...). Оно позволяет задать всевозможные фильтры на выбираемые компоненты: например, выбирать только грани, находящиеся под определенным углом к линии взгляда. Таких фильтров там несколько.
Для начала я сбросил все настройки выбора (Reset). Выбираем все ребра и выставляем им всем сглаживание Soft.
Затем, настроим фильтр по углам.
Минимальный угол: 45°, а максимальный: 120°.
Далее, жмем кнопку Close and Remember – Закрыть и запомнить.
Возможно, вам будет удобнее сделать все вручную. Тут главное понять сам принцип.
Тут все просто: Удаляем всю историю, что вы делали с деталью. Есть смысл вывести эту команду на полочку Shelf. Как это сделать, я говорил в уроке по созданию полок в Maya ;).
Есть еще один момент, связанный, скорее всего, с багом программы, когда история не хочет удаляться. Перерыв кучу источников по этому вопросу, я пришел к выводу, что самым простым способом будет продублировать модель, а старую удалить. Есть еще подозрение на то, что все плохо с историей после инструмента Freeze. Так что, старайтесь замораживать позицию модели непосредственно перед экспортом в формат obj. Если у вас есть другие способы борьбы с этой ошибкой – напишите мне (или в комментариях к уроку).
Все мелкие детали, что вы сделали на hi poly модели (ручки, кнопки, дополнительные панельки) можно запечь на low poly модели посредством карты Normal. При создании мелких деталей следует учитывать их геометрию. Стараться избегать крутых углов под 90°. Лучше чуть увеличить угол – тогда программе будет проще запечь геометрию.
Все детали вы соединяете в одну посредством инструмента Combine.
Вот тут возможен еще один казус, который может помешать вам запечь мелкие детали. Хотя все до банального просто. При соединении деталей в одну посредством Combine, программа Maya переименовывает эту получившуюся деталь, а вы этого можете не заметить. Так что внимательно проверяйте все через Outliner. Я просто выделяю все детали из слоя low и смотрю чтобы не было никаких казусов с именами.
В Maya есть возможность сохранять в формат .fbx посредством инструмента game exporter. Лично у меня Substance Painter и Substance Designer работают с ошибками с этим форматом. На модели возникают дырки в геометрии. Предполагаю, что это какой-то баг Maya. Возможно, у вас все будет прекрасно – попробуйте!
У меня отлично работает File -> Export Selection и экспорт в .obj формат.
Я оставил включенными только пункт материалы и сглаживание.
Открываем Substance Painter 2. И создаем новый проект: File-> New.
Через кнопку Select выбираем нашу low poly модель. Остальные параметры выставляем как на картинке. Обратите внимание что нет галочки на пункте Creat a texture set per UDIM tile.
В окне TextureSet Settings нажимаем кнопку Bake textures.
Не буду разбирать все пункты этого окна, так как это тема отдельного разговора. Пробегусь только по тем пунктам, которые нам интересны в данном уроке.
Оставляем галочку только напротив пункта Normal, остальные снимаем. Потому что мы запекаем только карту нормалей (Normal). Разрешение играет роль, от этого будет зависеть качество карты.
В разделе High poly parameters, в окне High Definition Meshes, нажимаем на пиктограмму листика с загнутым краем. Выбираем нашу high poly модель.
Cage File: тут вам позволяют выбрать свою cage модель, если ее у вас нет то пропускаем этот пункт.
Max Frontal Distance и Max Rear Distance: Я выставил значение 0.03 – это позволило мне добиться хорошего качества. Вы можете поиграть этим значение в большую или меньшую сторону и посмотреть на конечный результат запекания карт нормалей (normal map).
Остальные галочки оставьте как есть. Единственное, может включать или выключать Average Normals (усреднение значений).
Match: By Mesh name или Always – важный пункт, если в вашей модельке много деталей. Позволяет запечь каждую деталь как бы отдельно. То есть программа уже не смотрит на находящиеся рядом детали. Если у вас много деталей выбирайте By Mesh name. Вот именно для этой цели мы и давали каждой детали отдельные похожие названия изменив при этом suffix _low и high.
base_low – base_high
Antialiasing: Выбор уровня сглаживания.
High poly mesh suffix и Low poly mesh suffix: вот тут вы можете назначать имена суффиксов сами, какие вам больше удобны.
Если у вас есть какие-то вопросы или предложение пишите в комментариях или в личку.
Оставляем статью открытой, если возникнут дополнительные нюансы. Чтобы расширить данную тему.
Напомним, что в предыдущих уроках по Maya (моделирование и создание развертки и текстур), мы подробно изучали создание low-poly 3d-модели микроавтобуса.
На этом наш урок по запеканию карты нормалей в Substance Painter закончен. Спасибо за внимание! Если вас интересуют уроки по Substance Painter пишите.
С Уважением, Onza!
Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!