Рассмотрим полигональную сеть, подобную представленной на рис. 6.25. Каждый многоугольник в такой СеТИ- ПЛОСКИЙ, И ВЫЧИСЛИТЬ КОМПОНеНТЫ ВекТОра nupmcuiri i\ n^vij nv_ npvMviaDj.Av.! yj^yjбого труда. Ниже мы рассмотрим три метода закрашивания многоугольников: плоское, интерполяционное, или закрашивание по методу Гуро (Gouraud), и закрашивание по методу Фонга.

6.5.1. Плоское закрашивание При перемещении от одной точки на поверхности к другой в общем случае могут изменяться три вектора - 1, n и v. Однако, если поверхность плоская, вектор n остается постоянным для всех точек этой поверхности. Если наблюдатель расположен достаточно далеко от этой поверхности, то изменением вектора v при переходе от точки к точке на поверхности плоского многоугольника небольшого размера также можно пренебречь и считать его постоянным2. И, наконец, если в сцене используется удаленный источник света, то вектор I также считается постоянным для всех точек поверхности, ограниченной закрашиваемым многоугольником. В данном случае термин "удаленный" имеет прямой смысл, т.е. считается, что источник бесконечно далеко удален от освещаемой поверхности. Для реализации алгоритма закрашивания нужно в этом случае вместо расположения источника задавать направление на В OpenGL существуют режимы "ближнего " и "дальнего " наблюдателя, которые переключаются с помощью соответствующего программного флага. В режиме "ближнего" наблюдателя этот флаг должен быть сброшен, а в режиме "дальнего " наблюдателя -установлен.

Закрашивание

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

Если три указанных вектора постоянны для всех точек многоугольника, то все необходимые вычисления для его закрашивания можно выполнить только один раз и применить результаты ко всем точкам этого многоугольника. Этот метод получил название плоского (flat), или равномерного закрашивания (constant shading). В OpenGL режим плоского закрашивания задается аргументом GL_FLAT при вызове функции glShadeModel( ):


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