Перейти к содержимому

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

  • автор:

Узел «Карта нормалей»¶

The Normal Map node generates a perturbed normal from an RGB normal map image. This is usually chained with an Image Texture node in the color input, to specify the normal map image. For tangent space normal maps, the UV coordinates for the image must match, and the image texture should be set to Non-Color mode to give correct results.

Входы¶

Сила Сила эффекта от карты нормалей. Цвет Цвета в цветовом пространстве RGB, кодирующие нормаль в указанном пространстве.

Свойства¶

Пространство Входные RGB-цвета могут быть в одном из трёх пространств: «Касательном», «Пространстве объекта» и «Пространстве мира». Карты нормалей в касательном пространстве наиболее распространены, поскольку они поддерживают преобразование объекта и деформацию полисетки. Карты нормалей в пространстве объекта продолжают оставаться привязанными к поверхности объекта после его трансформации, в то время как карты нормалей в пространстве мира – нет. UV-разметка Имя UV-разметки, из которой берутся касательные накладываемых нормалей. Когда узел соединён с узлом «Изображение-текстура», эта UV-разметка должна быть такой же, как и та, что используется для наложения текстуры.

Трудности и «глюки», возникающие у новичков в программе Blender, и как их преодолеть

Blender это замечательный бесплатный 3d пакет, который делает возможным и доступным осуществление гигантского количества проектов, и, как человек, прошедший путь от абсолютного новичка в 3d до преподавателя данной программы в учебном центре «Специалист» в Москве, я могу поделиться несколькими типами, которые помогут преодолеть несколько несложных, но каверзных моментов, которые хоть и очень просты, но далеко не очевидны, и могут заставить просидеть несколько часов в поиске решения проблемы.

Перевод программы и подсказок

Перевод программы и подсказок — Blender, как и почти все программы является англоязычной, но в настройках (preferences) мы можем сделать его интерфейс русскоязычным. Переводить его полностью на русский язык я бы не советовал, т.к. названия всех терминов и команд почти необходимо знать на английском языке для дальнейшего развития, и, так или иначе, много из них заимствовано великим и могучим русским языком и используется всеми и повсеместно (нормали, фейсы, вертексы и т.д.). А вот перевод подсказок действительно может упростить процесс входа в программу и снять много вопросов в процессе их появления. Окошко с подсказкой возникает при наведении курсора мыши на любой элемент blender.

  • Для того чтобы активировать подсказки, если они не работают, нужно зайти в меню Edit-Preferences-Interface. Поставить галочку напротив Tooltips.
  • Для активизации перевода подсказок в том же разделе открываем выпадающее меню Translation, ставим русский язык, и галочку напротив Affect Tooltips.

Забагивание области просмотра

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

  • Находится эта функция в меню View-Frame selected.

Clipping

Некст проблема это clipping — при попытке работать с объектом на близком расстоянии область обрезает часть нашего объекта, и мешает нам работать.

  • устраняется заходом в боковое меню нажатием кнопки N, и во вкладке view в выпадающем меню view, уменьшаем значение Clip Start (Например 0,001)

Нормали

Следующая проблема это нормали — будь то незнание того — что это? или незнание того — как их привести в правильное положение. Проблемы с нормалями возникают например при попытке запечь карты деформации, во время скульптинга, при попытке нажать Shade smooth и тд.

  • -Нормали это вектор перпендикулярный плоскости полигона, который указывает блендеру куда ему отражать свет. Направлен этот вектор только в одну сторону, то есть если нормаль вашего полигона развернута внутрь объекта, как часто случается в blender, то из за этого у вас будут проблемы на каком-то этапе работы.

  • Как мы можем видеть на данном изображении — все нормали объекта, кроме трех выделенных, повернуты наружу, а три выделенные — внутрь. При обычном режиме затенения Shade flat — этого не видно, но если я включу режим затенения shade smooth, то результат будет совсем иным.

  • Проверить направление нормалей своего объекта я могу перейдя в edit mode, и в выпадающем меню overlays поставить галочку напротив Face orientation . Тогда все нормали повернутые наружу будут отображаться синим цветом, а направленные внутрь — красным. В этом же меню Overlays я могу включить отображение нормалей как векторов.

  • Развернуть нормали нам помогут функции Mesh-Normals-Flip (или recalculate outside)
  • Flip — развернет выделенные полигоны.
  • Также мы можем выделить все полигоны объекта (шорткат А) и нажать Recalculate outside чтобы blender автоматически пересчитал все наши полигоны наружу.

  • За направлением нормалей лучше следить.

