Опубликован: 02.12.2011 | Доступ: свободный | Студентов: 980 / 117 | Оценка: 5.00 / 4.00 | Длительность: 09:26:00
Специальности: Программист
Теги: .net, open source, opengl
Лекция 8:

Свойства источника света

< Лекция 7 || Лекция 8: 12 || Лекция 9 >

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

Интенсивность и цвет зеркального отражения от источника света определяет значение параметра pname команды Light:

C#:
  LightParameter.Specular
Object Pascal:
  GL_SPECULAR

По умолчанию значение зеркального отражения от "нулевого" источника света равно (1, 1, 1, 1), для других источников света она равна (0, 0, 0, 1).

Положение источника света в пространстве

Для определения положения источника света в пространстве используется значение для параметра pname команды Light:

C#:
  LightParameter.Position
Object Pascal:
  GL_POSITION

В качестве значения параметра param команды Light в библиотеке OpenTK (C#) передается массив из четырех значений, в Object Pascal - указатель на массив из четырёх значений.

Значения массива определяют нормализованные координаты источника света в пространстве. Если положение источника света необходимо задать в декартовых координатах (что чаще всего используется), то четвертый параметр массива должен быть равен 1, а первые три параметра должны определять декартовые координаты x, y, z.

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

По умолчанию нулевой источник освещения имеет координаты (0, 0, 1 ,0), и является направленным вдоль отрицательного направления оси OZ.

Направление источника света

Для определения направления источника света в однородных мировых координатах для параметра pname команды Light используется значение:

C#:
  LightParameter.SpotDirection
Object Pascal:
  GL_SPOT_DIRECTION

Параметр params должен содержать указатель на четыре значения, определяющих направление источника света в однородных мировых координатах. По умолчанию направление источника света задается значениями (0, 0, 1, 1). Отработка этого параметра имеет смысл, если угол освещения источником света имеет значение отличное от 180° (параметр LightParameter.SpotCutoff на C# и GL_SPOT_CUTOFF на Object Pascal).

Сфокусированность источника света

Для определения сфокусированности источника света используется значение для параметра pname команды Light:

C#:
  LightParameter.SpotExponent
Object Pascal:
  GL_SPOT_EXPONENT

Параметр param должен содержать целое или вещественное значение из диапазона [0, 128]. Максимальное значение соответствует максимальной сфокусированности источника света. Значение 0 соответствует рассеянному освещению, которое используется как значение по умолчанию для всех источников света.

Угол освещения источником света

Mаксимальный угол разброса излучения света определяется командой Light с помощью значения параметра pname:

C#:
  LightParameter.SpotCutoff
Object Pascal:
  GL_SPOT_CUTOFF

Параметр param должен содержать значение из диапазона [0, 90] или 180, которое задает максимальный угол разброса излучения света. Чем больше это значение, тем больше область освещения. По умолчанию данный параметр имеет значение 180, что соответствует рассеянному освещению.

Зависимость интенсивности освещения от расстояния

Для определения ослабления источника света с увеличением расстояния до освещаемого примитива так же используется команда Light.

Как уже описывалось выше, определение зависимости интенсивности освещения от расстояния в OpenGL выполняется по формуле:

S=\frac{1}{(k_0+k_1\times l+k_2\times l^2)}

Для изменения коэффициентов k_0,k_1,k_2 используются значения параметра pname, перечисленные в таблица 7.1.

Таблица 7.1. Значения параметра pname команды Light для определения интенсивности освещения от расстояния
Константа Значение параметра pname команды Light
Библиотека OpenTK, C# Object Pascal
k_0 LightParameter.ConstantAttenuation GL_CONSTANT_ATTENUATION
k_1 LightParameter.LinearAttenuation GL_LINEAR_ATTENUATION
k_2 LightParameter.QuadraticAttenuation GL_QUADRATIC_ATTENUATION

Краткие итоги

Все источники света библиотеки OpenGL можно разделить на две группы: точечные и бесконечно удалённые. Точечные источники света имеют конкретные координаты. У бесконечно удаленных источников света четвертая координата равна нулю. "Нулевой" источник света относится к бесконечно удалённым источникам света, так как его координаты (0,0,1,0). Бесконечно удаленные источники света всегда направлены в начало координат. Для всех источников света могут быть определены рассеянная, диффузная и зеркальная составляющие освещения.

< Лекция 7 || Лекция 8: 12 || Лекция 9 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?