Тангенціальні карти нормалей для blender

Карти нормалей стали популярними останні кілька років. Надавши значне поліпшення графіки в індустрії не тільки ігровий, але також традиційної CG і кіноіндустрії, хоча це і менш очевидно. З'явилися вже нові додатки, які мають функціонал скульптурного моделювання з неймовірною деталізацією моделей (такі як Zbrush, Mudbox і наш улюблений Blender з його знаменитим Sculpt Mode).

Однак такий спосіб поліпшення поверхні моделі, як використання карт нормалей висвітлюється, так чи інакше, не надто широко. Blender має функцію запікання карт нормалей з простору камери з високополігональні моделей і нанесення цих карт на нізкополігональних. (Спасибі UV - текстуруванню і Мультіразрешающім поверхонь Multi-resolution meshes.) Однак одна з останніх фішок, яка вивела б Blender на рівень найвищих стандартів все ще не повністю реалізована. Ця фішка - Тангенціальні карти нормалей. Якщо Blender тепер і підтримує цей тип карт, то запікати їх як і раніше не здатний.

Карти нормалей (Normal Maps) проти карт нерівностей (Bump Maps)

Різні інструменти для різних завдань. Не можна сказати, що один кращий за інший. Іноді вони навіть можуть бути об'єднані або змішані для досягнення кращих результатів. Обидва вони засновані на нормаль об'єкта і це перша річ до якої ми звернемося.

Що таке нормалі?

Нормаль - вектор, перпендикулярний поверхні в заданій точці цієї поверхні.

Тангенціальні карти нормалей для blender

Карти нерівностей Bump Maps

Карти нерівностей є нічим кольорові зображення (в градаціях сірого), які зберігають інформацію про величину зсуву пікселя зображення при рендеринга уздовж нормалі в даній точці. При цьому градації кольору карти задають масштаб зміщення. Так ділянки поверхні, соотв. на карті середньо-сірому (50% сірого кольору) не отримують зміщення і як би залишаються лежать на базовій поверхні, відповідно максимально чорні ділянки отримують максимальний зсув уздовж нормалі над поверхнею, а світлі - під поверхню. Таким чином карти нерівності використовуються для завдання рельєфності 3D-поверхні на основі 2D-зображення, моделюючи віртуальні нерівності і соотв. гру світлотіні.

Тангенціальні карти нормалей для blender
Праворуч - чорно-біле зображення карти бампа, зліва - ефект застосування

Для завдання ефекту нерівності потрібно присвоїти матеріалу сіру карту бампа (це може бути також процедурна текстура, або кольорова, де інформація про нерівності буде братися на підставі каналу яскравості) в порожній текстурний слот, а потім активувати кнопку Nor в закладці березня Те на панелі матеріалу ( F5). Слайдер Nor на тій же панелі служить для управління величиною ефекту.

Кнопка Nor має три положення:

  • викл - даний ефект не прораховується при рендеринге;
  • вкл (підсвічено білим) - ефект включений для прорахунку при рендеринге;
  • вкл (підсвічено жовтим) - ефект включений для прорахунку, але напрямок зміщення інвертується (простіше кажучи на

рендер опуклості стають западинами)

Тангенціальні карти нормалей для blender
Панель березня То з розташованими на ній кнопкою Nor і слайдером.


'А як щодо карт зсуву (Displacement Maps)?

За принципом дії Карти зміщення дуже схожі на карти бампа. Також використовуючи в основі чорно-білі карти, вони задають зсув уздовж нормалі, але прораховують реальне зміщення полігонів, як ніби це було змодельовано. Це хороший спосіб для фінальних, добре поділені мешів. Ви можете помучити модифікатор Displace, щоб зрозуміти його краще, але це - поза огляду даної статті. Адже карти бампи і карти нормалей - фактично обманні прийоми для поліпшення простих поверхонь, в той час як карти зміщення вимагають дуже докладно змодельованих поверхонь, щоб бути ефективними взагалі.

Тангенціальні карти нормалей для blender

карти нормалей

