Склеиваем текстуру и карту нормалей

Добавлен , опубликован
Раздел:
Моделлинг

Пролог

В этом небольшом пособии я распишу шаг за шагом несложную процедуру слияния базовой текстуры с так называемой картой нормалей (normal map). О том, для чего это нужно, чуть ниже. Несмотря на очевидность процесса для тех, кто уже знает эту фишку, многие не в курсе. Лично я дошёл до этого сам спустя пару лет после того как начал конвертировать в Warcraft 3 модели из игр, поддерживающих normalmapping, что я вляется некоторым упущением.
Что такое Normal Map?
Вот, что написано о карте нормалей на Polycount Wiki:
Карта нормалей используется, как правило, для имитации детализированной high-res геометрии путём наложения на low-res модель. Каждый пиксель карты нормальней содержит данные о нормали - вектора, описывающего форму поверхности оригинальной high-res сетки в данной точке. Красный, зелёный и синие каналы карты нормалей используются для обозначения направления нормали каждого пиксела. (Авторский перевод)
Думаю, все плюшки технологии normal mapping'а вполне очевидны, поэтому большинство современных 3D игр закономерно используют её. Выражается это в том, что каждая текстура из таких игр обладает своим дублёром, который и содержит информацию о нормалях. Многие неопытные моделлеры просто игнорируют её при конвертации моделей и текстур, полагая, что она совершенно бесполезна для игр, не поддерживающих данную технологию (например, Warcraft3 или World of Warcraft). И совершенно напрасно.
А всё дело в том, что текстуры, которые рисуются для игр с реалистичным освещением, намеренно делают как можно менее контрастными, оставляя минимум теней - ведь в противном случае, нарисованные тени будут конфликтовать с реальными тенями от освещения. Поэтому для передачи фактуры используется карта нормалей, а базовые текстуры порой выглядят почти пустыми.
Таким образом, наша задача - "слить" базовую текстуру с картой нормалей, чтобы на ней проявились тени. Всё, что для этого нужно - это Photoshop и прямые руки(тм)

Шаг за шагом

Наиболее требовательными к карте нормалей всегда были фактурные поверхности, например камень и дерево. Я остановил свой выбор на текстуре камне из пака Top-Down Fantasy. Поскольку текстуры там в формате tif, мне не понадобилось никакого стороннего софта, чтобы открыть их в Photoshop.

Шаг 1

Итак, слева - базовая текстура (выглядит довольно невзрачно, не правда ли?). Справа - карта нормалей. Как правило, она имеет то же название, что и базовая текстура, но с припиской _n или _nmp (что значит normal map), в то время как у оригинала часто бывает приписка _diff (что значит diffuse). Открываем оба файла.

Шаг 2

Чтобы сохранить цветовую гамму оригинала, нам надо сначала обесцветить карту нормалей. Изображение -> Коррекция -> Обесцветить. Должен заметить, это далеко не единственный способ обесцвечивания картинки, и как утверждают опытные фотографы - не самый верный, но поскольку мы работаем с текстурой, а не пытаемся имитировать чёрно-белую фотографию, этот однокнопочный способ нас вполне устроит. После обесцвечивания карта нормалей становится похожа на проекцию гипсового слепка, что и нам и требуется.

Шаг 3

Цепляем "гипсовую" текстуру и бесцеремонно перетаскиваем в окно к базовой текстуре. Там у нас создаётся новый слой, закрывающий собой фон. Окно с картой нормалей теперь можно закрыть, оно нам больше не понадобится. У получившегося бутерброда выбираем верхний, "гипсовый" слой, и открываем его параметры наложения, дважды кликнув мышкой по миниатюре или вызвав меню правым кликом и выбрав соответствующий пункт из свитка. Режим наложения по умолчанию стоит "Нормальный".

Шаг 4

Открываем свиток, и нам выпадает немалый выбор из вариантов наложения. Любопытства ради, можете попробовать различные режимы. Я эмпирическим путём пришёл к режиму "Перекрытие", как наиболее подходящему нашей задаче.

Шаг 5

Нажав окей, мы видим, что базовая текстура, слившись с "гипсовой", стала куда больше похожа на настоящий камень, чем на на жёлто-коричневую кляксу. Однако оставить текстуру на этой стадии было бы халтурой, т.к. перкрывшись практически белой картой нормалей, текстуры выглядит светлее, чем должна. Чтобы убавить яркость, сначала объединяем слои в один, затем заходим в Изображение -> Коррекция -> Цветовой тон/Насыщенность.

Шаг 6

В появившемся окне нам нужен параметр "Яркость". Дальше - момент достаточно интуитивный, я делал примерно, на глаз, поэтому ваши значения могут отличаться в зависимости от глазомера - слегка убавляем яркость, двинув ползунок влево, чтобы вернуть тон текстуры к тому, каким он был в оригинале. По идее, -20 должно хватить. В любом случае, советую выбрать чёткое, круглое значение, чтобы легко запомнить и использовать его в остальных текстурах, не подбирая тон каждый раз на глаз.

Шаг 7

В качестве последнего штриха, чтобы текстура выглядела максимально приближенно к тому, как она должна выглядеть в игре, использующей карты нормалей, стоит подправить контрастность. Изображение -> Коррекция -> Яркость/Контрастность.

Шаг 8

Так же, как и в шестом шаге, и даже в большей степени, это в целом дело вкуса. Смысл в том, что надо усилить контрастность, но не перестараться. Я для себя определил ровно 50 и результат меня вполне устроил. В отдельных случаях я мог сделать текстуру чуть менее или чуть более контрастной. Это в некоторой степени компенсирует отсутствие собственных и падающих теней в игре, которые должны задавать модели большую фактурность.

Заключение

Результат налицо. Если не отвлекаться на любования, весь процесс занимает около минуты, и оно того стоит. После процедуры не забудьте сохранить текстуру в нужном формате. Для Warcraft 3 это будет tga. Всем спасибо, с вами был LongbowMan.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
25
10 лет назад
0
Освещенные участки потом самому добавлять придется, а так просто коррекцию провести.
2
20
10 лет назад
2
Да это хороший способ сделать текстуру, главное скульптингу научится чтоб нормалки снимать.
1
6
10 лет назад
1
Isstrebitel:
Интересно. А в каких играх такое есть?
Яркий пример - игра Normal tanks.
0
27
10 лет назад
0
Marauder, яркий, серьёзно?) Про Скайрим или Кредо Ассассинов хотя бы многие слышали, а вот про эти танчики я например узнаю впервые (как вообще "танчики" могут быть ярким примером чего-либо, это же классика жанра со времён тетриса)
Точнее, если говорить о ярких примерах использования текстур с нарисованными тенями, то это будет конечно WoW и Dota
0
25
10 лет назад
0
LongbowMan, в доте2 нормал мап же
0
27
10 лет назад
0
П4ела, там столько теней нарисовано на текстурах, я был уверен, что там нет нормалмапа :о
0
25
10 лет назад
0
LongbowMan, бывает их используют вместе, нормалы и нарисованное
0
27
10 лет назад
0
П4ела, как в вкр, например))
0
25
10 лет назад
0
LongbowMan, ну да =) В SCII вроде тоже тени есть нарисованные.
0
1
2 месяца назад
0
Всем привет. Итак, вы делаете это в фиолетовой текстуре, но можете ли вы таким же образом добавить желтые обычные текстуры из игры WarCraft3 Reforged, чтобы рассеять текстуру с помощью программы Photoshop? Заранее большое спасибо за ответ.🙃
1
32
2 месяца назад
1
я вот так для рефа делал
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.