Почему карта нормалей накладывается криво в blender

- В этой теме 3 ответа, 3 участника, последнее обновление 5 месяцев, 3 недели назад сделано
Артем Слаква .
Смоделировал рубашку. Применённые модификаторы видно на скрине ниже. 
Нормали направлены таким образом (на воротнике перенаправлял нормали) 
После мне нужно заскульптить детали на рубашке. Я удалил модификатор subdivision Surface и применил другой — Multiresolution.
Случилось это. (направление нормалей не трогал) 

Ну ладно, ничего страшного в этих тёмных полигонах нет — подумал я и продолжил работу.
Появились артефакты при переключении на уровни подразделения отличные от 5. (На скрине превью уровень 4) 
При уровне 5 (именно столько раз я подразделил) всё более менее хорошо. Только на уголках ворота косяки. 
Далее я перенаправил нормали выделяя все вершины и нажимая ctrl+N. 
Тёмные полигоны остались, но зато артефакты уменьшились.
На скринах последовательное увеличение уровня подразделения: 



Подскажите, как правильно направить нормали, чтобы избавиться от артефактов модификатора Multiresolution? Как повлияют на финальный рендер тёмные полигоны? Нужно ли это исправить? И как это сделать?
Наложение карт в blender
Создал модель в zbrush, создар ретопологию и развертку в 3DCoat и затекстурировал в substance painter. Но при наложении карты нормали и высоты в blender происходит какой то бред. Сначало просто там где должна быть глубина и сглаживание, просто были темные пятна, а сейчас когда я делал пример проблемы нормаль вообще слетела вниз. Применял и smoth и subdivision, ничего не помогает, полигоны все так же видны при рендере. Не могу понять что я делаю не так т. к все делаю по туториалам и не вижу нигде ошибки. Скрины с картами примерами и нодами прилагаются.


Создание карты нормалей в Blender (Normal Maps)

Normal Map — это текстура, контролирующая направление отражения света. Используется данная технология для создания высокодетализированных низкополигональных моделей. Необходима для визуализации относительно сложных объектов в компьютерных играх без потери качества.
Немного теории
Для создания карты нормалей необходимо иметь высокополигональную и низкополигональную модель. Во время создания текстуры информация из высокополигональной модели интерпретируются в цветовую составляющую RGB, где [r,g,b] соотносятся с осями [x,y,z]. Соответственно красный цвет (R) отвечает за координату X, зеленый (G) за координату Y и синий (B) за Z (высоту).
Вы можете создать модель состоящую из миллиона полигонов, а затем создать такую же (визуально и под определенным углом), но состоящую всего из двух полигонов.

Создание Normal Maps в Blender
Возьмите любую высокодетализированую поверхность. Для примера, я буду использовать плоскость, на которой расположено несколько простых геометрических объектов. Как видите, она состоит из 8234 треугольников.
Теперь создайте плоскость таких же размеров и расположите ее над высокодетализированым объектом:
Разделите окно 3D вида на две части и в левой выберите UV/Image Editor. Создайте в нем новое изображение с настройками по умолчанию (я только имя указал).
Выделите Вашу плоскость, перейдите в режим редактирования и создайте для нее UV-развертку:
Выделите Вашу высокополигональную модель, а затем удерживая Shift низкополигональную. На вкладке Render в самом низу у Вас находится меню Bake. Выставите для него следующие настройки и нажмите кнопку Bake.
По завершению процесса запекания, у Вас в окне UV/Image Editor должна появится текстура карты нормалей. В моем случае она выглядит следующим образом:
Вот собственно и все!
Чтобы увидеть результат работы данной техники, на панели свойств включите режим отображения GLSL и включите режим отображения текстур:
Теперь создайте для плоскости новый материал с настройками по умолчанию, затем перейдите на вкладку текстур и выставите следующие настройки:
Можете выбрать лампу, перемещать ее в 3D пространстве и видеть, как свет создает тени на плоскости так, как будто-то это вовсе не плоскость, а высокополигональная модель 🙂
Нормали в Блендер 2.83
Скачала Блендер 2.83. Стала его изучать. И оказалось, что нормали вытянуты в одну сторону. Это происходит даже если создаешь новый файл. Пробовала все, чтобы их вывернуть на место. Что делать? 
В стандартном интерфейсе Blender можно отображать три типа нормалей: нормали к вершинам, нормали к вершинам на грань и нормали к граням. Обычно розовым цветом отображаются нормали к вершинам на грань, но на представленной картинке это не соответствует, поскольку нормали выходят не из вершин. Поэтому по представленной картинке сложно судить о причинах происходящего, нужен файл с этим кубом.
Традиционно большинство проблем с нормалями в штатном режиме решается через пересчет нормалей.
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Правильное создание карты нормалей в Blender
Карта нормалей — это такая текстура, которая позволяет за счет игры света эмулировать дополнительные (не существующие изначально) детали на 3d модели. В данном случае мы будем переносить подробный вид модели со скульпта на низкополигональный меш, который сделали в прошлом посте. Разумеется, с решением встречающихся на этом пути проблем с нормалями, черными линиями и прочей непотребщиной.
Введение в карты нормалей
Гораздо проще понять о чем речь, посмотрев на вот эту картинку:

