Что такое нормали в blender

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

Источник

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

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

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

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

Для активизации перевода подсказок в том же разделе открываем выпадающее меню Translation, ставим русский язык, и галочку напротив Affect Tooltips.

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

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

Clipping

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

Нормали

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

    Развернуть нормали нам помогут функции Mesh-Normals-Flip (или recalculate outside)

    Также мы можем выделить все полигоны объекта (шорткат А) и нажать Recalculate outside чтобы blender автоматически пересчитал все наши полигоны наружу.

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

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

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

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

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

Источник

Можете просто и доходчиво объяснить, что такое UV, карты нормалей, запекание?

Пожалуйста, максимально развёрнуто и понятно))))))

Простой 5 комментариев

p. s. Я отблагодарю вас, когда стану миллиардером.

Тебе надо разобраться с основными понятиями комп. графики. (модель\меш, полигон, вертекс, edge, топология, ретопология, нормали, RGBA, каналы, маски, альфа и др)
А вот когда с ними разберешься, можно посмотреть в сторону PBR (Physically-Based Rendering)(скорее всего контент «под него» будешь пилить)

«UV-развёртку можно «разукрасить», а затем наложить на модель.»
Всё не так, нужно разукрасить не UV-развёртку, а подготовить набор текстурных карт для наложения на модель.
Никому ведь модель только с одной диффузной текстурой не нужна

UV-map это проекция всех поверхностей 3d модели на плоскость (ведь сами текстуры то плоские)
Вспомни бумажные модели (например куба)
Вот такая развертка нужна чтобы построить куб из бумаги

А чтобы получить UV-развёртку куба, нужно не собрать куб, а разрезать и развернуть.

Normal Map Baking
Вот есть у тебя модель ботинка (полигонов очень много) и тебе нужно перенести детализацию подошвы с этой самой модели ботинка, на более простую модель ботинка. (кто у персонажа подошвы ботинок разглядывает? Там ведь много полигонов не нужно)
Ты запекаешь карту нормалей (Normal Map) и на ней создается изображение подошвы. (Информация перешла с высокополигональной модели на карту нормалей) затем ты накладываешь её на простую модель ботинка и вуаля!
На почти плоской подошве появился псевдо рельеф
Освещение в движке реагирует на эту самую Normal Map и создает видимость рельефа, для наблюдателя. Смотришь и кажется что подошва богата на детали!
И так поступают со всей моделью.

«В одних источниках эти названия карт на английском, в других на русском» (там всё намного веселей!)
Введи в поисковик «Texture map terminology confusion»

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

В зависимости от модели, от игрового движка или системы рендеринга тебе будут нужны разные «наборы» текстурных карт.
В движках есть редактор материалов и он может намекнуть какие текстурки он «кушает»

(именно в этом редакторе там где написано Bump map пихают Normal map)

Текстурных карт очень много и про остальные нет смысла писать. (Про PBR тем более)

p.s
Помни о правиле 80\20 (80% практика, 20% теория) если наоборот значит всё будет плохо. Утонешь в теории (ты не знаешь как к ней правильно подступиться)

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

Источник

Normal’ное волшебство

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

Как вы уже поняли, секрет «высокополигональности» третьего объекта в правильно повернутых нормалях вершин, за счет чего скосы на ребрах выглядят более пологими. А вот для среднего объекта я уже добавил дополнительные ребра «жесткости». Чтобы было понятно, о чем идет речь, посмотрите на рисунок ниже.

рис. 2 Структура примитивов

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

К примеру, мой скриншот с тремя кубами. Поставленная простая задача — создать фаски на гранях объекта, что я и сделал. Вот только при включении сглаживания всё расплывалось. Для получения более четких переходов пришлось добавить дополнительные элементы. В итоге начальные 24 вершины превратились в 96. Вроде пустяк, но это лишь примитивный куб.

Ручное редактирование нормалей позволило не увеличивать количество элементов и в тоже самое время получить весьма достойный результат. Причем его можно было бы значительно улучшить. Об этом и сказ далее.

рис. 3 Просто нормали

Одна вершина — одна нормаль. Вопрос только в одном, как их редактировать? Стандартные способы Blender здесь не работают. Хотя есть, к примеру, специальный модификатор Normal Edit. Но он хорош только для массового редактирования и не предоставляет доступа к отдельным элементам (это можно сделать, но уж больно извращенным способом).

В последнее время я сконцентрировался на браузерных проектах и, соответственно, на Blend4Web. В его состав входит уникальный редактор нормалей с очень роскошным функционалом. Разумеется, им можно пользоваться не только для подготовки моделей для WebGL. Обработанные с его помощью объекты прекрасно рендерятся или экспортируются в FBX для последующего использования в игровых движках. Так что, это достойный экземпляр для изучения и использования в работе.

рис. 4 Редактор нормалей от Blend4Web

Вся магия заключена в панели с названием Blend4Web. Она хранит дополнительный инструментарий, поставляемый вместе с движком, но кое-что можно использовать и не для реал-тайм. Разумеется, перед этим нужно установить бесплатный SDKBlend4Web. Как это сделать — читайте на сайте разработчика.

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

Работа с редактором начинается с его активации (кнопка Activate). Основное действие происходит в режиме редактирования структуры объекта. На рисунке 4 как раз показан куб и его нормали, распространяющихся в стандартных направлениях, т.е. так, как расположил их сам Blender. В принципе, показ нормалей можно включить стандартным для Blenderспособом (панель Mesh Display). Но удобнее воспользоваться специальными опциями в панели Normal Editor. Кнопка Show Normals включает показ, а Size отвечает за длину отображения. Собственно, эти опции дублируют стандартные.

