Как сделать карту нормалей в maya

Обновлено: 07.07.2024


Иногда бывает, что нужно Убрать галочку - Color Management.

(Windows= settings/Pref= Preferences= Color Management= Enable Color management)

но и в самом материале, нужно выбрать Tangent Space.

Но и зависит от того, где вы спекали нормал.

Возможно зеленый канал нужно флипнуть

(в таких случаях, хорошо бы больше информации, вариантов может быть много, но угадать вашу проблему сложно. Сделайте скрин, если проблему не решили).

Запекаем карту нормалей (normal map) в Substance Painter

Основные правила. Подготовка модели к экспорту в Substance painter.

Всем привет! В этой статье я хотел бы поговорить о запекании карты нормалей (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. Это очень поможет вам в дальнейшем. В один будете кидать все что относится к низко полигональной модели, а в другой высоко полигональной.

1. Suffix: делаем правильные суффиксы

Самое первое правило касается названий ваших деталей. Имена вашим деталям нужно будет давать специфические. Всем высоко полигональным деталям нужно будет давать суффикс _high, а низко полигональным _low. Обратите внимание на нижнее подчеркивание:
Base_low – Base_high
Крыло_low – Крыло_high

Всегда обращайте внимание на название ваших деталей чтобы не закрались ошибки, иначе Substance Painter откажется запекать карту нормалей. Важно, чтобы имена деталей совпадали и отличались только в суффиксе, _low и _high должны быть четкими. То есть без каких-либо приписок типа _low1. А такое бывает потому, что Maya сама приписывает цифры, так как название _low уже есть.

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

Внимательно посмотрите названия деталей в Outliner. Возможны вот такие казусы:

Запекаем карту нормалей (normal map) в Substance Painter

2. Align: выравниваем модели для запекания

Важно выровнять обе модели – вернее, отцентрировать их по отношению друг к другу! Делается это с помощью инструментов выравнивания Align.

Запекаем карту нормалей (normal map) в Substance Painter

Иначе, у вас может получиться вот такая штука:

Запекаем карту нормалей (normal map) в Substance Painter

Я, конечно, немного утрирую. Потому что сдвинул очень далеко. Но у вас могут быть мелкие артефакты, и вы будете задумываться почему такое происходит.

3. Freeze: сброс координат

Помимо того, что вы выровняете все детали можно еще сбросить все координаты в ноль посредством инструмента Freeze. Рекомендую делать эту операцию непосредственно перед экспортом модели в .obj формат.

Запекаем карту нормалей (normal map) в Substance Painter

4. Center Pivot: выставляем опорную точку

Для дальнейшей работы вам необходимо будет выставить реальный центр детали Center Pivot.

Запекаем карту нормалей (normal map) в Substance Painter

5. Cleanup: проверяем ошибки геометрии

Следующим шагом будет проверка нашей модели на наличие ошибок в геометрии: это один из важнейших этапов для последующего запекания карты нормалей (normal map) в Substance Painter. Для этого мы будем использовать инструмент Cleanup.

Запекаем карту нормалей (normal map) в Substance Painter

Запекаем карту нормалей (normal map) в Substance Painter

Раздел Cleanup Effect

  • Cleanup matching polygon – это практически автоматический поиск исправление, удаление или разбиение на треугольники неправильных полигонов в вашей модели.
  • Select matching polygons – неправильные полигоны будут подсвечены на нашей модели. Maya же исправлять ничего не будет, только выберет их.
  • Apply to selection objects – применить к выбранным объектам.
  • Apply to all polygonal objects – применить ко всем полигональным объектам.
  • Keep construction history – Оставляет историю в channel box.

Запекаем карту нормалей (normal map) в Substance Painter

Раздел Fix by Tesselation.

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

  • 4-sided faces – покажет все четырехугольные полигоны.
  • Faces with more than 4 sides – покажет полигоны с более чем четырьмя сторонами.
  • Concave faces – отмечает все полигоны, которые не являются выпуклыми фигурами.
  • Faces with hole – полигоны с отверстиями.
  • Non-planar faces – будет отмечать все полигоны, которые не являются плоскостью. Укажет все полигоны, чьи вершины не лежат в одной плоскости.

Запекаем карту нормалей (normal map) в Substance Painter

Раздел Remove Geometry.

Запекаем карту нормалей (normal map) в Substance Painter

Правильная UV развертка для запекания карт нормалей

Ваша UV развертка должна тоже соответствовать определённым правилам.

Если в вашей модели присутствуют острые углы, то режьте UV прям по ним. Я сделал как-то так.

Запекаем карту нормалей (normal map) в Substance Painter

В результате, у меня получилась хорошая, сглаженная модель.

Запекаем карту нормалей (normal map) в Substance Painter

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

Запекаем карту нормалей (normal map) в Substance Painter

7. Soft or Hard Edge: определяем жесткие и мягкие грани

Следующим важным элементом в наших правилах будет определение жестких и мягких граней.
По сути, это правило сводится к тому, что острые углы детали – жесткие (hard), а внутренности- мягкие (soft).
Полезно будет изучить окно Polygon Selection Constraint on Edge (Select => Use Constrants. ). Оно позволяет задать всевозможные фильтры на выбираемые компоненты: например, выбирать только грани, находящиеся под определенным углом к линии взгляда. Таких фильтров там несколько.

Запекаем карту нормалей (normal map) в Substance Painter

Для начала я сбросил все настройки выбора (Reset). Выбираем все ребра и выставляем им всем сглаживание Soft.

Запекаем карту нормалей (normal map) в Substance Painter

Запекаем карту нормалей (normal map) в Substance Painter

Затем, настроим фильтр по углам.

Запекаем карту нормалей (normal map) в Substance Painter

Минимальный угол: 45°, а максимальный: 120°.

Далее, жмем кнопку Close and Remember – Закрыть и запомнить.
Возможно, вам будет удобнее сделать все вручную. Тут главное понять сам принцип.

8. History: работаем с историей

Тут все просто: Удаляем всю историю, что вы делали с деталью. Есть смысл вывести эту команду на полочку Shelf. Как это сделать, я говорил в уроке по созданию полок в Maya ;).

