- •Комп’ютерна графіка
- •Лабораторна робота №1 Тема: «Вступ в програмування з використанням opengl»
- •Лабораторна робота №2 Тема: «Перетворення координат»
- •Робота з матрицями
- •Видові перетворення
- •Проекції
- •Область виводу
- •Лабораторна робота №3 Тема: «Створення реалістичних зображень з використанням властивостей геометричного об'єкту»
- •Властивості матеріалу
- •Джерела світла
- •Модель освітлення
- •Текстури
- •Підготовка текстури
- •Параметри текстури
- •Координати текстури
- •Створення спецефектів
- •Прозорість
- •Глосарій
- •Список рекомендованої літератури
- •Додаток а
- •Параметри моделі освітлення (glLightModel)
- •Параметри матеріалу (glMaterial)
- •Параметри джерела світла (glLight)
- •Додаток б Програма курсу «Комп’ютерна графіка»
- •Комп’ютерна графіка
Область виводу
Після застосування матриці проекцій на вхід наступного перетворення подаються так звані усічені (clip) координати, для яких значення усіх компонент (xc, yc, zc, wc) T знаходяться у відрізку [–1,1]. Після цього знаходяться нормалізовані координати вершин за формулою:
(xn, yn, zn)T = (xc/wc , yc/wc, zc/wc)T
Область виводу представляє з себе прямокутник у віконній системі координат, розміри якого задаються командою:
void glViewPort (GLint x, GLint y, GLint width, GLint height)
Значення усіх параметрів задаються в пікселах і визначають ширину і висоту області виводу з координатами лівого нижнього кута (x, y) у віконній системі координат. Розміри віконної системи координат визначаються поточними розмірами вікна додатка, точка (0,0) знаходиться в лівому нижньому кутку вікна.
Використовуючи параметри команди glViewPort(), обчислюються віконні координати центру області виводу (ox,oy) за формулами ox=x+width/2, oy=y+height/2.
Нехай px=width, py=height, тоді можна знайти віконні координати кожної вершини:
(xw, yw, zw)T = ( (px/2) xn+ ox , (py/2) yn+ oy , [(f-n)/2] zn+(n+f)/2 )T
При цьому цілі позитивні величини n і f задають мінімальну і максимальну глибину точки у вікні і за умовчанням рівні 0 і 1 відповідно. Глибина кожної точки записується в спеціальний буфер глибини (z-буфер), який використовується для видалення невидимих ліній і поверхонь. Встановити значення n і f можна викликом функції
void glDepthRange (GLclampd n, GLclampd f)
Команда glViewPort() зазвичай використовується у функції, зареєстрованій за допомогою команди glutReshapeFunc(), яка викликається, якщо користувач змінює розміри вікна додатка, змінюючи відповідним чином область виводу.
Завдання.
Побудувати тетраедр з кільцями, що обертаються навколо нього.
Контрольні питання до лабораторної роботи №2
Однорідні координати. Визначення однорідних координат об'єкту.
Проективні перетворення. Ортогональна проекція та аксонометрія.
Перспектива. Точки сходу.
Вилучення невидимих площин методом Робертся.
Вилучення невидимих ребер. Протикання.
Алгоритм художника та Z – буфер.
Алгоритм Варнока.
Алгоритм поінтервального сканування.
Алгоритм визначення невидимих поверхонь трасуванням променів. Габаритні тести.
Алгоритм порядкового сканування для криволінійних поверхонь.
Лабораторна робота №3 Тема: «Створення реалістичних зображень з використанням властивостей геометричного об'єкту»
Мета роботи
Ознайомитися з методами створення реалістичного зображення в OpenGL
Теоретична частина
Для створення реалістичних зображень необхідно визначити як властивості самого об'єкту, так і властивості середовища, в якому він знаходиться. Перша група властивостей включає параметри матеріалу, з якого зроблений об'єкт, способи нанесення текстури на його поверхню, міру прозорості об'єкту. До другої групи можна віднести кількість і властивості джерел світла, рівень прозорості середовища, а також модель джерел світла. Усі ці властивості можна задавати, використовуючи відповідні команди OpenGL.