ВВЕДЕНИЕ В OPENGL

Preview:

DESCRIPTION

ВВЕДЕНИЕ В OPENGL. Лекция 6. План лекции. Что такое OpenGL Работа с библиотекой Обзор архитектуры Функции OpenGL Определение объектов Преобразование координат Освещение. Синтез изображений. for each polygon in model project polygon onto viewing plane for each pixel in polygon - PowerPoint PPT Presentation

Citation preview

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

ВВЕДЕНИЕ В OPENGL

Лекция 6

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

План лекции

• Что такое OpenGL

• Работа с библиотекой

• Обзор архитектуры

• Функции OpenGL– Определение объектов– Преобразование координат– Освещение

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Синтез изображений

for each polygon in model project polygon onto viewing plane for each pixel in polygon calculate pixel colour calculate pixel z-value compare pixel z-value to value stored for pixel in z-

buffer if pixel is closer, draw it in frame-buffer and z-buffer endend

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Что такое OpenGL?

• OpenGL - прикладной программный интерфейс (API – Application Programming Interface) для разработки приложений в области трехмерной графики.

• Был утвержден в 1992 году – Основой стандарта стала библиотека IRIS GL,

разработанная фирмой Silicon Graphics Inc.

• Основная функция: интерактивная визуализация трехмерных моделей

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Возможности

• Вывод цветных изображений высокого качества, составленных из геометрических и других примитивов

• Расчет освещения от нескольких источников света

• Текстурирование• Удаление невидимых поверхностей• Анимация, трехмерные преобразования

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Почему OpenGL?

• Аналогичные библиотеки: DirectX (Direct3D), Java 3D

• OpenGL– Стабильность (с 1992 г.)– Переносимость

• Независимость от оконной и операционной системы

– Легкость применения• Простой интерфейс, реализации для различных ЯП

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Организация OpenGL

• Состоит из набора библиотек

Прикладная программаПрикладная программа

GLUGLU

GLGL

GLUTGLUT

GLXGLX

Win32 APIWin32 API

Буфер кадраБуфер кадра

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Сопутствующие API

•AGL, GLX, WGL– Связь между OpenGL и оконной системой

•GLU (OpenGL Utility Library)– Часть OpenGL– NURBS, tessellators, quadric shapes, etc

•GLUT (OpenGL Utility Tookkit)– Переносимый оконный API– Неофициальная часть OpenGL

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

OpenGL и сопутствующие API

Application program

X, Win32, Mac OS GL

Software and/or hardware

GLUGLX, AGL or

WGL

GLUTOpenGL motif widget

or similar

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Терминология

• Графический примитив– Точка, линия, многоугольник и т.д.

• Команда OpenGL– Вызов функции библиотеки

• Вершина– Определяет точку, конец отрезка или угол

многоугольника

• Атрибут вершины– Цвет, нормаль, текстурные координаты и т.д.

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Архитектура OpenGL

• Клиент-сервер– Клиент - приложение

• Конвейер– Данные обрабатываются последовательно, в несколько

этапов.

• Набор команд– Использует аппаратуру, если возможно

• Конечный автомат– Значение переменных – состояние– Команды изменяют состояние

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

КонвейерАппроксимация кривых и поверхностейАппроксимация кривых и поверхностей

Обработка вершин и сборка примитивовОбработка вершин и сборка примитивов

Растеризация и обработка фрагментовРастеризация и обработка фрагментов

Операции над пикселямиОперации над пикселями

Передача данных в буфер кадраПередача данных в буфер кадра

ТекстурыТекстуры

Атрибуты вершинАтрибуты вершин

Источники светаИсточники света

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Функции OpenGL

• Описание примитивов• Описание источников света• Задание атрибутов• Визуализация• Геометрические преобразования

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Начальные cведения

• Заголовочные файлы– #include <GL/gl.h>– #include <GL/glu.h>– #include <GL/glut.h>

• Библиотеки

• Перенумерованные типы– OpenGL определяет перенумерованные типы

для совместимости• GLfloat, GLint, GLenum и т.д

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Формат команд OpenGL

glVertex3fv ( v )

2 – (x, y)3 – (x, y, z)4 – (x, y, z, w)

Число компонент

B – byteub – unsigned bytes – shortus – unsigned shortI – intui – unsigned intf – floatd – double

Тип данных

«v» отсутствует для скалярных форм

glVertex2f(x,y)

Вектор

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример кода

• Цветной треугольникglBegin(GL_TRIANGLES)

glColor2f(0.0f,1.0f);

glVertex2f(50, 150);

glVertex2f(200, 200);

glEnd();

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Определение объектов сцены

• Тип примитива + набор вершин + набор атрибутов = объект

• Набор объектов + набор источников света + камера = сцена

• Изменение положения камеры = перемещение по сцене.

