Создаем углубления.
Сперва, нам нужно геометрией создать поверхность, к оторую мы хотим симулировать картой нормалей. Для этого мы создадим плоскую поверхность, и сделаем subtract нескольких сфер.
слева созданная поверхность и сферы, справа - поверхность после применения булеана
Убедитесь в том, что сферы расположены на одинаковом расстоянии друг от друга, потому что карта нормалей должна быть повторяемой и бесшовной. Не забудьте, что мы создали плоскость на виде сверху. И еще, в сцене не требуются никакие источники света.
Рендер карты нормалей.
Теперь, добавьте в сцену FRY Target камеру (можно не менять установки камеры по умолчанию). Установите камеру точно по центру нашей плоскости, и убедитесь в том, что она направлена сверху вниз, перпендикулярно к плоскости, и что плоскость с углублениями находится в фокусе, как показано ниже на рисунке.
Выберите в настройках рендера тип ядра FRY R2 - Layered Compositing, а затем установите в поле Layer type - Normals Buffer. Не меняйте остальные параметры.
Теперь отрендерьте сцену, и вы получите изображение, как на рисунке ниже. Это и есть карта нормалей. Полученная карта будет преимущественно голубого цвета, где каждый пиксель описывает координаты вектора по средствам значения каналов RGB. Канал R соответствует координате по оси X, G – по оси Y, и B – по оси Z, таким образом, что:
R = (X / 2 + 0.5) • 255
G = (Y / 2 + 0.5) • 255
B = (Z / 2 + 0.5) • 255
или, что одно и то же:
X = (R / 255 - 0.5) · 2
Y = (G / 255 - 0.5) · 2
Z = (B / 255 - 0.5) · 2
Нормаль, это всегда нормализованный вектор (или единичный вектор – вектор, длина которого равна единице выбранного масштаба), не равный нолю. Это значит, что: X·X + Y·Y + Z·Z = 1
Потому, в карте нормалей возможно использовать не любые цвета, а только те, которые соответствуют координатам нормализированного вектора. Так как мы рендерим плоскость, которая располагается перпендикулярно к камере, то основная часть номалей будет иметь координаты (0,0,1) и будет направлена вдоль оси Z. Используя формулу, приведенную выше, получаем, что RGB, описывающее координаты такого нормаля, будет равным: R = (0 / 2 + 0.5) · 255 = 127
G = (0 / 2 + 0.5) · 255 = 127
B = (1 / 2 + 0.5) · 255 = 255
Вот почему в карте нормалей преодбалает голубой цвет, и почему их нельзя нарисовать вручную, как, например, карты высот для bump или displace. Преимущество карты нормалей в том, что с их помощью могут быть симулированы любые изгибы, морщины и трещины на поверхности. Вы также можете сделать карту, в которой нормаль будет направлен во внутрь поверхности, в то время как при использовании обычных карт высоты, вы не можете менять направления вектора, а только его длину.
слева – полученная после рендера карта нормалей, справа – более аккуратная бесшовная карта
Обратите внимание, что плоская поверхности отображается на карте голубым цветом (координатам 0,0,1 соответствует цвет 127,127,255), в то же время, левая часть углублений имеет красноватый оттенок (так как с изменением направления вектора по оси X, изменяется и значение красного канала в RGB).
Результат.
Материал мяча для гольфа – это просто пластик. Мы сделаем в материале два слоя, и в обоих слоях должна использоваться наша карта нормалей. В первом слое будет использоваться карта diffuse, второй слой – с сильным specular отражением. Соотношение веса слоев будет 85% для diffuse и 15% для specular, параметр roughness для слоя со specular поставим 5.
Обратите внимание на то, что наша карта нормалей по высоте почти в два раза меньше чем по длине, потому нам надо установить разное число повторений отдельно для координат U и V в настройках карты во fryrender. В нашем случае, это 18 и 10 соответственно. Также необходимо выбрать тип карты - Normals map (показано на Рисунке 6). Установки для карты нормалей должны быть одинаковы для слотов bump обоих слоев. И вот результат:
Заключение.
Карты нормалей, это эффективная (и в то же время экономная, с точки зрения использования ресурсов компьютера) технология детализации модели. Она гораздо более точная, по сравнению с bump. Недостаток же карт нормалей в том, что процесс их создание куда сложнее. В этом уроке была продемонстрирована простая техника создание карты нормалей, с использованием технологии ядра fryrender - Layered Compositing. Удачного меппинга!
"Карты нормалей: создание и использование карт нормалей." | автор: Chema Guerra (2007) |
перевод: Arhat | оригинал: randomcontrol.com |
1 comment:
Это настолько здорово, что я восхищен разработчиками и благодарен создателю этого сайта.
April 13, 2011 at 8:39 PMPost a Comment