Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_3D-mod.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.94 Mб
Скачать

Метод возмущения нормали

В векторе нормали к настоящей шероховатой поверхности и, следовательно, в направлении отражения есть небольшая случайная составляющая. На этой основе Блинн разработал метод возмущения нормали (Normal Mapping) для построения неровных поверхностей. Строится новая поверхность, которая выглядит шероховатой, путем внесения в направление нормали функции возмущения P(x,y):

,

где Q - поверхность,

- новая поверхность,

n - нормаль в т. (x,y).

В качестве P(x,y) можно использовать почти любую функцию, у которой существуют частные производные. Если узор не определяется аналитически, то функция возмущения записывается как двумерная таблица цветов с индексами x и y. Промежуточные значения вычисляются билинейной интерполяцией табличных величин, а производные вычисляются методом конечных разностей.

В то время как рельефное текстурирование всего лишь изменяет существующую нормаль для точек поверхности, метод возмущения нормали полностью заменяет нормали при помощи выборки их значений из специально подготовленной карты нормалей (normal map). Эти карты обычно являются текстурами с сохраненными в них заранее просчитанными значениями нормалей, представленными в виде компонент цвета RGB, в отличие от 8-битных черно-белых карт высот в бампмаппинге.

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

Карты нормалей предоставляют более эффективный способ для хранения подробных данных о поверхностях, по сравнению с простым использованием большого количества полигонов. Единственное серьезное их ограничение в том, что они не очень хорошо подходят для крупных деталей, ведь метод возмущения нормали на самом деле не добавляет полигонов и не изменяет форму объекта, он только создает видимость этого. Это всего лишь симуляция деталей, на основе расчета освещения на пиксельном уровне. На крайних полигонах объекта и больших углах наклона поверхности это очень хорошо заметно. Поэтому наиболее разумный способ применения метода возмущения нормали состоит в том, чтобы сделать низкополигональную модель достаточно детализированной для того, чтобы сохранялась основная форма объекта, и использовать карты нормалей для добавления более мелких деталей.

Карты нормалей обычно создаются на основе двух версий модели, низко- и высокополигональной. Низкополигональная модель состоит из минимума геометрии, основных форм объекта, а высокополигональная содержит все необходимое для максимальной детализации. Затем они сравниваются друг с другом, разница рассчитывается и сохраняется в текстуре, называемой картой нормалей. При ее создании дополнительно можно использовать и рельефное текстурирование для очень мелких деталей, которые даже в высокополигональной модели не смоделировать (поры кожи, другие мелкие углубления).

Карты нормалей изначально были представлены в виде обычных RGB текстур, где компоненты цвета R, G и B (от 0 до 1) интерпретируются как координаты X, Y и Z. Каждый тексель в карте нормалей представлен как нормаль точки поверхности.

Метод имеет интересные особенности: эффект шероховатости зависит от масштаба изображаемого объекта. Если размер объекта в увеличивается в 2 раза, то величина вектора нормали увеличивается в 4 раза, а его возмущения — только в 2 раза. Это приведет к тому, что увеличенный объект будет казаться более гладким. Но масштаб фактуры не зависит на перспективном изображении от перемещения объекта в пространстве по направлению к точке зрения или от нее.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]