Карта нормалей в фотошопе как сделать

NormalMap-Online

Этот веб-сайт позволяет создать normal карты из карт высот бесплатно. Текстуры не сохраняются на сервере, скрипты работают в вашем браузере, на стороне клиента.
Перетащите вашу текстуру с картой высот в поле щагрузки изображений, или просто укажите файл. После проверки окно предварительного просмотра и отобразит карту нормалей. Так же можно переключать тип генерируемой карты. Доступны: displacement, ambient occlusion, specular

В окне предварительного просмотра отображается 3D-модели с различных карт. Каждую карту можно включать/выключать, параметры отображения модели в окне просмотра можно регулировать.

Если у вас есть дополнительные вопросы, пишите на recosh@mail.ru.

Normal Maps

Normal Maps are textures that inherit depth information of a surface.
They don’t change the structure of the model and have nearly no impact on performance.
Each pixel represents a normal vector and is composed of three colors.
These colors are representing the direction of the normal vector.

They can enhance the optical illusion of depth significantly and are especially useful on flat surfaces, that have several bumps or cracks.
As shown on the right, the elevation described by the height map can be converted to a normal map, that can be read from your graphics card inside the shader units.
When aiming for a more drastical illusion in depth, where parts could be occluding the model, you should try displacement maps
These maps really alter polygons but could decrease performance significantly!

Height map

This texture contains the distance “height” from “floor”. The brighter the pixel, the further away (more depth).
In this application it doesn’t matter if it’s inverted, the most important thing is the difference between the pixels.
Ideal is a texture with pixel dimensions with a power of 2 (2, 4, 8. 256, 512 etc.)

Using a height map for example as displacement, you can easily see the effect on the surface. An example heightmap (left), bumps going in (top-right) and bumps going out (bottom-right).

NormalMaps from photos

It is technically not possible to get completely correct normalmaps directly from pictures e.g. taken with a camera.

But because many of you are interested in this, I considered searching for good methods to still achieve reasonable results from photos. There seem to be some techniques that can create decent normalmaps.
Still it would take me a lot of time to learn about these techniques.

Right now I’m studying a master’s degree, working part-time and giving lessons in programming.
If you would like me to invest more time on finding and implementing a solution for this, please consider donating!

I could work more on this project and include more features you want!

Краткий экскурс в мир альфа-каналов и карт нормалей

Краткий экскурс в мир альфа-каналов и карт нормалей

Альфа-канал играет немаловажную роль при создании текстур. В нём используются только градации серого. Запомнить как он работает очень просто: белый – да, чёрный – нет, серый – так себе, в зависимости от светлости. Найти его можно, разумеется, в свитке каналов – Channels. Вот он, как раз, в самом низу, так и называется Alpha 1

Читать еще:  Как сделать аниме глаза

Больше одного альфа-канала для игровых текстур оставлять не нужно.

Для диффузной карты альфа-канал используется только в том случае, если мы хотим сделать часть текстуры прозрачной. В этом случае чёрным закрашиваем то, что хотим отрезать, серым – что будет полупрозрачным (редко используется), белым – всё остальное.

Что касается карты свечения – glow map (маркер _g в конце имени файла) и карты глянца – environment mask (маркер _m в конце имени файла), то им альфа-канал не нужен вообще, они сами себе являются альфа-каналом. Тут тот же принцип: белый светится или отражает, чёрный – нет. Для карты свечения возможно использование цветов, но существует масса нюансов, поэтому опустим.

И, наконец, карта нормалей – normal map, в подавляющем большинстве, просто обязана иметь грамотный альфа-канал, в противном случае, модель будет выглядеть как маслом намазанная. Белый альфа-канал есть смысл оставить только для драгоценных камней, чистого нового стекла и жидкостей. Всё остальное приглушаем. Обычная ткань и неполированное дерево – почти чёрный цвет альфа-канала.

Ну, вот мы и подобрались к самому интересному