Есть еще один момент, связанный, скорее всего, с багом программы, когда история не хочет удаляться. Перерыв кучу источников по этому вопросу, я пришел к выводу, что самым простым способом будет продублировать модель, а старую удалить. Есть еще подозрение на то, что все плохо с историей после инструмента Freeze. Так что, старайтесь замораживать позицию модели непосредственно перед экспортом в формат obj. Если у вас есть другие способы борьбы с этой ошибкой – напишите мне (или в комментариях к уроку).

9. Запекание мелких деталей

Все мелкие детали, что вы сделали на hi poly модели (ручки, кнопки, дополнительные панельки) можно запечь на low poly модели посредством карты Normal. При создании мелких деталей следует учитывать их геометрию. Стараться избегать крутых углов под 90°. Лучше чуть увеличить угол – тогда программе будет проще запечь геометрию.

Запекаем карту нормалей (normal map) в Substance Painter

Запекаем карту нормалей (normal map) в Substance Painter

Запекаем карту нормалей (normal map) в Substance Painter

Все детали вы соединяете в одну посредством инструмента Combine.

Запекаем карту нормалей (normal map) в Substance Painter

Вот тут возможен еще один казус, который может помешать вам запечь мелкие детали. Хотя все до банального просто. При соединении деталей в одну посредством Combine, программа Maya переименовывает эту получившуюся деталь, а вы этого можете не заметить. Так что внимательно проверяйте все через Outliner. Я просто выделяю все детали из слоя low и смотрю чтобы не было никаких казусов с именами.

Запекаем карту нормалей (normal map) в Substance Painter

10. Формат экспорта

В Maya есть возможность сохранять в формат .fbx посредством инструмента game exporter. Лично у меня Substance Painter и Substance Designer работают с ошибками с этим форматом. На модели возникают дырки в геометрии. Предполагаю, что это какой-то баг Maya. Возможно, у вас все будет прекрасно – попробуйте!
У меня отлично работает File -> Export Selection и экспорт в .obj формат.