Тут изображен стрит-арт художника, который использует эмуляцию цвета тени для создания оптической иллюзии объема на плоской дороге. То есть, по факту деталей нет, там плоская дорога, но если цвета настроены правильным образом — человеческий глаз начинает видеть иное.
Карта нормалей делает то-же самое с текстурой низкополигональной модели, что позволяет отразить на ней ранее не заметные или не существующие детали. Такие как вены на руках, уточненные уголки губ или морщины и прочее, улучшить детализацию ушей, глаз, носа. Если вы не помните, то созданный в прошлом посте низкополигональный меш выглядит не самым лучшим образом.

Такой меш имеет высокую производительность за счет низкой детализации и подходит для мобильных игр, в которых очень важна малая детализация. Но он выглядит очень плохо. Карта нормалей же позволяет, сохранив такую низкую детализацию(3000 полигонов) и производительность, передать, тем не менее, все элементы оригинальной модели в точности. Так делают в большинстве современных игр, в том-же World of Warcraft, к примеру.
Подготовка среды в Blender
У вас изначально должен быть включен Cycles Renderer и задана хоть какая-то текстура для модели. Так-же должна быть сама модель + ее 3d скульпт или иной высокополигональный объект, с которого мы будем считывать нормали. Обе модели должны находиться в центре, с точным наложением друг на друга. У низкополигональной модели уже должна быть UV развертка.

Теперь создадим файл текстуры для нашей карты нормалей.
Делается это в UV/Image Editor’е, который я разместил слева вверху.

Чем больше размер карты нормалей, тем более качественно передаются детали и тем больше она потребляет видеопамяти. Вполне достаточно 1024 пикселей, но вы можете сделать и 4к текстуру, если хотите, все равно весить она будет очень мало.
Теперь надо в Node-Editor’е добавить нашу текстуру как нормаль используя шейдер NormalMap.

Добавьте примерно такую цепочку шейдеров:
Важно при этом задать пространство Tangent для карты нормалей и выбрать UV пространство из выпадающего списка. Далее стоит выбрать текстуру из выпадающего меню ту, которую мы создали выше.

И не забыть выставить тип данных на Non Color Data.

Создание карты нормалей
Теперь мы готовы срисовать карту нормалей с высокополигонального меша и автоматически применить ее на низкополигональный объект. В правом меню Blender’а найдите внизу вкладку Bake(Запекание, если я не ошибаюсь) и выберите там тип Normal.
Выглядеть по умолчанию это будет вот так:

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

А потом нажмете на кнопку Bake. Результат будет таким:

Тут вы видите черные полосы в тех местах, где два меша пересекаются и дополняют друг друга. К тому же сама карта нормалей выглядит как оранжево-зеленое непотребство, коим она быть не должна. Карта нормалей в обычном виде имеет сине-фиолетовые оттенки.
К счастью, решение этим проблемам было мной найдено посредством множественных проб и ошибок. Надо выставить для запекания настройку Cage с более-менее большим цифровым значением. Вот так:
Если теперь нажать на кнопку Bake все пойдет как надо.

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

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

Хотя отдельные мелкие косяки все-же остались. Связаны они с… да шут его знает с чем связаны, они просто есть. Вот например, пальцы ног:
А вот аналогичная проблема на руках.

Так-же она имеется в ноздрях носа.
К счастью стандартные инструменты Blender’а позволяют решить такую проблему.
Уточнение карты нормалей
Для уточнения карты нормалей мы будем использовать встроенный в Blender режим Texture Paint. Чтобы его включить щелкните по шейдеру карты нормалей, а потом в главном окне Blender’а перейдите в TexturePaint mode.

В итоге нас перебросит в режим рисования выбраной(NonrmalMap) текстуры. Рисовать мы, ясное дело, ничего не будем. А будем Использовать кисть Smear, то есть смешивания. Выбрать ее можно в списке кистей.

Дальше просто водим ей по артефактам. Вот так выглядит стопа после обработки.

Таким-же точно методом правим остальные проблемные места.
Скачать
Вот в общем-то и все секреты, которые я хотел вам поведать. Скачать файл проекта вы можете ниже. Файл проекта находится в папке Blends. Лицензия — Creative Commons.