Normal + Specular + Parallax. Часть I

Часть I. Подготовка

Опишу свои эксперименты с генерацией нормала из текстуры и попытками создать рельефный, «глубокий» нормал, а так же спекуляр и параллакс.

Идея взята из туториала на cgtextures.com “Recovering detailed normalmaps from photo textures”, Scott Warren. Однако, после серии тестов, проб и ошибок метод, описанный там, изменился. Эти изменения я вам и опишу.

Также, подобного резльтата можно добиться в программе CrazyBump, если она у вас есть.

Выбор за вами.

Для генерации карты нормалей в Photoshop’е я буду использовать NVIDIA Normal Map Filter (v8.20 beta). Свежую версию можно скачать отсюда (текущая версия — 8.23.1101).

Я буду делать обычный нормал, без особых хитростей. Т.е, основой будет Grayscale (градации серого) картинка.

Немного теории
Черные (темные) пиксели — вдавливаються.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	black512.gif
Просмотров:	238
Размер:	8.5 КБ
ID:	4657

Белые (светлые) — выдавливаются.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	white512.gif
Просмотров:	234
Размер:	8.5 КБ
ID:	4658

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

Название файла:	wbbh512.jpg
Просмотров:	253
Размер:	55.2 КБ
ID:	4659
Белый Бим, черное ухо“, Киностудия им. М. Горького, 1977 год

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

Название файла:	bcwc.jpg
Просмотров:	227
Размер:	79.4 КБ
ID:	4674
Black Cat, White Cat“.

Разделение на черные и светлые происходит на 50% сером (RGB = 128, 128, 128).

50% серый — это плоскость. Как земля, где ямы — черные, а горы — белые.

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

Название файла:	stone_uv_033_d.jpg
Просмотров:	340
Размер:	105.0 КБ
ID:	4660

Это мостовая в Вильнюсе.

Первый шаг — это обесцвечивание текстуры (Desaturate).
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	desaturate_PS.jpg
Просмотров:	239
Размер:	97.2 КБ
ID:	4661

В принципе уже на основе этой текстуры можно генерировть карту нормалей, а можно немного улучшить ее, подняв контрастность. Я использую этого Levels или Curves.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	Levels_PS.jpg
Просмотров:	180
Размер:	108.1 КБ
ID:	4662

В итоге темные участки стали темнее, а светлые — светлее.

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

Название файла:	filter_PS.jpg
Просмотров:	172
Размер:	45.1 КБ
ID:	4663

Интерфейс фильтра содержит много переключателей, «радиокнопок» и окошек для ввода каких-то значений. Help отсутствует.

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

Название файла:	Filter_opisanie_PS.jpg
Просмотров:	206
Размер:	74.8 КБ
ID:	4664

Инвертирование нормалей
Что будет если включить Invert Y. Для примера я попробовал инвертировать только по оси Y.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	invert_noinvert.jpg
Просмотров:	171
Размер:	87.8 КБ
ID:	4665

На скриншоте из 3ds max видно, что если сгенерировать нормал с инвертацией по Y — мы получим в 3D-редакторе вдавленный нормал, хотя надпись должна быть выдавленной, т.к. она белого цвета.

Источник света в сцене установлен специально для того, чтобы видеть тени и по ним определить, вдавлен или выдавлен normal-map.

Если мы будем работать только в максе, с установками по умолчанию, нам подходит вариант без инвертации по какой-либо из осей.

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

В 3ds max, в свойствах Normal Bump можно управлять параметрами инвертации.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	Chanel_Direction.gif
Просмотров:	238
Размер:	8.3 КБ
ID:	4666

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

Название файла:	invert_noinvert_Y.jpg
Просмотров:	172
Размер:	88.3 КБ
ID:	4667

Если вы когда-нибудь будете генерировать нормал с помощью модификатора Projection — то там вы тоже сможете увидеть управление инвертацией (каналами цветов).
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	Projection.gif
Просмотров:	251
Размер:	12.8 КБ
ID:	4673

В итоге я буду генерировать без инвертации по осям и использовать установки материала Normal Bump в 3ds max по умолчанию.

Сила нормала (scale)
Смысл параметра, я думаю, понятен. Я обычно использую значение 4, но можно как больше, так и меньше.

Способы генерации (Height Source, Alternate Conversions)
Их в списке 10 штук. Но я в зависимости от ситуации применяю только 3 из них.

  • Average RGB
  • Biased RGB
  • Colorspace

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

Название файла:	3type_PS.jpg
Просмотров:	169
Размер:	60.1 КБ
ID:	4671

Обратите внимание, в списке Alpha Field надо установить Unchanged.

Я сгенерирую нормал всеми тремя способами. С двумя параметрами силы 4 и 12.

Задача: получить выпуклый, выразительнй нормал.
Нажмите на изображении, чтобы увидеть его в полный размер.

Название файла:	Lara01.jpg
Просмотров:	278
Размер:	33.2 КБ
ID:	4672
Лара Крофт, Eidos Interactive

Без нормала и прочих технологий сейчас никуда!

Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.