Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення

Частина 1. Дана частина статті присвячена створенню карт нормалей з дифузійної текстури (Albedo) або карти висот нативними засобами Unity3D без використання сторонніх додатків, сервісів і плагінів.

Багато починаючі ігроробів замислюються, здогадуються або вже знають, як змусити виглядати свої 3D моделі (ігрові об'єкти) на AAA рівні, не підвищуючи при цьому кількість використовуваних полігонів, а, по суті, трикутників (Тріс). Одним з таких способів є використання якісних текстур для візуалізації 3D моделей і додаткових карт: нормалей, зміщення, затінення, висот, відображення. Звідки їх взяти, якщо у розробника є лише текстура, без всіх інших карт?

Частина таких карт можна створити в Unity3D, наданими нативними засобами або реалізованими за допомогою скриптів, що розміщуються в папці EditorUnity3D.

Говорячи про нативних засобах надаються Unity3D, варто сказати про можливість в Unity3D перетворити звичайну текстуру в карту нормалей через Установки / Налаштування Імпорту в вікні ІнспектораUnity 3D.

Для даної статті я взяв одну з наявних у мене в колекції текстур, сфотографований похмурим зимовим днем, обробив її в GIMP Ті, щоб з неї вийшла безшовна текстура розміром 1024 на 1024 пікселів.

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показана безшовна текстура тротуарної плитки.

Виберіть імпортовану текстуру Лівою кнопкою миші у вікні Ассет, натисніть клавіші Ctrl + D. щоб створити копію вибраного об'єкту, в даному випадку - карти текстур, яку ми і перетворивши в карту нормалей. Виберіть Лівою кнопкою миші створену копію текстури і подивіться в меню Інспектора, в якому виберіть у спадному списку типу текстури (Texture Type). Тепер замість "Alpha from GrayScale" з'явився CheckBox "Create fromGrayscale". Виберіть його, щоб створити карту нормалей через проміжне перетворення зображення в монохромне, з якого і буде створено карту нормалей. Проміжний процес перетворення в монохромне зображення, яке не показано користувачеві, схоже з перетворенням зображення в карту висот.

Ви також можете вибрати параметр "Smooth" режиму фільтрації "Filtering", який дозволяє прибрати шум на створюваної карті нормалей, тим самим згладивши її.

Параметр "Bumpiness" визначає різкість результуючої карти нормалей. Даний параметр пов'язаний з коефіцієнтом впливу ( "опуклості") карти нормалей в меню настройки параметрів матеріалів, про який буде сказано трохи нижче.

Залишилося лише застосувати настройки для нової карти нормалей, натиснувши кнопку "Apply".

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показані настройки перетворення текстури в карту нормалей (підійде і для перетворення в карту нормалей і карти висот, і навіть карти нормалей :)).

Одним з параметрів, що настроюються карти нормалей є параметр "опуклості" карти нормалей (праворуч від столу для зображення карти нормалей).

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показаний процес призначення створеного зображення карти нормалей у відповідний слот в меню настройки параметрів матеріалу. Також виділено коефіцієнт впливу карти нормалей.

Зліва на малюнку показана створена площину з призначеної їй тільки дифузійної текстурою без карти нормалей. Праворуч - матеріалу об'єкта призначена дифузна карта і створена з цієї ж текстури карта нормалей.

До речі, якщо ви захочете зберегти на диску створену описаним чином карту нормалей шляхом перетягування його з вікна Ассет проекту Unity3D в папку провідника Windows, то у вас нічого не вийде, оскільки в Провіднику ви побачите всю ту ж свою карту висот. В папці проекту вона також зберігається у вигляді карти висот. Для чого це зроблено? Вважаю, однією з причин є можливість завжди повернутися до оригінальної текстурі.

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
Малюнок демонструє факт того, що Unity3D не змінює текстуру в налаштуваннях імпорту, а лише застосовує до неї свої фільтри.

Якщо ви хочете отримати більш гнучкі налаштування для створення карти нормалей з текстури і карти висот, а також мати можливість створити карту зміщення (displacementmap), карту затінення (ambientocclusionmap) і карту відображень (specularmap), то вам варто звернути увагу на онлайн інструмент Normalmap Online . який дозволяє змінювати параметри створюваних карт, а також вибирати метод створення карти нормалей: з використанням диференціального оператора Собеля (Sobel) або оператора Щарри (Scharr). Останній, в честь якого і названий оператор / фільтр, поліпшив повну обертальну симетрію, яку не брав до уваги Собель. Більш докладно про них ви можете дізнатися в присвяченій цій статті "Оператор Собеля" в Вікіпедії.

Карта висот - це, звичайно, добре, але що робити, якщо її немає? Створити її з наявного зображення, або використовувати це зображення. Які нюанси варто враховувати при використанні зображення замість карти висот, можна дізнатися, якщо знати, що таке, ця сама карта висот, і для чого вона потрібна. Карта висот є растрове монохромне зображення, в якому зберігаються значення висоти у вигляді світлих і темних областей, де, чим світліше точка, тим вище вона знаходиться відносно нульового рівня:

- для бамп маппінга (bumpmapping), по суті, представляє собою рельєфне текстурування, карта висот використовується при обчисленні падіння і відбиття світла (наприклад, використовується в моделі освітлення / відображення Фонга) для візуалізації тіней з метою зробити 3D модель більш реалістичною за рахунок імітації опуклостей , западин, подряпин на поверхні моделі без зміни геометрії заважав цього самого 3D об'єкта. До речі, карта нормалей є одним з найбільш поширених видів bump mapping'а;

- для displacement mapping 'а, в основі якого лежать карти зміщення, при використанні яких меш модифікується відповідно до світлим і темним областям текстури / зображення шляхом зміни позиції вершин 3D моделі (зокрема, площини).

Одним з найбільш приголомшливих застосувань карти висот для дісплейсмент маппінга я бачив тут: Sculpting with UVs and displacements.

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показаний приклад використання карти зсувів.

Однак найбільше поширення карта висот отримала для створення 3D моделей ландшафтів і океанів шляхом перетворення карти висот в 3D меш за рахунок вибудовування вершин 3D ландшафту в залежності від кольору відповідних областей на карті висот по одній з осей. У Unity3D такий віссю є вісь Y. в Blender - вісь Z.

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показаний приклад генерування / генерації ландшафту, в даному випадку - поверхні океану, з карти висот із застосуванням карти нормалей в Unity3D.

На зображеному малюнку показаний ландшафт (террейнов, від англ. Terrain - ландшафт, рельєф місцевості), що представляє собою меш, згенерований з карти висот, створеної ще в одному он-лайн генераторі, але на цей раз - генераторі текстур Texture Generator Online. який, до речі, створений тим же розробником, що і Normalmap Online.

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

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку * показаний матеріал, до якого застосована карта висот і створені з неї текстура і карта нормалей.

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

Texture Generator Online дозволяє генерувати різні текстури, включаючи текстури хмар, цегли, плитки, шахової дошки, дерева, шуму Перлина, ландшафту і тканини.

Урок по створенню карти нормалей (normal map), карти зміщення (displacement map), карти затінення
На малюнку показано онлайн додаток для генерування текстур Texture Generator Online. В даному конкретному випадку була згенерована карта / текстура ландшафту.

Post Views: 5 812