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

» Раздел: Моделлинг

Пролог

В этом небольшом пособии я распишу шаг за шагом несложную процедуру слияния базовой текстуры с так называемой картой нормалей (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.

Просмотров: 5 665

» Лучшие комментарии


Isstrebitel #1 - 3 года назад 0
Интересно. А в каких играх такое есть?
7 комментариев удалено
П4ела #9 - 3 года назад 1
Isstrebitel, normal map? 90% выпущенных игр (даже некоторые 2D игры имеют nm) Еще есть паралакс и ,самое классное, дисплейсмент.
Рельефное_текстурирование
PhysCraft #10 - 3 года назад 1
Круто, а такое можно в Warcraft 3 применять, или это больше для 3D в стиле 3DsMax?
LongbowMan #11 - 3 года назад 2
PhysCraft, это как раз именно для конвертации в Warcraft 3 и другие игрушки, где невозможно использовать нормал маппинг.
H #12 - 3 года назад 0
если так делать то твои модели будут более "выпуклыми на вид". Чем стандартные. Ну и конечно же будет странно выглядеть на источниках света. По сути просто шума добавит лишнего, который будет мозолить глаза. Вся суть NM только в обработке шейдерем перед световым источником. А его симуляция не будет сочитатся с остальными моделями
Кет #13 - 3 года назад 1
Hellcore, дык в случае WC3 мозолить глаза будут как раз те модели, у которых есть карта нормалей. Потому что на обычных текстурах WC3 тени нарисованы, а на таких — нет.
LongbowMan #14 - 3 года назад 0
Hellcore, ну во-первых кэп намекает, что импорт не всегда мешают со стандартом, особенно если модели откуда-нибудь из скайрима. Во-вторых, как выше написал Кет, импортные текстуры с картой нормалей в варкрафте выглядят размыто и плоско, потому что все тени и фактура остались на карте нормалей.
H #15 - 3 года назад 0
Кет:
Hellcore, дык в случае WC3 мозолить глаза будут как раз те модели, у которых есть карта нормалей. Потому что на обычных текстурах WC3 тени нарисованы, а на таких — нет.
я про то и говорил.
darkowlom #16 - 3 года назад 0
LongbowMan, Что бы вручную не затемнять, лучше использовать "Умножение" вместо "Перекрытие", но это дело вкуса
П4ела #17 - 3 года назад 0
darkowlom, умножение не осветляет, а только затемняет.
darkowlom #18 - 3 года назад 0
П4ела:
darkowlom, умножение не осветляет, а только затемняет.
Так ему и ненадо осветлять, он же затемняет потом после перекрытия
П4ела #19 - 3 года назад 0
Освещенные участки потом самому добавлять придется, а так просто коррекцию провести.
ARCHIMONDE #20 - 3 года назад 2
Да это хороший способ сделать текстуру, главное скульптингу научится чтоб нормалки снимать.
Marauder #21 - 3 года назад 0
Isstrebitel:
Интересно. А в каких играх такое есть?
Яркий пример - игра Normal tanks.
LongbowMan #22 - 3 года назад 0
Marauder, яркий, серьёзно?) Про Скайрим или Кредо Ассассинов хотя бы многие слышали, а вот про эти танчики я например узнаю впервые (как вообще "танчики" могут быть ярким примером чего-либо, это же классика жанра со времён тетриса)
Точнее, если говорить о ярких примерах использования текстур с нарисованными тенями, то это будет конечно WoW и Dota
П4ела #23 - 3 года назад 0
LongbowMan, в доте2 нормал мап же
LongbowMan #24 - 3 года назад 0
П4ела, там столько теней нарисовано на текстурах, я был уверен, что там нет нормалмапа :о
П4ела #25 - 3 года назад 0
LongbowMan, бывает их используют вместе, нормалы и нарисованное
LongbowMan #26 - 3 года назад 0
П4ела, как в вкр, например))
П4ела #27 - 3 года назад 0
LongbowMan, ну да =) В SCII вроде тоже тени есть нарисованные.