Сделать сиё чудо можно несколькими способами. Некоторые требуют хорошего навыка моделирования 3х-мерных объектов и нам сейчас не подходят. К счастью, есть плагин от славных людей из NVidia для создания карт нормалей из любого изображения. Есть ещё потрясающая программа CrazyBump, она гораздо лучше плагина NVidia, но категорически платная. Поэтому остановимся на плагине.
Откроем текстуру, для которой мы хотим создать карту нормалей, для примера я взяла маленькую текстуру брусчатки:

Применим к текстуре NormalMapFilter (Filter -> NVIDIA Tools -> NormalMapFilter):

В разделе Height Generation настраивается общее отображение будущей карты нормалей.
Пункт Wrap для безшовных текстур лучше выключить, иначе появятся швы на стыках, для одиночных текстур – всё равно. Все 3 пункта Invert делают то, что и написано, но мне ни разу не понадобились, поэтому я ничего не буду писать про них.
Путём выбора значения sample в подразделе Filter Type выбирается, собственно, детализация.

Как видите, самый чёткий результат мы получаем устанавливая значение sample 4.

В поле Scale настраивается высота рельефа. Для сравнения:

Главный недостаток NormalMapFilter в том, что он не умеет различать мелкие и крупные детали текстуры. Поэтому мы можем получить либо детализированную карту с небольшим рельефом, либо высокий рельеф без мелких деталей.
Выходов из этой ситуации несколько.

1. Отредактировать непосредственно изображение, сделав максимально контрастными крупные детали и минимально контрастными мелкие. Иногда этого не избежать, но для не очень сложных текстур есть ещё пара хитростей.
Приведу пример на сделанной на коленке простой текстуре:

Попробуем применить к ней NormalMapFilter со значениями 4 samples и 30 scale (я хочу получить достаточный контраст):

Читать еще:  Как сделать гроубокс из системного блока

И уже видны косяки – чересчур рельефное дерево при недостаточном рельефе борозд и кнопки. К тому же, кнопка обрела на своей поверхности абсолютно ненужные детали. Единственный путь к вменяемой карте нормалей для этой текстуры я вижу в редактировании изображения. Я перевела все элементы текстуры в градации серого, изменила их контрастность и яркость и добавила тёмные ореолы кнопке и бороздам, в первом случае – кнопка слегка утоплена, во втором – смягчаю контур борозд:

Применила фильтр с теми же самыми настройками:

Уже больше похоже на правду.

2. Второй способ я подсмотрела на сайте render.ru, идея принадлежит Евгению Булатову. Возвращаемся к нашей подопытной текстуре брусчатке, переводим изображение в 16 Bits/Chanel (меню Image –> Mode), обесцвечиваем Ctri+Shift+U и применяем NormalMapFilter с настройками: 4 sample, scale 5, Average RGB.

Затем, дублируем слой, применяем фильтр Blur -> Gaussian Blur с небольшим значением (я выбрала 2) и назначаем слою тип смешивания Overlay. Повторяем процедуру: дублируем дублированный слой (тот, который уже размыт), Gaussian Blur (можно нажать Ctrl+F и последний фильтр применится сам с последними настройками); дублируем, размываем и так много раз. Вот что у меня получилось при 10и дублированных слоях:

И мелкие детали видны и рельеф на месте. Осталось завершить процесс. Объединяем все слои в один, применяем NormalMapFilter изменив Average RGB на Normalize Only и переводим изображение в 8 Bits/Chanel:

3. Дублируем слой Background с текстурой, на слой Background применяем NormalMapFilter со значениями: 9х9 samples, 20 scale, Average RGB ( *1 ). Затем, на сдублированный слой применяем тот же NormalMapFilter, но со значениями: 4 samples, 3 scale, Average RGB, дублируем его ( *2 ), сливаем все слои и применяем NormalMapFilter изменив Average RGB на Normalize Only ( *3 ).

