Начнем с констатации того факта, что нормаль к участку поверхности в определенной точке характеризует форму поверхности в этой точке. Внесение небольших искажений в компоненты вектора нормали приведет к появлению локальных искажений формы поверхности - созданию эффекта микрорельефа. Учет этих искажений на стадии тонирования поверхности объекта сохранит влияние на изображение текущей конфигурации источников света и прочих факторов, учитываемых при тонировании.
Внести искажения в компоненты вектора нормали можно разными способами- ниже будет продемонстрировано, как это делается, если поверхность задана в параметрической форме. Пусть р(и, v) - точка на поверхности, описываемой параметрическими уравнениями. Единичный вектор нормали к поверхности в этой точке есть векторное произведение векторов касательных, образуемых как частные производные по основным параметрам: Р„ХР,
|Р„хр,|
где
Предположим, что в некоторой точке выполнено смещение в направлении нормали малого участка поверхности. Это смещение описывается известной функцией микрорельефа (bump function), d(u, v), причем значения функции достаточно малы (\d(u, v)| « 1): р' = р + d(u, v)n.
Операции с изображением на уровне растрового представления
Но нам требуется не изменять геометрию объекта, а только создать у наблюдателя иллюзию такого изменения. Для этого будем изменять не координаты точки р, а компоненты вектора нормали в этой точке п, а затем измененный вектор передавать алгоритму тонирования. Нормаль в точке р' есть векторное произведение п' = р„ X р\„
Векторы р'„ и р\, можно вычислить следующим образом:
P„ =P„ +-п + d(u,v)аи, ди
dd Л, W.
Pv = Р> +-п +д( U,V )tlv .
ov
Если d мало, то последними членами в правой части обоих уравнений можно пренебречь и, учитывая п х п=0, после их подстановки в выражение для векторного произведения получим выражения для вычисления компонентов искаженной нормали:
dd dd n =n +-nxp( +- nxpu.
du ov
Вектор разности между исходной и искаженной нормалями лежит в плоскости, касательной к поверхности в точке р. Чтобы выполнить наложение карты микрорельефа, нам потребуются два массива, которые будут содержать значения dd/du и dd/dv. Элементы этих массивов следует вычислить заранее, воспользовавшись методами, аналогичными тем, которые применялись при формировании проективных структур. Искажение компонентов нормалей реализуется в процессе тонирования.