Покращення текстур за допомогою карт нормалей (Normal maps)

12 серпня 2016
Rad

В останній час все частіше і частіше бачу конверти з сучасних ігор, якість конвертів буває різних рівнів – і хороші, і погані. Але незалежно від якості конверта в цілому, в більшості з них є синдром "плоских текстур", про що я, звичайно, і скаржуся в коментарях у файловому архіві. Можливо, конвертери не знають, навіщо ж потрібні ці дивні фіолетові текстури, або ж просто не можуть їх застосувати. І я в цій статті навчусь застосовувати їх при конвертації.

Теорія

Але для початку трохи теорії з Вікіпедії:

Normal mapping — техніка, що дозволяє змінювати нормаль відображуваного пікселя, спираючись на кольорову карту нормалей, в якій ці відхилення зберігаються у вигляді текстури, кольорові складові якої [r,g,b] інтерпретуються в осі вектора [x, y, z], на основі якого обчислюється нормаль, що використовується для розрахунку освітленості пікселя. Завдяки тому, що в карті нормалей задіюються 3 канали текстури, цей метод дає більшу точність, ніж Bump mapping, в якому використовується лише один канал, і нормалі, по суті, всього лише інтерпретуються залежно від «висоти».

Карти нормалей зазвичай бувають двох типів:

object-space — використовується для не деформованих об'єктів, таких як стіни, двері, зброя тощо.

tangent-space — застосовується для можливості деформувати об'єкти, наприклад, персонажів.

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

Це означає, що карта нормалей — це своєрідна розгортка високоякісної моделі, яка натягується на низькоякісну модель з низькоякісною текстурою, в результаті якої на поверхні низькоякісної моделі візуально з'являються деталі у вигляді складок/шороховатостей/структури тканин, хоча фактично цього на моделі немає.

Ну якось так, пояснив як міг, своїми словами.

Практика

Ну і власне сам метод позбавлення від площини та надання об'єму текстурі. Нам знадобляться:

• Графічний редактор Paint.net (Непогана програма, важить мало, завжди використовую сам)

Отже, почнемо.

Нам потрібна карта нормалей (normal map, нормал мап, фіолетова текстура) саме від тієї текстури, яку ми хочемо покращити. Зазвичай у файлах гри вона називається точно так само, як і звичайна, але з закінченням "_nor", "_no", "_n". В деяких іграх вона може бути практично прозорою і, одночасно, райдужно-різнокольоровою, як у Battlefield 2. Відкриваємо її в paint.net.

Улучшение текстур с помощью карт нормалей (Normal maps)

Робимо її чорнобілою комбінацією клавіш Ctrl+Shift+G або ж натискаємо вкладку Корекція ► Зробити чорнобілим

Улучшение текстур с помощью карт нормалей (Normal maps)

На цьому етапі нам потрібно усвідомити, правильно чи надано об'єм. Якщо, наприклад, це карта нормалей від текстури одягу, то можна звернути увагу на кишені, шви, де одна частина одягу повинна бути трохи вище, а кишені випуклими. Часто доводиться інвертувати кольори, але це не завжди і це треба "відчути нутром". Якщо ви, раптом, пропустили момент, то, скоріше за все, текстура в кінці виконаної роботи стане світлішою за попередню і модель буде виділятися на загальному фоні. Інверсія кольорів відбувається комбінацією клавіш Ctrl+Shift+I або все в тій же вкладці Корекція ► Інвертувати кольори.

Улучшение текстур с помощью карт нормалей (Normal maps)

Все, ми підготували саме поліпшення. Тепер нам потрібно відкрити покращувану текстуру (color map, колор мап, текстура) і створити новий шар комбінацією клавіш Ctrl+Shift+N або через вкладку Шари ► Додати новий шар. Увага: нам вистачить одного нового шару. У нас повинно бути тільки два шари.

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер змінюємо властивості цього шару. Клавішею F4 або через вкладку Шари ► Властивості шару... У з'явившомуся вікні на потрібний режим змішування "Перекриття" і натискаємо ОК.

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер перемикаємося на підготовлене поліпшення і копіюємо її послідовністю дій: Вибираємо все комбінацією клавіш Ctrl+A і, власне, копіюємо комбінацією Ctrl+C. Перемикаємося на покращувану текстуру, вибираємо новий шар, який ми підкоригували (якщо раптом з якихось причин він не вибраний) і вставляємо те, що скопіювали, в цей шар комбінацією клавіш Ctrl+V. І ми відразу помітимо поліпшення.

