На сложных сценах точную и эффективную модель глобального освещения дает отображение фотонов. В этой модели генерируются случайные лучи, исходящие от источников света, а эффекты освещения для каждого луча хранятся в карте фотонов, которая отделяет информацию об освещении от геометрии сцены. Точность передачи эффектов освещения улучшается при увеличении числа лучей.
Для добавления поверхностных деталей к объектам можно использовать многоугольные грани, наложение текстуры, отображение шероховатости или отображения кадра, когда небольшие многоугольные грани могут накладываться на большие поверхности. В качестве альтернативного варианта текстурные узоры можно определить в одно-, двух- и трехмерном пространствах, что позволяет накладывать текстуры на линию, поверхность или объем пространства. В процедурном наложении текстуры используются функции для расчета изменений в эффектах освещения объектов. Отображение шероховатости является средством моделирования нерегулярного поведения поверхности через возмущение векторов нормали к поверхности. Отображение кадра - это расширение отображения шероховатости, которое можно использовать для моделирования характеристик анизотропных материалов через разрешение вертикальных и горизонтальных вариаций поверхности.
Корневая библиотека OpenGL содержит обширный набор функций настройки точечных источников света, задания различных параметров в базовой модели освещения, выбора метода визуализации поверхностей, активизации процедур полутоновой аппроксимации и применения к объектам узоров из массива текстуры. Резюме по данным функциям освещения, визуализации поверхностей и наложения текстуры предлагается в табл. 10.2 и 10.3.
ТАБЛИЦА 10.2. Резюме по функциям OpenGL освещения и визуализации поверхностей
Функция |
Описание |
glLight |
Задает значение свойства источника света |
glEnable (lightName) |
Активизирует источник света |
glLightModel |
Задет значения параметра глобального освещения |
glMaterial |
Задает значение параметра оптической поверхности |
glFog |
Задает значение параметра атмосферы; активизирует атмосферные эффекты при вызове функции д1ЕпаЬ1е |
glColor4f (R, G, В, A) |
Задает альфа-фактор для поверхности, чтобы сымитировать прозрачность. В функции glBlendFunc альфа-фактор источника устанавливается равным СЬ_БКС_АЬРНА, а альфа-фактор цели - равным СЬ_ОЫЕ_М I N11 Э_3 ЯС_АЬ PH А |
glShadeModel |
Задает использование визуализации поверхностей по Гуро или одноцветную визуализацию поверхностей |
glNormal3 |
Задает вектор нормали к поверхности |
glEnable (GL_NORMALIZE) |
Устанавливает, что нормали к поверхностям должны преобразовываться в единичные векторы |
glEnableClientState |
Активизирует процедуры обработки для массива |
(GL_NORMAL_ARRAY) |
векторов нормали к поверхности |
glNormalPointer |
Создает список векторов нормали к поверхности, которые будут использоваться с массивом вершин |
glEnable (GL_DITHER) |
Активизирует операции применения визуализации поверхностей как шаблоны полутоновой аппроксимации |
Функция |
Описание |
glTexImagelD |
Задает параметры для настройки одномерного текстурного пространства. (Активизирует текстурирование при вызове команды glEnable) |
glTexImage2D |
Задает параметры для настройки двухмерного текстурного пространства |
glTexImage3D |
Задает параметры для настройки трехмерного текстурного пространства |
glTexParameter |
Задает параметры для процедур наложения текстуры |
glTexCoord |
Задает значение для текстурной координаты в одно-, двух-, трех- или четырехмерном текстурном пространстве |
glTexEnv |
Задает параметры текстурной среды, такие как цвет смешивания для наложения текстуры |
glCopyTexImage |
Копирует блок цветов пикселей из буфера кадров для использования в качестве текстурного узора. |
glCopyTexSublmage |
Копирует блок цветов пикселей из буфера кадров для использования в качестве текстурного подузора |
glTexCoordPointer |
Задает текстурные координаты в списке, который соотносится со списком вершин |
glBindTexture |
Присваивает текстурному узору имя; также используется для активизации именованного узора |
glDeleteTextures |
Удаляет список именованных текстур |
glGenTextures |
Автоматически генерирует имена текстур |
gllsTexture |
Команда запроса, позволяющая определить, существует ли именованная текстура |
glTexSublmage |
Создает текстурный подузор |
gluBuild* |
Автоматическая генерация сокращенных текстурных узо |
Mipmaps |
ров для одномерного, двухмерного или трехмерного текстурного пространства |
gluBuild* |
Автоматическая генерация сокращенных текстурных узо |
MipmapLevels |
ров заданного уровня для одно-, двух- или трехмерного текстурного пространства |
glGetTexLevel |
Запрос к системе, позволяющий определить, поддержива |
Parameter |
ется ли указанное значение параметра текстуры |
gluQuadricTexture |
Активизирует или деактивизирует текстурирование для поверхности второго порядка |
ЛИТЕРАТУРА
Базовые модели освещения и методы визуализации поверхностей рассмотрены в работах [3, 23, 24, 104, 135, 240, 257]. Алгоритмы реализации моделей освещения и методов визуализации представлены в сборниках [8, 122, 151, 176, 244, 297]. Методы построения полутоновых изображений изложены в статье [368]. Дальнейшую информацию по упорядоченному шуму, диффузии ошибок и точечной диффузии можно почерпнуть из книги [178].