Как использовать карты нормалей в UT2004

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

Что такое карта деталей? Это ч/б картинка, которая кладется поверх любого диффуза в режиме, который в фотошопе называется overlay. Те пиксели, которые светлее чем 128/128/128, сделают нижний слой ярче, те что темнее — соответственно темнее.
Зачем она нужна? Когда используешь бесшовные текстуры неизбежно возникает проблема повторяющегося рисунка. Если сильно растянуть текстуру, вблизи она будет размытой, если не растягивать — издали будет понятно что это одна и та же картинка 20 раз подряд.
Карта деталей это компромисс — она всегда меньшего масштаба чем основная текстура, но видна только вблизи. Таким образом основная текстура кажется детальнее чем она есть на самом деле, и выглядит одинаково хорошо и вблизи и издали. Ну, это в теории так. На практике как не выпендривайся а шейдеры 10-летней давности всегда выглядят как шейдеры 10-летней давности.

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

Слева диффуз с наложенной на него "картой деталей", справа то же самое, склеенное в один файл в фотошопе. Никакой разницы, изображения совпадают чуть ли не до пикселя.

А теперь почему не нужно делать вообще ничего из вышеперчисленного.

Начнем с того что такое карта нормалей. Карта нормалей это никакая не картинка, это информация о векторах, используемых для расчета освещения, для удобства сохраненная в виде графического файла. Вспомним из школьной геометрии что такое нормаль: https://ru.wikipedia.org/wiki/Нормаль
Чтобы описать нормаль в трехмерном пространстве нужны 3 координаты. Так удачно получилось что все мониторы работают в трехканальном режиме, и подавляющее большинство графических файлов тоже содержит в себе 3 канала — красный, синий и зеленый, — из которых смешиваются все остальные цвета.
Поэтому карты нормалей очень удобно записывать как графические файлы: красный и зеленый каналы - оси x и y, синий канал - ось z. Значение цвета 128 соответствует исходному положению нормали, больше 128 - отклонение в одну сторону, меньше - в другую.

Карта нормалей по своей природе асимметрична. Если нормаль отлоняется влево, соответствующий ей пиксель будет одного цвета, если вправо — совсем другого. Более того, цвет пикселя также зависит от положения полигонов на текстурной развертке, то есть если отрендерить карту нормалей, потом перевернуть развертку вверх ногами, отрендерить еще раз, перевернуть полученный файл обратно в фотошопе и сравнить с предыдущим — они не совпадут.
Какой вывод из этого напрашивается? Используя карты нормалей как простые текстуры ты неизбежно получаешь швы и левые тени. Вот, например, та "карта деталей" из пака персонажей ут3:

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

Тем не менее карты нормалей использовать можно и нужно.

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

Во-вторых, с карты нормалей можно отрендерить оклюжен и спекуляр в любом 3д редакторе. Я делаю в максе, можно в Майе, Блендере и т. д.
Оклюжен в максе рендерится в пару кликов.
Сначала делаем вот такой материал с нашей картой нормалей:

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

Потом открываем render to texture и следуем инструкциям из этого видео, там все несложно.

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

Эту текстуру мы открываем в фотошопе и кладем на диффуз в режиме multiply.
Получится примерно так:

Теперь можно переходить к спекуляру. Для этого понадобится симметрично расставить несколько источников освещения вокруг нашей модели. Я ставлю 6, вообще дело вкуса.

Затем заливаю диффуз черным и выкручиваю спекуляр:

После этого идем в render to texture, выбираем там complete map, убираем галочку с shadows и запекаем. Получится что-то такое:

Это голое освещение, запеченное в текстуру. Чтобы матерчатые штаны и металл не блестели одинаково ярко, нам нужна маска, то есть тот спекуляр что шел в комплекте с моделью.
Кладем его на наш запеченный спек в режиме multiply. Результат скорее всего окажется слишком темным, так что вооружаемся adjustments layers и начинаем подгонять яркость на глаз. С этого момента можно уже периодически экспортировать получившуюся маску в UEd чтобы не делать наугад.
Не исключено что какие-то области придется пригасить вручную, какие-то наоборот высветлить, так как для разных движков спекуляры выглядят по-разному и никогда не подойдут для тукея на 100%. В общем, ручная работа. Основные правила такие: металлы блестят больше, пластик меньше, ткани почти не блестят. Отражение на металле всегда цвета самого металла, для всех остальных материалов оно почти бесцветное.

Последний штрих — sharpen. Шарпить нужно так чтобы маска выглядела вырвиглазно, вот например кусок моего финального спека крупным планом, я рендерил его в 2048х2048:

Хитрость в том, что поскольку это всего лишь маска для кубмапы, на модели она будет выглядеть в разы бледнее чем в фотошопе, в результате чего самые мелкие детали неизбежно пропадут если не принять мер заранее. Вообще UT2004 очень страдает от недостатка резкости.

Ну и в завершение, пару слов о glow/emissive/self-illumination.
Все эти карты в современных движках делаются в расчете на постпроцессинг. В тукее ничего подобного к сожалению нет и белое пятно на self-illumination mask так и будет выглядеть белым пятном, а вовсе не лампочкой.
Поэтому emissive надо дорабатывать вручную в фотошопе. Я добавляю немного блюра, повышаю контраст и подкрашиваю текстуру:

Вот так выглядит финальный шейдер в UEd:

А вот так он выглядит на модели, можете сравнить с тем что было раньше:

utx лежит тут:
http://sta.sh/015qgtipnigx
Upd. Щас сообразил что забыл вложить кубмапу в utx. Если что такая кубмапа есть тут

Вам понадобится модель из UT3 пака.

Я думаю зарелизить исправленную версию, но сначала хочу еще переделать весь риг, потому что он там тоже ужасен, так что пока только текстурки.

Кстати пользуясь случаем сделал пару хайрезных рендеров оригинальной модели в мармосете:

В очередной раз убеждаюсь что тех людей которые ноют про дизайн персонажей в ут3 на форуме нового анрила я никогда не пойму.
По-моему это офигенно.

Информация

Автор: Aberiu

Добавил: Aberiu (Другие статьи пользователя)

Дата добавления: 02 Января 15, 20:09

Категории: Unreal Tournament 2004 - Моддинг

Теги: рукожопие, карты нормалей, убер

Статистика

, 1