Взаимодействие текстуры с объектом

Рассмотрим два типичных способа использования величин текстурного отображения, применяемых при вычислении визуализации для достижения различных визуальных эффектов. Проделаем это для простого случая вычисления яркости серого цвета. Если же изображение цветное, то такие вычисления выполняются раздельно для красного, зеленого и синего компонентов.

1. Создание эффекта светящегося объекта. Метод прост с вычислительной точки зрения. Видимая интенсивность I устанавливается равной значению текстуры в каждой точке:

В этом случае кажется, что объект испускает свет (или светится). Меньшие значения текстуры испускают меньше света, а большие – больше. Никаких дополнительных вычислений освещения не требуется. Для цветного света компоненты красного, зеленого и синего цветов вычисляются отдельно.

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

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

Для управления взаимодействием накладываемой текстуры на объект в OpenGL реализована команда:

void glTexEnv{if}(GLenum target, GLenum pname, TYPE param),

void glTexEnv{if}v(GLenum target, GLenum pname, TYPE * param),

где target – должно быть установлено в GL_TEXTURE_ENV; pname – имя параметра; param – значения параметра pname (невекторная или векторная форма).

GL_TEXTURE_ENV_MODE. параметр param может принимать следующие значения:

- GL_REPLACE – параметр задает такой вид текстурирования, как в методе (1);

- GL_DECAL – аналогично режиму GL_REPLACE с компонентами цвета RGB;

- GL_MODULATE – здесь параметр задает вид текстурирования по методу (2);

- GL_BLEND.

GL_TEXTURE_ENV_COLOR – параметр применяется для векторной формы команды, где param содержит компоненты цвета RGBA.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: