теория, алгоритмы, примеры на С++ и OpenGL  

Мы vkontakte.ru


Rambler's Top100 Rambler's Top100
Каталог@Mail.ru - каталог ресурсов интернет

Друзья

Словарь синонимов русского языка

Освещение в OpenGL

В этом разделе речь пойдет о возможностях настройки освещения в OpenGL при использовании фиксированного графического конвейера (fixed pipeline). В OpenGL используется модель освещения Блинна-Фонга в рамках которой можно использовать три типа источников света: направленный, точечный и прожектор. Используется повертексная модель освещения, т.е. каждая вершина освещается независимо. Такой способ освещения не учитывает препятствия между источником света и освещаемым объектом (не просчитывает тени), эффектов преломления, многократного отражения света и т.д.

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

Модель освещения

В модели Блинна-Фонга свет разбивается на три составляющие:

  • фоновая составляющая: постоянная составляющая освещенности, которая не зависит ни от положения освещаемой поверхности, ни от её ориентации. Вклад этой составляющей стараются делать относительно небольшим, иначе поверхность будет казаться засвеченной;
  • рассеянная составляющая: эту составляющую можно, в некотором смысле, считать основной. Ее значение зависит от ориентации поверхности по отношению к источнику света;
  • зеркальная составлюящая: используется для создания бликов на поверхности и может быть использована для имитации глянцевых поверхностей. Ее значение зависит от взаимного расположения поверхности, источника света и наблюдателя. Расчет этой компоненты достаточно ресурсоемкий, но часто именно блики на порядок увеличивают реалистичность сцены. Для матовых поверхностей эта составляющая отсутствует или очень мала.

Как включить расчет освещения

При выключенном освещении цвет полигонов задается командой glColor*. При этом цвет пикселей, между применениями команд glColor* является постоянным для всех вершин поверхности. Такая монотонная заливка позволит увидеть лишь силуэт объекта. Для полноценной передачи пространства надо включить и настроить освещение. Расчет освещения включается командой:

glEnable(GL_LIGHTING);

Для точной настройки освещения требуется:

  • задать положение и свойства одного или нескольких источников света;
  • задать свойства материала поверхности - способность воспринимать три компоненты освещения, величину собственного излучения и прозрачность;
  • указать нормали к поверхности для каждого полигона;
  • настроить модель освещения.

В статьях этого раздела будет подробно рассказано о каждом пункте.

Кулагин Денис
18 апреля 2008