Раскраска текстуры путем модулирования коэффициента отражения Мы уже отмечали ранее, что цвет объекта - это цвет его компонента диффузного освещения (когда этот объект освещается белым светом). Тогда путем варьирования коэффициента диффузного отражения (и, возможно, также коэффициента фонового отражения) можно сделать так, чтобы текстура казалась нарисованной на поверхности объекта. В таком случае говорят, что текстурная функция «модулирует» значение коэффициента отражения от точки к точке. Тогда равенство (8.5) заменяется равенством

I - texture(s, t) [Iapa + Idpd х lambert] + I рг х phong/

для соответствующих значений s и t. Поскольку по Фонгу зеркальные отражения имеют скорее цвет источника, а не объекта, то блики не зависят от текстуры. Для выполнения в OpenGL такого вида текстурирования нужно задать

glTexEnvf(GL_TEXTURE_ENV. GL_TEXTURE_ENV_MODE. GLJODULATE) ;

Имитация изрытости посредством отображения неровностей Отображение неровностей (bump mapping) - это технология, разработанная Блинном [Blinn, 24] для придания поверхности морщинистого (как у изюма) или изрытого (как у апельсина) вида без необходимости моделировать каждую ямку в отдельности. Используется текстурная функция, которая производит «возмущение» нормали к поверхности, что, в свою очередь, вызывает изменения в величинах диффузного и зеркального отражения. На рис. 8.47 приводится пример. Одна из проблем, связанных с применением отображения неровностей на поверхность типа чайника, заключается в том, что поскольку в самой модели эти неровности отсутствуют, то силуэт объекта не показывает этих неровностей, а представляет собой совершенно гладкую поверхность вдоль каждой грани.

Кажущаяся изрытой поверхность, полученная посредством отображения неровностей (с разрешения Okino Computer Graphics, Inc. Визуализировано с помощью программы Okino NuGraf)

Рис. 8.47. Кажущаяся изрытой поверхность, полученная посредством отображения неровностей (с разрешения Okino Computer Graphics, Inc. Визуализировано с помощью программы Okino NuGraf)

1 В качестве последнего параметра следует использовать GL_REPLACE или GL_DECAL.

Визуализация граней для усиления реалистичности


⇐ Предыдущая| |Следующая ⇒