• Изменение положения объектов в сцене или атрибутов = анимация

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Геометрические примитивы

GL_POINTS GL_LINES GL_LINE_STRIP

GL_LINE_LOOP

GL_POLIGONGL_TRIANGLES

GL_QUADS

GL_TRIANGLE_STRIPGL_TRIANGLE_FAN

GL_QUAD_STRIPE

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Определение примитивов OpenGL

• Примитивы определяются, используя:

glBegin( prim_type );glEnd();

• prim_type определяет, каким образом будут комбинироваться вершины

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Основные атрибуты

• Атрибуты вершины (vertex)– Положение в пространстве– Материал– Цвет– Нормаль

• Внимание: всегда используется ТЕКУЩИЙ набор атрибутов – OpenGL – конечный автомат

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример кода

• Цветной треугольникglBegin(GL_TRIANGLES)

glColor2f(0.0f,1.0f);

glVertex2f(50, 150);

glVertex2f(200, 200);

glEnd();

Внимание: операторные скобки!

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Процесс визуализации

1. Задать окно для рисования2. Определить константные атрибуты и свойства

(источники света, текстуры и т.д.)3. На каждом кадре:

1. Очистить окно2. Задать положение наблюдателя3. Для каждого объекта

1. Определить преобразование2. Передать атрибуты3. Передать геометрию

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Преобразования в OpenGL

• Модельное преобразования

• Видовые преобразования– Ориентация камеры

• Проекция на плоскость камеры

• Перевод в систему координат устройства

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Виртуальная камера

Камера

Штатив Модель

Видимый объем

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Виртуальная камера и преобразования

• Преобразование проекции– Настройка линз камеры

• Видовое преобразование– Изменение положения камеры в пространстве

• Модельное преобразование– Изменение положения модели в пространстве

• Оконные (viewport) преобразования– Изменение размеров готовой фотографии

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Координатные системы и преобразования

• Шаги для формирования изображения– Определение геометрии (мировая системы

координат)– Определение камеры (видовая система координат)– Проецирование (оконная система координат)– Перевод в экранные координаты (экранная

система координат)

• Каждый шаг использует преобразования• Каждая трансформация эквивалентна изменению системы координат

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

3D преобразования

• Каждая вершина транформируется с помощью матриц 4x4– Все аффиные операции – умножения

матриц– Все матрицы хранятся построчно в

OpenGL

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Определение преобразований в OpenGL

• Программист имеет два стиля определения преобразований– Определяя матрицы (glLoadMatrix,

glMultMatrix)– Определяя операции (glRotate, glOrtho)

• Программист не обязан помнить точные формулы для вычисления матриц

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Конвейер

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример (1)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример (2)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример (3)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Пример (4)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Применение преобразований проекции

• Типичное использованиеglMatrixMode ( GL_PROJECTION );

glLoadIdentity ();

glOrtho ( left, right, bottom, top, zNear, zFar)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Видовые преобразования

• Установка «штатива» камеры, настройка объектива

• Чтобы «летать» по сцене– Задать видовое преобразование и

перерисовать сцену

• gluLookAt( eyex, eyey, eyez, aimx, aimy, aimz, upx, upy, upz)

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Связь между модельным и видовыми преобразованиями

• Перемещение камеры = перемещение каждого объекта по отношению к фиксированной камере.

• Видовое преобразование эквивалентно нескольким модельным преобразованиям.

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Левая и правая системы координат

• Преобразования проекции используют левую систему координат– Znear и Zfar – просто расстояния от точки зрения

• Во всех остальных случаях OpenGL использует правую систему координат

левая праваяx

y z+

x

y

z+

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Принципы освещения

• Составляющие модели освещения OpenGL– Материал объекта определяет его

своейста его поверхности– Цвет и положение источника света– Глобальные параметры освещения

• рассеянный свет

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Модель Фонга

• ambient = Ka,diffuse = Kd * cos(N, L),specular = Ks * (cos (R, V)) Ns

• intensity = ambient + amp * (diffuse + specular).

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Как устроено освещение в OpenGL

• Модель Фонга– Вычисляется на вершинах

• Составляющие модели освещения– Свойства материала поверхности– Свойства источника света– Свойства модели освещения

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Свойства материала

• Определение свойств материала для примитива glMaterialfv (face, property, value)

GL_DIFFUSE

GL_SPECULAR

GL_AMBIENT

GL_EMISSION

GL_SHININESS

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

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

• glLightfv ( light, property, value )

– цвет источника– положение– затухание

Астана (22 .02. 2003) Компьютерная графика (лекция 6)

Типы источников света

• OpenGL поддерживает два типа источников света– Локальные (точечные) источники– Бесконечно удаленные (параллельные)

источники

• Тип определяется координатой w– w = 0 параллельный источник– W 0 точечный источник (x / w, y / w, z /w)