У разі карт нормалей всі вектори нормалей нормалізовані (наприклад вони мають однакову довжину, рівну 1 одиниці) а використовуваний колір зображення, говорить про те, як зорієнтована нормаль поверхні в даному пікселі зображення. Фактично карта нормалі задає геометрію поверхні віртуальним обертанням напрямку нормалі в даному пікселі. На відміну від карт нерівностей ефект карт нормалей добре видно навіть на НЕ дуже-або взагалі не блискучих матеріалах. Щоб отримати ефект карти нормалей потрібно присвоїти матеріалу кольорову текстуру особливого типу, (оскільки потрібен спеціальний інструментарій для генерації Карт нормаль) в порожній текстурний слот, також як у карт нерівностей активувати кнопку Nor в закладці березня Те на панелі матеріалу (F5), але крім того - активувати кнопку Normal Map в закладці Map Image на панелі текстур (F6).

Тангенціальні карти нормалей для blender
Закладка Map Image панелі текстур з активованою опцією Normal Map.

Запікання Карт Нормаль з простору Камери в блендері

З версії 2.43 Blender має таку фічу - запікання карт нормалей з простору камери в текстуру об'єкту. Це - тільки один крок до правильного використання карт нормалей в Blender, тому, що простір камери має ряд обмежень: при запіканні фіксується розмір / положення / обертання об'єкта, щодо обертання / положення / діафрагми камери. Тому варто, змінити параметри камери або анімувати її - нормалі отримають невірне значення.

Існують інші типи карт нормалей. Як бути з цим?

Звичайно, якби існувала підтримка інших типів карт нормалей в Blender, то це зробило б його набагато більш продуктивним і зручним. Наприклад з картами нормалей простору об'єкта ви могли б анімувати тільки не деформуються об'єкти, а з тангенціальними картами нормалей - робити анімацію деформуються, включаючи: арматуру, параметри, симуляцію м'яких матеріалів, решітки і т.д. Однак поки Блендер не підтримує такий тип запікання, вам доведеться користуватися зовнішніми програмами для створення чогось подібного.

Звичайно, запікання нормалей заважав і створення карти для використання з тим же самим Мешем безглуздо. Набагато корисніше використовувати їх з мультіразрешающімі поверхнями. Наприклад, починаємо з нізкополігональних моделі. Робимо UV-розгортку, як згадувалося вище. В панелі редагування (F9) знаходимо панель мультіразрешенія Multires, Натискаємо Add Multires, Додаємо рівень - Add Level і починаємо скульптури нашу модель. Коли модель отскульптурена з достатнім рівнем деталей встановлюємо максимальний рівень рендеру в закладці Rendering тієї ж панелі і виконуємо запікання карти нормалей, як описано вище.

Тангенціальні карти нормалей для blender
Приклад карти нормалей згенерованої в Blender опцією Bake по моделі з високою роздільною здатністю.

Тангенціальні карти нормалей для blender
Приклад підсумкового рендеру. Зліва направо: нізкополігональних проста модель куба; Високополігональні модель куба зі змодельованими деталями; Нізкополігональних модель куба з застосованою картою нормалей від високополігональні моделі.

На попередньої картинки карта нормалей згенерувала для центрального куба нанесена на куб, який трохи правіше. На перший погляд на статичній картинці спотворень не видно, але при анімації невірні світлотіні відразу дадуть про себе знати.

Анімація - хороша ілюстрація того, що карти нормалей, побудовані в просторі камери непридатні для об'єктів зміщених або повернених щодо місця розташування камери, так як при генерації карти в ній враховується положення камери. На жаль карти нормалей простору камери - єдиний тип карт нормалей що генерується на даний момент Blender.

Карти нормалей простору об'єкта більш підійшли б для анімованих твердотільних об'єктів. І, нарешті тільки Тангенціальні карти нормалей підходять для будь-яких, в тому числі анімованих деформуються об'єктів.

Остання частина статті - про те як генерувати такі карти за допомогою зовнішніх програм і як користуватися ними в Blender.

Використання програми DnormGen для отримання тангенціального карт нормалей


