Название: Интерактивная компьютерная графика(А.В. Чернышев,М.Э. Рояк)

Жанр: Информатика

Просмотров: 1275


Текстурные координаты

Перед нанесением текстуры на объект необходимо установить соответствие между точками на поверхности объекта и на самой текстуре. Задавать это соответствие можно отдельно для каждой вершины или сразу для всех вершин.

Первый метод реализуется с помощью команд:

Чаще всего используются команды вида glTexCoord2*(type s, type t), задающие текущие координаты текстуры.

Второй метод реализуется с помощью команд:

Параметр coord определяет для какой координаты задается формула и может принимать значение GL_S, GL_T; pname может быть равен одному из следующих значений:

GL_TEXTURE_GEN_MODE определяет функцию для наложения текстуры.

В этом случае аргумент param принимает значения:

GL_OBJECT_LINEAR значение текстурной координаты определяется расстоянием до плоскости, задаваемой с помощью значения pname GL_OBJECT_PLANE. Формула: g=x*xp+y*yp+z*zp+w*wp,

где g – текстурная координата (s или p), x, y, z, w – координаты точки объекта, xp, yp, zp, wp – коэффициенты уравнения плоскости.

GL_EYE_LINEAR аналогично предыдущему значению, только в формуле используются видовые координаты.

GL_SPHERE_MAP позволяет эмулировать отражение от поверхности объекта. Текстура как бы «оборачивается» вокруг объекта. Для данного метода используются видовые координаты и необходимо задание нормалей.

GL_OBJECT_PLANE позволяет задать плоскость, расстояние до которой будет использоваться при генерации координат, если установлен режим GL_OBJECT_LINEAR. В этом случае параметр params является указателем на массив из четырех коэффициентов уравнения плоскости.

GL_EYE_PLANE аналогично предыдущему значению. Позволяет задать плоскость для режима GL_EYE_LINEAR.

Для установки автоматического режима задания текстурных координат необходимо вызвать команду glEnable с параметром GL_TEXTURE_GEN_S или GL_TEXTURE_GEN_P.

Практическая часть

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