Улучшение текстур с помощью карт нормалей (Normal maps)

Спробуйте відчути різницю:

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер об'єднуємо наші шари комбінацією клавіш Ctrl+M або у вкладці Шари ► Об'єднати з наступним шаром. І зберігаємо, натиснувши іконку дискетки, перезаписуючи файл або ж через вкладку Файл ► Зберегти як.. і задавши нове ім'я файлу. Інакше ви збережете його як незакінчений проект програми, а не в звичному нам форматі PNG/BMP.

Улучшение текстур с помощью карт нормалей (Normal maps)

В принципі, на цьому все. Якщо модель складається з кількох підмоделей (наприклад, модель людини – з голови, ніг і тулуба), то доведеться і їх текстури поліпшити даним способом. Після цього запхати/замінити текстури у файлі формату .txd через TXD Workshop або іншу подібну програму і запхати її в гру.

Як підсумок виконаної роботи, в якості прикладу наведу модель користувача поетичний привид під назвою Боєць ЗС РФ у камуфляжі "Горка"

Улучшение текстур с помощью карт нормалей (Normal maps)
Улучшение текстур с помощью карт нормалей (Normal maps)
Улучшение текстур с помощью карт нормалей (Normal maps)

Також можна використовувати трохи інший алгоритм, але по суті нічого не зміниться.

1. Відкриваємо текстуру, створюємо новий шар

2. Вставляємо в новий шар карту нормалей і робимо її чорно-білою, інвертуємо кольори

3. Змінюємо режим змішування у властивостях шару і об'єднуємо шари.

4. Готово.

Рекомендуемые файлы

Покращення текстур за допомогою карт нормалей (Normal maps)

12 серпня 2016
Rad

В останній час все частіше і частіше бачу конверти з сучасних ігор, якість конвертів буває різних рівнів – і хороші, і погані. Але незалежно від якості конверта в цілому, в більшості з них є синдром "плоских текстур", про що я, звичайно, і скаржуся в коментарях у файловому архіві. Можливо, конвертери не знають, навіщо ж потрібні ці дивні фіолетові текстури, або ж просто не можуть їх застосувати. І я в цій статті навчусь застосовувати їх при конвертації.

Теорія

Але для початку трохи теорії з Вікіпедії:

Normal mapping — техніка, що дозволяє змінювати нормаль відображуваного пікселя, спираючись на кольорову карту нормалей, в якій ці відхилення зберігаються у вигляді текстури, кольорові складові якої [r,g,b] інтерпретуються в осі вектора [x, y, z], на основі якого обчислюється нормаль, що використовується для розрахунку освітленості пікселя. Завдяки тому, що в карті нормалей задіюються 3 канали текстури, цей метод дає більшу точність, ніж Bump mapping, в якому використовується лише один канал, і нормалі, по суті, всього лише інтерпретуються залежно від «висоти».

Карти нормалей зазвичай бувають двох типів:

object-space — використовується для не деформованих об'єктів, таких як стіни, двері, зброя тощо.

tangent-space — застосовується для можливості деформувати об'єкти, наприклад, персонажів.

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

Це означає, що карта нормалей — це своєрідна розгортка високоякісної моделі, яка натягується на низькоякісну модель з низькоякісною текстурою, в результаті якої на поверхні низькоякісної моделі візуально з'являються деталі у вигляді складок/шороховатостей/структури тканин, хоча фактично цього на моделі немає.

Ну якось так, пояснив як міг, своїми словами.

Практика

Ну і власне сам метод позбавлення від площини та надання об'єму текстурі. Нам знадобляться:

• Графічний редактор Paint.net (Непогана програма, важить мало, завжди використовую сам)

Отже, почнемо.

