Улучшение текстур с помощью карт нормалей (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. Готово.

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