Итак, при включении функции Smooth скосы на ребрах куба становятся незаметными (см. рис. 1, левый крайний куб). Чтобы светотени создали нужный нам эффект, необходимо развернуть нормали вершин плоскостей куба строго перпендикулярно их основе, т.е. они должны «смотреть» параллельно нормали самой плоскости.

Это лучше всего сделать в автоматическом режиме. Выделяете каждую плоскость, нажимаете кнопку Face и вуаля!

рис. 5 а) оригинальный куб, б) куб с измененными нормалями, в) рендер варианта Б

Normal Editor позволяет сделать больше. Например, мне нужны четкие выпуклости скосов. Стандартно это делается добавлением новых ребер «жесткости». Ведь все вершины куба уже смотрят в нужных направлениях. Банально не хватает вершин. Можно сделать «финт ушами» — каждую нормаль подразделить ещё на несколько. Я не особо понимаю, как это происходит технически, но важно другое — буквально каждая вершина объекта может «смотреть» сразу в нескольких направлениях.

Ручное редактирование нормалей осуществляется несколькими способами:

Есть еще две полезные функции для редактирования: кнопка Restore (восстанавливает всё по умолчанию) и Copy/Paste для быстрого копирования координат с одной нормали на другую (увы, в режиме Split копирование не работает).

Вот и результат. Смотрите, что у меня вышло с такими «размноженными» нормалями. Напоминаю, что количество вершин не изменилось, всё те же 24 вертекса, всё тот же стандартный куб. А выглядит, как будто я минимум утроил количество ребер.

Конечно, работать с каждой нормалью — это ещё то удовольствие, несмотря на мощные инструменты редактирования в Normal Editor. Впрочем, для ленивых есть несколько автоматических решений. С одним из них (Face) я уже вас познакомил, но на панели редактора можно найти ещё две кнопки Tree и Foliage.

Названия очень многообещающие, но не думайте, что при нажатии на них вы получите идеальные деревья (tree) и листву (foliage)! Все, проще, они позволяют массово распространять нормали в определенных направлениях:

Вот как-то так. Спасибо разрабам Blend4Web за столь интересный инструмент!

Источник

Редактор нормалей¶

Пример работы редактора нормалей:

Основные особенности редактора нормалей:¶

для хранилища массива данных с направлениями вертексных нормалей используется “родной” блок данных Blender (появился в версии 2.74);

редактирование нормалей и отображение затенения теперь происходит в режиме редактирования ( Edit Mode );

все изменения записываются сразу же автоматически;

редактированные нормали экспортируются автоматически.

Интерфейс¶

Activate¶

Кнопка Activate включает режим редактирования вертекных нормалей.

Show Normals¶

Для удобства в панель продублирована оригинальная кнопка Blender, включающая отображение маркеров вертексных нормалей во Viewport’е, а так же настройка их длины.

Rotate¶

При помощи этого инструментария можно вращать нормаль каждого вертекса индивидуально. Функция Rotate также доступна по горячим клавишам Shift+Ctrl+R и позволяет вращать вертексные нормали в привычном для пользователя Blender режиме.

Выделив один или несколько вертексов, которые хотите изменить, вращайте их, используя визуальную сферу на панели редактора вертексных нормалей Blend4Web, или задайте направление каждой координате в цифровом значении.

Scale¶

Обратите внимание, что видимая длинна нормали определяется параметром Size и не меняется при масштабировании.

Режимы Absolute и Offset¶

Режим Absolute¶

Режим Offset¶

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

Split Normals¶

Режим Split Normals позволяет редактировать вертексные нормали индивидуально для каждой грани ( Face в Blender), образующей редактируемую вершину ( Vertex в Blender). Переключатель вертексных индексов позволяет перемещаться между нормалями разделенного вертекса.

Average¶

Restore¶

Кнопка Restore восстанавливает исходное направление нормалей выделенных вертексов.

3D Cursor, Axis и Face¶

Кнопка 3D Cursor ориентирует нормали выбранных вершин по направлению к 3D-курсору (если активирован параметр Towards на панели Vertex Normal Cursor ) или в противоположную сторону. Кнопка Axis направляет нормали вдоль одной из осей координат (ось задаётся на той же панели Vertex Normal Cursor ). Кнопка Face ориентирует нормали всех вершин выбранной грани параллельно нормали этой грани.

Использовать функцию Axis очень просто: достаточно выбрать вершины и нажать кнопку, после чего функция направит нормали этих вершин вдоль оси координат, выбранной на панели Vertex Normal Cursor (по умолчанию выбрана ось Z) или в противоположном направлении (если отключить опцию Towards на той же панели).

Copy/Paste¶

Копирует направление нормали с одного вертекса на другой.

Copy From Mesh¶

В режиме Matched Vertices копируются направления нормалей с вертекса одной модели на вертекс другой, если у них одинаковые координаты; прочие вертексы игнорируются. В режиме Nearest Vertices копируются нормали с ближайших вертексов другой модели.

Работа с этой функцией производится в объектном режиме. Первым нужно выделить объект, с которого будет происходить копирование, далее объект, на который будет происходить копирование. Необходимо также выделить вертексы целевого объекта, на которые необходимо произвести перенос направления нормалей.

© Copyright 2014-2017, Триумф. Обновлено: 2019-04-16.

Источник

Читайте также:  winappstore что это за программа и нужна ли она
Информ портал о технике и не только