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

от admin

Почему карта нормалей накладывается криво в 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)

normal1

Normal Map — это текстура, контролирующая направление отражения света. Используется данная технология для создания высокодетализированных низкополигональных моделей. Необходима для визуализации относительно сложных объектов в компьютерных играх без потери качества.

Немного теории

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

Вы можете создать модель состоящую из миллиона полигонов, а затем создать такую же (визуально и под определенным углом), но состоящую всего из двух полигонов.

Создание Normal Maps в Blender

Возьмите любую высокодетализированую поверхность. Для примера, я буду использовать плоскость, на которой расположено несколько простых геометрических объектов. Как видите, она состоит из 8234 треугольников.
normal3
Теперь создайте плоскость таких же размеров и расположите ее над высокодетализированым объектом:
normal4
Разделите окно 3D вида на две части и в левой выберите UV/Image Editor. Создайте в нем новое изображение с настройками по умолчанию (я только имя указал).
normal5
Выделите Вашу плоскость, перейдите в режим редактирования и создайте для нее UV-развертку:
normal6
Выделите Вашу высокополигональную модель, а затем удерживая Shift низкополигональную. На вкладке Render в самом низу у Вас находится меню Bake. Выставите для него следующие настройки и нажмите кнопку Bake.
normal7
По завершению процесса запекания, у Вас в окне UV/Image Editor должна появится текстура карты нормалей. В моем случае она выглядит следующим образом:
normal8
Вот собственно и все!

Чтобы увидеть результат работы данной техники, на панели свойств включите режим отображения GLSL и включите режим отображения текстур:
normal9
Теперь создайте для плоскости новый материал с настройками по умолчанию, затем перейдите на вкладку текстур и выставите следующие настройки:
normal10
normal11
normal12
Можете выбрать лампу, перемещать ее в 3D пространстве и видеть, как свет создает тени на плоскости так, как будто-то это вовсе не плоскость, а высокополигональная модель 🙂

Нормали в Блендер 2.83

Скачала Блендер 2.83. Стала его изучать. И оказалось, что нормали вытянуты в одну сторону. Это происходит даже если создаешь новый файл. Пробовала все, чтобы их вывернуть на место. Что делать? введите сюда описание изображения

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

Традиционно большинство проблем с нормалями в штатном режиме решается через пересчет нормалей.

Nikolay sungreen's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Правильное создание карты нормалей в Blender

Карта нормалей — это такая текстура, которая позволяет за счет игры света эмулировать дополнительные (не существующие изначально) детали на 3d модели. В данном случае мы будем переносить подробный вид модели со скульпта на низкополигональный меш, который сделали в прошлом посте. Разумеется, с решением встречающихся на этом пути проблем с нормалями, черными линиями и прочей непотребщиной.

Читать:
Как подключить монитор через usb type c

Введение в карты нормалей

Гораздо проще понять о чем речь, посмотрев на вот эту картинку:

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

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

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

Related Posts