Осталось сделать адекватный альфа-канал и карту нормалей можно считать готовой к употреблению.

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

В последнее время всё чаще и чаще вижу конверты с современных игр, качество конвертов бывают разных уровней – и хорошие и плохие. Но независимо от качества конверта в целом, в большинстве из них есть синдром “плоских текстур”, о чём я, конечно, и жалуюсь в комментариях в файловом архиве. Возможно, конвертеры не знают зачем же нужны эти странные фиолетовый текстуры, или же всего лишь не могут его применить. И я в этой статье научу применять их при конверте.

Теория

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

object-space — используется для не деформирующихся объектов, таких как стены, двери, оружие и т. п.

tangent-space — применяется для возможности деформировать объекты, например персонажей .

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

Ну как-то так, объяснил как мог, своими словами.

Практика

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

Нам нужна карта нормалей (normal map, нормал мап, фиолетовая текстура) именно от той текстуры которую мы хотим улучшить. Обычно в файлах игры она называется точно так же как и обычная, но с окончанием “_nor”, “_no”, “_n”. В некоторых играх она бывает практически прозрачной и ,одновременно, радужно-разноцветной как в Battlefield 2. Открываем её в paint.net.

Читать еще:  Сделать раскладной стул своими руками чертежи

Делаем её чёрно-белой комбинацией клавиш Ctrl+Shift+G или же нажимаем вкладку Коррекция ► Сделать чёрно-белым

На этом этапе нам нужно осознать правильно ли придан объём. Если, к примеру, это карта нормалей от текстуры одежды, то можно обратить внимание на карманы, швы где одна часть одежды должна быть немного выше, а карманы выпуклыми. Зачастую приходится инвертировать цвета, но это не всегда и это надо “почувствовать нутром”. Если вы, вдруг, прозевали с моментом то скорее всего текстура в конце проделанной работы станет светлее прежнего и модель будет выделяться на общем фоне. Инверсия цветов происходит комбинацией клавиш Ctrl+Shift+I или всё в той же вкладке Коррекция ► Инвертировать цвета.

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

Теперь меняем свойства этого слоя. Клавишей F4 или через вкладку Слои ► Свойства слоя. В появившемcя окошке на нужен режим смешивания “Перекрытие” и нажимаем ОК.

Теперь переключаемся на подготовленное улучшение и копируем её последовательностью действий: Выбираем всё комбинацией клавиш Ctrl+A и, собственно, копируем комбинацией Ctrl+C. Переключаемся на улучшаемую текстуру, выбираем новый слой который мы подкорректировали (если вдруг по каким-то причинам он не выбран) и вставляем то, что скопировали, в этот слой комбинацией клавиш Ctrl+V. И мы сразу заметим улучшение.

Попробуйте почувствовать разницу:

Теперь объединяем наши слои комбинацией клавиш Ctrl+M или во вкладке Слои ► Объединить со следующим слоем. И сохраняем нажав иконку дискеты перезаписывая файл или же через вкладку Файл ► Сохранить как.. и задав новое имя файлу. Иначе вы сохраните его как незаконченный проект программы, а не в привычном нам формате PNG/BMP.

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

Как итог проделанной работы, в качестве примера приведу модель пользователя почетный призрак под названием Боец ВС РФ в камуфляже “Горка”

Так же можно использовать немного иной алгоритм, но по сути ничего не изменится.
1. Открываем текстуру, создаём новый слой
2. Вставляем в новый слой карту нормалей и делаем её чёрно-белой, инвертируем цвета
3. Изменяем режим смешивания в свойствах слоя и объединяем слои.
4. Готово.

Источники:

http://recoshet.github.io/services/normal_map/

http://modgames.net/publ/obuchajushhie_stati/adobe_photoshop/1/24-1-0-1444

http://libertycity.ru/developing/articles/3027-uluchshenie-tekstur-s-pomoshhju-kart.html

Ссылка на основную публикацию
Статьи на тему: