Покращення текстур за допомогою карт нормалей (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.

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

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.

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

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

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

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

4. Готово.

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