Нам потрібна карта нормалей (normal map, нормал мап, фіолетова текстура) саме від тієї текстури, яку ми хочемо покращити. Зазвичай у файлах гри вона називається точно так само, як і звичайна, але з закінченням "_nor", "_no", "_n". В деяких іграх вона може бути практично прозорою і, одночасно, райдужно-різнокольоровою, як у Battlefield 2. Відкриваємо її в paint.net.

Улучшение текстур с помощью карт нормалей (Normal maps)

Робимо її чорнобілою комбінацією клавіш Ctrl+Shift+G або ж натискаємо вкладку Корекція ► Зробити чорнобілим

Улучшение текстур с помощью карт нормалей (Normal maps)

На цьому етапі нам потрібно усвідомити, правильно чи надано об'єм. Якщо, наприклад, це карта нормалей від текстури одягу, то можна звернути увагу на кишені, шви, де одна частина одягу повинна бути трохи вище, а кишені випуклими. Часто доводиться інвертувати кольори, але це не завжди і це треба "відчути нутром". Якщо ви, раптом, пропустили момент, то, скоріше за все, текстура в кінці виконаної роботи стане світлішою за попередню і модель буде виділятися на загальному фоні. Інверсія кольорів відбувається комбінацією клавіш Ctrl+Shift+I або все в тій же вкладці Корекція ► Інвертувати кольори.

Улучшение текстур с помощью карт нормалей (Normal maps)

Все, ми підготували саме поліпшення. Тепер нам потрібно відкрити покращувану текстуру (color map, колор мап, текстура) і створити новий шар комбінацією клавіш Ctrl+Shift+N або через вкладку Шари ► Додати новий шар. Увага: нам вистачить одного нового шару. У нас повинно бути тільки два шари.

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер змінюємо властивості цього шару. Клавішею F4 або через вкладку Шари ► Властивості шару... У з'явившомуся вікні на потрібний режим змішування "Перекриття" і натискаємо ОК.

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер перемикаємося на підготовлене поліпшення і копіюємо її послідовністю дій: Вибираємо все комбінацією клавіш Ctrl+A і, власне, копіюємо комбінацією Ctrl+C. Перемикаємося на покращувану текстуру, вибираємо новий шар, який ми підкоригували (якщо раптом з якихось причин він не вибраний) і вставляємо те, що скопіювали, в цей шар комбінацією клавіш Ctrl+V. І ми відразу помітимо поліпшення.

Улучшение текстур с помощью карт нормалей (Normal maps)

Спробуйте відчути різницю:

Улучшение текстур с помощью карт нормалей (Normal maps)

Тепер об'єднуємо наші шари комбінацією клавіш Ctrl+M або у вкладці Шари ► Об'єднати з наступним шаром. І зберігаємо, натиснувши іконку дискетки, перезаписуючи файл або ж через вкладку Файл ► Зберегти як.. і задавши нове ім'я файлу. Інакше ви збережете його як незакінчений проект програми, а не в звичному нам форматі PNG/BMP.

Улучшение текстур с помощью карт нормалей (Normal maps)

В принципі, на цьому все. Якщо модель складається з кількох підмоделей (наприклад, модель людини – з голови, ніг і тулуба), то доведеться і їх текстури поліпшити даним способом. Після цього запхати/замінити текстури у файлі формату .txd через TXD Workshop або іншу подібну програму і запхати її в гру.

Як підсумок виконаної роботи, в якості прикладу наведу модель користувача поетичний привид під назвою Боєць ЗС РФ у камуфляжі "Горка"

Улучшение текстур с помощью карт нормалей (Normal maps)
Улучшение текстур с помощью карт нормалей (Normal maps)
Улучшение текстур с помощью карт нормалей (Normal maps)

Також можна використовувати трохи інший алгоритм, але по суті нічого не зміниться.

1. Відкриваємо текстуру, створюємо новий шар

2. Вставляємо в новий шар карту нормалей і робимо її чорно-білою, інвертуємо кольори

3. Змінюємо режим змішування у властивостях шару і об'єднуємо шари.

4. Готово.

Рекомендуемые файлы