
- •Комп’ютерна графіка
- •Лабораторна робота №1 Тема: «Вступ в програмування з використанням opengl»
- •Лабораторна робота №2 Тема: «Перетворення координат»
- •Робота з матрицями
- •Видові перетворення
- •Проекції
- •Область виводу
- •Лабораторна робота №3 Тема: «Створення реалістичних зображень з використанням властивостей геометричного об'єкту»
- •Властивості матеріалу
- •Джерела світла
- •Модель освітлення
- •Текстури
- •Підготовка текстури
- •Параметри текстури
- •Координати текстури
- •Створення спецефектів
- •Прозорість
- •Глосарій
- •Список рекомендованої літератури
- •Додаток а
- •Параметри моделі освітлення (glLightModel)
- •Параметри матеріалу (glMaterial)
- •Параметри джерела світла (glLight)
- •Додаток б Програма курсу «Комп’ютерна графіка»
- •Комп’ютерна графіка
Джерела світла
Додати в сцену джерело світла можна за допомогою команд
void glLight[i f] (GLenum light, GLenum pname, GLfloat param)
void glLight[i f] (GLenum light, GLenum pname, GLfloat *params)
Параметр light однозначно визначає джерело і вибирається з набору спеціальних символічних імен виду GL_LIGHTi, де i повинно лежати в діапазоні від 0 до GL_MAX_LIGHT, яке не перевищує восьми.
Два параметри, що залишилися, мають аналогічний зміст, що і в команді glMaterial..(). Розглянемо їх призначення (спочатку описуються параметри для першої команди, потім для другої):
GL_SPOT_EXPONENT параметр param повинен містити ціле або дійсне число від 0 до 128, що задає розподіл інтенсивності світла. Цей параметр описує рівень сфокусованого джерела світла. Значення за умовчанням: 0 (розсіяне світло).
GL_SPOT_CUTOFF параметр param повинен містити ціле або дійсне число між 0 і 90 або рівне 180, яке визначає максимальний кут розкиду світла. Значення цього параметра є половина кута у вершині конусовидного світлового потоку, що створюється джерелом. Значення за умовчанням: 180 (розсіяне світло).
GL_AMBIENT параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір фонового освітлення. Значення за умовчанням: (0.0, 0.0, 0.0, 1.0).
GL_DIFFUSE параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дифузного освітлення. Значення за умовчанням: (1.0, 1.0, 1.0, 1.0) для LIGHT0 і (0.0, 0.0, 0.0, 1.0) для інших.
GL_SPECULAR параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дзеркального віддзеркалення. Значення за умовчанням: (1.0, 1.0, 1.0, 1.0) для LIGHT0 і (0.0, 0.0, 0.0, 1.0) для інших.
GL_POSITION параметр params повинен містити чотири цілих або дійсних значень, які визначають положення джерела світла. Якщо значення компоненти w дорівнює 0.0, то джерело вважається нескінченно видаленим і при розрахунку освітленості враховується тільки напрям на точку (x, y, z), інакше вважається, що джерело розташоване в точці (x, y, z, w). Значення за умовчанням: (0.0, 0.0, 1.0, 0.0).
GL_SPOT_DIRECTION параметр params повинен містити чотири цілих або дійсних чисел, які визначають напрям світла. Значення за умовчанням: (0.0, 0.0, -1.0, 1.0).
При зміні положення джерела світла слід враховувати наступні факти: якщо положення задається командою glLight.() перед визначенням орієнтації погляду (командою glLookAt()), то вважатиметься, що джерело знаходиться в точці спостереження. Якщо положення встановлюється між завданням орієнтації і перетвореннями видової матриці, то воно фіксується і не залежить від видових перетворень. У останньому випадку, коли положення задане після орієнтації і видової матриці, його положення можна міняти, встановлюючи як нову орієнтацію спостерігача, так і міняючи видову матрицю.
Для використання освітлення спочатку потрібно встановити відповідний режим викликом команди glEnable (GL_LIGHTNING), а потім включити потрібне джерело командою glEnable (GL_LIGHTn).