Викачуємо потрібний дистрибутив. Для Unix і MacOs будуть потрібні доп. бібліотеки (libfox1.4, libfox1.4-dev, libpng3, libtiff4, libxmu-dev - кілька прикладів), і, можливо залежності libtiff.so.3 зв'язати з libtiff.so.4 (sudo ln -s libtiff.so.4 libtiff.so.3)

Витягуємо архів і бачимо виконавчий файл-програму dnormgen і файл скрипта dragengine_dim_export.py. Скрипт поміщаємо в директорію scripts / Blender. Багато корисної інформації можна почерпнути з доданого файлу README.

Скрипт буде працювати з двома моделями. Нізкополігональних, яка повинна бути названа * .low (в поле ОВ: об'єкта) і високополігональні - .hi (* - оригінальне ім'я об'єкта). Ці імена - обов'язкові для роботи скрипта і повинні бути задані в панелі редагування (F9) в закладці Link and Materials. Скрипт буде експортувати дві моделі в формат .dim, специфічний для генератора і використовувати для отримання карт нормалей.

1-й крок: в Blender

У Blender необхідно до запуску скрипта зробити ряд дій - це перейменувати об'єкти, підрозділ високополігональні поверхні і експорт двох об'єктів.

Суть дій така:

Це дії, які необхідно виконати в Blender. Тепер у нас є .dim-файл з яким можна працювати вже в програмі DnormGen.

2-й крок: В DnormGen

Запускаємо DnormGen і бачимо два різних вікна:

  1. DE Normal Map Generator: Це вікно дозволяє переглядати 3D моделі і конфігурувати необхідні типи карт (Карта зміщення, карта нормалей, тангенціальна карт нормалей, об'єктна карта нормалей і т. Д.)
  2. Texture preview. вікно, в якому відобразяться згенеровані карти.


Отже в перше вікно завантажуємо наш експортований скриптом .dim-файл. (File >> Open) У вікні з'явиться нізкополігональних модель. Ви можете її переглядати, переміщати, обертати мишею, або наближати-видаляти, затиснувши Shift.

Наступний крок - меню Texture maps. Спочатку ставимо вихідний розмір зображення в Set Texture Dimension (за замовчуванням 256х256).

Тангенціальні карти нормалей для blender


Далі продовжуємо в меню Texture maps вибираємо GenerateNormal / Displacement Maps і звернемо увагу на що з'являється вікно.

Тангенціальні карти нормалей для blender

Спочатку ставимо прапорець на опції Smooth Hi-Res Mesh Normals якщо об'єкт необхідно згладити.

Зауважимо, що карта грунтується на координатах UV-розгортки нізкополігональних об'єкта.

Тепер в меню Texture maps вибираємо Save Normal Map і задаємо ім'я і шлях. За замовчуванням буде normal.tga.

Тангенціальні карти нормалей для blender

У мене проблеми, допоможіть!

Спотворення на кордонах карти нормалей? Викличте Set Hi-Res Mesh Options і трохи збільште значення Vertex Offset. Використання карти трохи більшого розміру теж може допомогти.
Рельєфність, відтворена картою нормалей недостатньо сильна? В меню Texture maps викличте Apply Detail Normal Map і поекспериментуйте зі значенням Strength (сила). Додайте величину сили (за замовчуванням 50) але поступово, інакше результат може бути непередбачуваний.

Я десь читав, що зелений канал моєї карти нормалей повинен бути інвертований. Це правда?

Крок 3-й. Знову в Blender

Вибираємо нізкополігональних об'єкт, для якого була ваполнена UV-розгортка. Переходимо в режим UV Face Select. У UV / Image Editor видаляємо будь-які проміжні додані карти. Тепер додаємо нашу, згенерувала в DnormGen карту нормалей normal.tga (Image >> Open.). Тепер переходимо на панель матеріалів (F5) і в закладці Shading активувати кнопку NMap TS.


Далі в закладці Map Input відзначити тип текстурирования -UV, в закладці Map To активувати канал Nor. Ну і в панелі текстур (F6), нарешті, активувати кнопку Normal Map і не забути призначити нашу карту в порожній текстурний слот.

Зберігаємо проект. Все, ми отримали нізкополігональную модель з тангенціальним картою нормалей

Схожі статті