Запекаем карту нормалей (normal map) в Substance Painter

Я оставил включенными только пункт материалы и сглаживание.

Запекаем карту нормалей в Substance Painter

Открываем Substance Painter 2. И создаем новый проект: File-> New.

Запекаем карту нормалей (normal map) в Substance Painter

Через кнопку Select выбираем нашу low poly модель. Остальные параметры выставляем как на картинке. Обратите внимание что нет галочки на пункте Creat a texture set per UDIM tile.

В окне TextureSet Settings нажимаем кнопку Bake textures.

Запекаем карту нормалей (normal map) в Substance Painter

Запекаем карту нормалей (normal map) в Substance Painter

Не буду разбирать все пункты этого окна, так как это тема отдельного разговора. Пробегусь только по тем пунктам, которые нам интересны в данном уроке.
Оставляем галочку только напротив пункта 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: вот тут вы можете назначать имена суффиксов сами, какие вам больше удобны.

Запекаем карту нормалей (normal map) в Substance Painter

Если у вас есть какие-то вопросы или предложение пишите в комментариях или в личку.
Оставляем статью открытой, если возникнут дополнительные нюансы. Чтобы расширить данную тему.

Напомним, что в предыдущих уроках по Maya (моделирование и создание развертки и текстур), мы подробно изучали создание low-poly 3d-модели микроавтобуса.

На этом наш урок по запеканию карты нормалей в Substance Painter закончен. Спасибо за внимание! Если вас интересуют уроки по Substance Painter пишите.
С Уважением, Onza!

Перепечатка и использования данного материала без прямой обратной ссылки категорически запрещена!

Если в сцене необходимо отобразить направление нормалей у полигонального объекта, это можно сделать через главное меню или в свойствах объекта. Выделите объект, перейдите в редактор атрибутов ( ). На второй вкладке, отвечающей за изменение отображения объекта, название вкладки идет с окончанием Shape, перейдите в свиток Mesh Component Display (Отображение компонентов сетки) и включите опцию Display Normal (рис. 1).


В сцене на выделенном полигональном объекте отобразятся нормали (рис. 2).


Размер нормалей определяется параметром Normal Size.

Нормали можно включить через главное окно. Для этого надо выделить окно и в главном меню выбрать Display > Polygons > FaceNormal.


Normal mapping works by replacing the interpolated surface normal by the one evaluated from an RGB texture, where each channel (Red, Green, Blue) corresponds to the X, Y and Z coordinates of the surface normal. It can be faster than bump mapping since bump mapping requires evaluating the shader underneath at least three times.

normal_map -> standard_surface

Input

The map, usually exported from Mudbox or ZBrush.

Strength

Increase or decrease the normal map effect.

Tangent

The tangent map. Together with the shading normal, it defines the tangent coordinate system that the input vector applies to. If available from your sculpting tool, you should connect here the tangent map that the normal map relies on. If 0, the shader attempts the following actions to build the frame:

  1. Look for vector user data named "tangent" and "bitangent".
  2. Use the UV derivatives.
  3. Build its own local frame.

The shader works in tangent space only. If your tangent map was exported in either world or object space, you could instead use the more generic space_transform shader.

Normal

The normal and tangent parameters can be optionally linked to define a custom tangent coordinate system that the input is transformed from. If the normal is not linked, it will use the default surface normal.

Order

Lets you shuffle the input channels order.

Invert X

If enabled, inverts (1-channel) the x input channel.

Invert Y

If enabled, inverts (1-channel) the y input channel.

Invert Z

If enabled, inverts (1-channel) the z input channel.

Color To Signed

In general, if you want to use a 16/32 format that can contain negative values, you should avoid the [-1..1] -> [0..1] conversion, and so that map would contain already the normal value, in which case color-to-signing back should be avoided in the shader.

The default values of these parameters (order, invert, color_to_signed) let you correctly import a map generated in Mudbox in Tangent coordinate space.

Читайте также: