Имитация микрорельефа

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

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

Рассмотрим один из популярных в настоящее время методов рельефного текстурирова-ния — DOT3. Согласно этому методу, каждый тексел текстуры хранит коор­динаты вектора нормали для соответствующей точки поверхности (рис. 8.9).

Почему лучше использовать карту нормалей, а не само изображение в виде текстуры? Потому что, это дает возможность создавать иллюзию игры света и тени при смене ракурса показа и возможном движении источников света, и даже при деформациях поверхности. Обычная текстура это обеспечить не в состоянии — она представляет изображение, сделан­ное только для одного ракурса показа и фиксированного положения источников света.

 

 

Рис. 8.9. Пимер имитации микрорельефа методом DOT3 Bump Mapping

 

Для хранения координат нормалей удобно использовать 24-битный растровый графиче­ский формат файлов — тут каждая тройка RGB будет представлять тройку координат UVN. Координаты UVN описывают векторы нормалей в так называемой касательной или танген­циальной системе координат (рис. 8.10).

 

 

Рис. 8.10. Используемые системы координат

У системы координат UVN оси U и N лежат в плоскости текстуры, они параллельны осям текстурных координат ХT и YT, а ось N является нормалью к поверхности. Пусть задан вектор направления света L. Тогда, при расчете цвета пиксела поверхности, например, для диффузной модели отражения, можно использовать скалярное произведение векторов L и Nbump:

 

Цвет точки = (собственный цвет поверхности) x DOT3(L, Nbump)

 

где DОТ — часто используемое в англоязычной литературе обозначение для скалярного произведения (bot product) векторов (отсюда и название DОТЗ Витр Маррing).

Очевидно, что для корректного вычисления результата необходимо использовать в ска­лярном произведении одну и ту же систему координат для векторов L и Nbump . Для этого нужно привести вектор Nbump систему координат, описывающую вектор L (обычно это мировые координаты). А можно наоборот, выразить вектор L в системе координат UVN.