Двойные вертексы

Двойные вертексы — часто в процессе моделирования и оперирования командой Extrude могут создаться вертексы, которые стоят друг в друге и будут портить нашу топологию, это может нам аукнуться на этапах UV развертки, создания рига и тд. Чтобы избежать этого, на промежуточных этапах работы можно выделять всю свою модель в режиме работы с вершинами и нажимать Mesh-clean up-merge by distance. Двойные вертексы будут объединяться.

Карты нормалей

Карты нормалей запеченные в других программах (substance painter, Zbrush) дают странный результат в Blender .

  • Проблема в том что карты нормалей, в вышеперечисленных, и не только, программах, запекаются c использованием DirectX, а blender работает с OpenGL. Если говорить простым языком то нам нужно развернуть зеленый канал на карте нормалей. Делается это следующим образом:

Надеюсь, что данный пост поможет людям, осваивающим блендер, проскочить несколько часов поиска решения проблем!

Правильное создание карты нормалей в 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.

Модель с картой нормалей

Скачано: 0, размер: 49.5 MB, дата: 29.Июл.2018

Комментарии (4):

seoonly.ru • 29.07.2018 16:04

шикарно)) но из аудитории мало кто оценит

aftamat4ik • 29.07.2018 17:34

пишется не для вебмастеров, собственно. Я ожидаю рост популярности Blender’а в ближайшую осень, что приведет к росту запросов на эту тему, а потом приведет сюда и людей из поисковика.

aminhotep • 30.07.2018 08:14

Как обстоят дела с копипаст сайтами под адсенс?

aftamat4ik • 30.07.2018 08:14

так себе, в последнее время доход просел и некоторые были забанены. Новые плохо заходят. Надо в сдл перекатываться.

Войдите или зарегистрируйтесь чтобы оставить комментарий

Работа с картой нормалей

Здравствуйте, как добавить карту нормалей к текстуре в редакторе нодов?

И ещё вопрос нужно ли создавать карту нормалей или она создаётся в момент экспортирования модели?

02 августа 2016 20:27
сообщений: 636

Нужно построить нодовое дерево таким образом в самом простом случае.

Карты нормалей нужно создавать самому.
Определённый цвет в текстуре карты нормали задаёт направление.

Не стой, где попало… Попадет еще раз.
http://naviris.ru/
03 августа 2016 10:25
сообщений: 1002

Еще для того что бы карта номралей правильно отображалась во вьювере Blender’а мы используем такой сетап:

На материале сверху наложена так же карта нормалей, которая и позволяет видеть в блендере нормальное её наложение, а при экспорте в сокет нормали подаётся нижняя карта нормалей.

Blend4Web и всё такое. Тридешу тридэ, моделю модели.
03 августа 2016 12:53
сообщений: 293

Еще для того что бы карта номралей правильно отображалась во вьювере Blender’а мы используем такой сетап

В blender 2.78 такое вроде можно не делать?

03 августа 2016 14:06
сообщений: 1002

В blender 2.78 такое вроде можно не делать?

Да, как раз благодаря патчу одного из наших программистов в 2.78 этого больше не нужно делать.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
04 августа 2016 16:06
сообщений: 104

А как создать карту нормалей ?

Вот к примеру у меня есть текстура ткани.

Как сделать для неё карту нормалей, чтобы текстура ткани выглядела объёмной?

04 августа 2016 16:11
сообщений: 104

А как создать карту нормалей ?

Наверно, с этого и стоило начать

04 августа 2016 17:38
сообщений: 1002

А как создать карту нормалей ?

В интернете дикое множество информации на эту тему, достаточно ввести «Запекание карты номралей» или «Normal Map baking»

Как сделать для неё карту нормалей, чтобы текстура ткани выглядела объёмной?

Эту текстуру можно в блендере натянуть на плейн как Бамп карту и перезапечь как карту нормалей на выходе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *