
- •Комп’ютерна графіка
- •Лабораторна робота №1 Тема: «Вступ в програмування з використанням opengl»
- •Лабораторна робота №2 Тема: «Перетворення координат»
- •Робота з матрицями
- •Видові перетворення
- •Проекції
- •Область виводу
- •Лабораторна робота №3 Тема: «Створення реалістичних зображень з використанням властивостей геометричного об'єкту»
- •Властивості матеріалу
- •Джерела світла
- •Модель освітлення
- •Текстури
- •Підготовка текстури
- •Параметри текстури
- •Координати текстури
- •Створення спецефектів
- •Прозорість
- •Глосарій
- •Список рекомендованої літератури
- •Додаток а
- •Параметри моделі освітлення (glLightModel)
- •Параметри матеріалу (glMaterial)
- •Параметри джерела світла (glLight)
- •Додаток б Програма курсу «Комп’ютерна графіка»
- •Комп’ютерна графіка
Властивості матеріалу
Для завдання параметрів поточного матеріалу використовуються команди
void glMaterial[i f] (GLenum face, GLenum pname, GLtype param)
void glMaterial[i f]v (GLenum face, GLenum pname, GLtype *params)
За їх допомогою можна визначити розсіяний, дифузний і дзеркальний кольори матеріалу, а також колір міри дзеркального віддзеркалення і інтенсивність випромінювання світла, якщо об'єкт повинен світитися. Який саме параметр визначатиметься значенням param, залежить від значення pname:
GL_AMBIENT параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають розсіяний колір матеріалу (колір матеріалу в тіні). Значення за умовчанням: (0.2, 0.2, 0.2, 1.0).
GL_DIFFUSE параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дифузного віддзеркалення матеріалу. Значення за умовчанням: (0.8, 0.8, 0.8, 1.0).
GL_SPECULAR параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дзеркального віддзеркалення матеріалу. Значення за умовчанням: (0.0, 0.0, 0.0, 1.0).
GL_SHININESS параметр params повинен містити одне ціле або дійсне значення в діапазоні від 0 до 128, яке визначає міру дзеркального віддзеркалення матеріалу. Значення за умовчанням: 0.
GL_EMISSION параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають інтенсивність випромінюваного світла матеріалу. Значення за умовчанням: (0.0, 0.0, 0.0, 1.0).
GL_AMBIENT_AND_DIFFUSE еквівалентно двом викликам команди glMaterial..() зі значенням pname GL_AMBIENT і GL_DIFFUSE і однаковими значеннями params.
З цього виходить, що виклик команди glMaterial[i f]() можливий тільки для установки міри дзеркального віддзеркалення матеріалу. У більшості моделей враховується дифузне і дзеркальне відбите світло; перший визначає природний колір об'єкту, а другий - розмір і форму відблисків на його поверхні.
Параметр face визначає тип граней, для яких задається цей матеріал і може набувати значень GL_FRONT, GL_BACK або GL_FRONT_AND_BACK.
Якщо в сцені матеріали об'єктів розрізняються лише одним параметром, рекомендується спочатку встановити потрібний режим, викликавши glEnable() з параметром GL_COLOR_MATERIAL, а потім використовувати команду
void glColorMaterial (GLenum face, GLenum pname)
де параметр face має аналогічний зміст, а параметр pname може набувати усіх перерахованих значень. Після цього, значення вибраного з допомогою pname властивості матеріалу для конкретного об'єкту (чи вершини) встановлюється викликом команди glColor..(), що дозволяє уникнути викликів більше ресурсоємної команди glMaterial..() і підвищує ефективність програми.
Приклад.
float mat_dif[]={0.8,0.8,0.8};
float mat_amb[]= {0.2,0.2,0.2};
float mat_spec[]={0.6,0.6,0.6};
float shininess=0.7*128;
…
glMaterialfv (GL_FRONT_AND_BACK,GL_AMBIENT,mat_amb);
glMaterialfv (GL_FRONT_AND_BACK,GL_DIFFUSE,mat_dif);
glMaterialfv (GL_FRONT_AND_BACK,GL_SPECULAR,mat_spec);
glMaterialf (GL_FRONT,GL_SHININESS,shininess);