Астана (22.02. 2003)Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6.

Презентация:



Advertisements
Похожие презентации
OpenGL Лекция 2.. Преобразование координат Преобразования координат.
Advertisements

OpenGL. Графический конвейер. Геометрические преобразования.
Лекция 8 25февраля 2003 г. (Астана) Видовые преобразования Закраска Гуро и Фонга Удаление невидимых линий и поверхностей.
Лекция 1 OpenGL («Open Graphics Library») - программный интерфейс (API) к графической плате. Утвержден в 1992 году Основой стандарта стала библиотека IRIS.
OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)
Лекция 8 2 апреля 2002 г. Закраска Гуро и Фонга Удаление невидимых линий и поверхностей.
Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Графический конвейер Преобразования геометрии Александр Шубин.
Компьютерная графика. Лекция 4 Алгоритмы формирования изображений. Основы OpenGL.
OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8.
Лекция 1 ( ). Основные возможности OpenGL Набор базовых примитивов: точки, линии, многоугольники и т.п. Видовые и координатные преобразования.
Компьютерная графика. Технологии 3D графики. DirectX, OpenGL, Glide, PhysX.
OpenGL Лекция 4 ( ). void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr ) size определяет число координат вершины (2, 3,
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
Оптимизация графического движка на библиотеке OpenGL.
Intro Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Введение в компьютерную графику URL:
Лекция 7 Видовые преобразования 26 марта 2002 г..
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Транксрипт:

Астана ( )Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6

Астана ( )Компьютерная графика (лекция 6) План лекции Что такое OpenGL Работа с библиотекой Обзор архитектуры Функции OpenGL –Определение объектов –Преобразование координат –Освещение

Астана ( )Компьютерная графика (лекция 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 end

Астана ( )Компьютерная графика (лекция 6) Что такое OpenGL? OpenGL - прикладной программный интерфейс (API – Application Programming Interface) для разработки приложений в области трехмерной графики. Был утвержден в 1992 году –Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc. Основная функция: интерактивная визуализация трехмерных моделей

Астана ( )Компьютерная графика (лекция 6) Возможности Вывод цветных изображений высокого качества, составленных из геометрических и других примитивов Расчет освещения от нескольких источников света Текстурирование Удаление невидимых поверхностей Анимация, трехмерные преобразования

Астана ( )Компьютерная графика (лекция 6) Почему OpenGL? Аналогичные библиотеки: DirectX (Direct3D), Java 3D OpenGL –Стабильность (с 1992 г.) –Переносимость Независимость от оконной и операционной системы –Легкость применения Простой интерфейс, реализации для различных ЯП

Астана ( )Компьютерная графика (лекция 6) Организация OpenGL Состоит из набора библиотек Прикладная программа GLU GL GLUT GLX Win32 API Буфер кадра

Астана ( )Компьютерная графика (лекция 6) Сопутствующие API AGL, GLX, WGL –Связь между OpenGL и оконной системой GLU (OpenGL Utility Library) –Часть OpenGL –NURBS, tessellators, quadric shapes, etc GLUT (OpenGL Utility Tookkit) –Переносимый оконный API –Неофициальная часть OpenGL

Астана ( )Компьютерная графика (лекция 6) OpenGL и сопутствующие API Application program X, Win32, Mac OS GL Software and/or hardware GLU GLX, AGL or WGL GLUT OpenGL motif widget or similar

Астана ( )Компьютерная графика (лекция 6) Терминология Графический примитив –Точка, линия, многоугольник и т.д. Команда OpenGL –Вызов функции библиотеки Вершина –Определяет точку, конец отрезка или угол многоугольника Атрибут вершины –Цвет, нормаль, текстурные координаты и т.д.

Астана ( )Компьютерная графика (лекция 6) Архитектура OpenGL Клиент-сервер –Клиент - приложение Конвейер –Данные обрабатываются последовательно, в несколько этапов. Набор команд –Использует аппаратуру, если возможно Конечный автомат –Значение переменных – состояние –Команды изменяют состояние

Астана ( )Компьютерная графика (лекция 6) Конвейер Аппроксимация кривых и поверхностей Обработка вершин и сборка примитивов Растеризация и обработка фрагментов Операции над пикселями Передача данных в буфер кадра Текстуры Атрибуты вершин Источники света

Астана ( )Компьютерная графика (лекция 6) Функции OpenGL Описание примитивов Описание источников света Задание атрибутов Визуализация Геометрические преобразования

Астана ( )Компьютерная графика (лекция 6) Начальные cведения Заголовочные файлы –#include Библиотеки Перенумерованные типы –OpenGL определяет перенумерованные типы для совместимости GLfloat, GLint, GLenum и т.д

Астана ( )Компьютерная графика (лекция 6) Формат команд OpenGL glVertex3fv ( v ) 2 – (x, y) 3 – (x, y, z) 4 – (x, y, z, w) Число компонент B – byte ub – unsigned byte s – short us – unsigned short I – int ui – unsigned int f – float d – double Тип данных «v» отсутствует для скалярных форм glVertex2f(x,y) Вектор

Астана ( )Компьютерная графика (лекция 6) Пример кода Цветной треугольник glBegin(GL_TRIANGLES) glColor2f(0.0f,1.0f); glVertex2f(50, 150); glVertex2f(200, 200); glEnd();

Астана ( )Компьютерная графика (лекция 6) Определение объектов сцены Тип примитива + набор вершин + набор атрибутов = объект Набор объектов + набор источников света + камера = сцена Изменение положения камеры = перемещение по сцене. Изменение положения объектов в сцене или атрибутов = анимация

Астана ( )Компьютерная графика (лекция 6) Геометрические примитивы GL_POINTSGL_LINESGL_LINE_STR IP GL_LINE_LO OP GL_POLIGONGL_TRIANGL ES GL_QUADS GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUAD_STRIP E

Астана ( )Компьютерная графика (лекция 6) Определение примитивов OpenGL Примитивы определяются, используя: glBegin( prim_type ); glEnd(); prim_type определяет, каким образом будут комбинироваться вершины

Астана ( )Компьютерная графика (лекция 6) Основные атрибуты Атрибуты вершины (vertex) –Положение в пространстве –Материал –Цвет –Нормаль Внимание: всегда используется ТЕКУЩИЙ набор атрибутов –OpenGL – конечный автомат

Астана ( )Компьютерная графика (лекция 6) Пример кода Цветной треугольник glBegin(GL_TRIANGLES) glColor2f(0.0f,1.0f); glVertex2f(50, 150); glVertex2f(200, 200); glEnd(); Внимание: операторные скобки!

Астана ( )Компьютерная графика (лекция 6) Процесс визуализации 1.Задать окно для рисования 2.Определить константные атрибуты и свойства (источники света, текстуры и т.д.) 3.На каждом кадре: 1.Очистить окно 2.Задать положение наблюдателя 3.Для каждого объекта 1.Определить преобразование 2.Передать атрибуты 3.Передать геометрию

Астана ( )Компьютерная графика (лекция 6) Преобразования в OpenGL Модельное преобразования Видовые преобразования –Ориентация камеры Проекция на плоскость камеры Перевод в систему координат устройства

Астана ( )Компьютерная графика (лекция 6) Виртуальная камера Камера Штатив Модель Видимый объем

Астана ( )Компьютерная графика (лекция 6) Виртуальная камера и преобразования Преобразование проекции –Настройка линз камеры Видовое преобразование –Изменение положения камеры в пространстве Модельное преобразование –Изменение положения модели в пространстве Оконные (viewport) преобразования –Изменение размеров готовой фотографии

Астана ( )Компьютерная графика (лекция 6) Координатные системы и преобразования Шаги для формирования изображения –Определение геометрии (мировая системы координат) –Определение камеры (видовая система координат) –Проецирование (оконная система координат) –Перевод в экранные координаты (экранная система координат) Каждый шаг использует преобразования Каждая трансформация эквивалентна изменению системы координат

Астана ( )Компьютерная графика (лекция 6) 3D преобразования Каждая вершина транформируется с помощью матриц 4x4 –Все аффиные операции – умножения матриц –Все матрицы хранятся построчно в OpenGL

Астана ( )Компьютерная графика (лекция 6) Определение преобразований в OpenGL Программист имеет два стиля определения преобразований –Определяя матрицы (glLoadMatrix, glMultMatrix) –Определяя операции (glRotate, glOrtho) Программист не обязан помнить точные формулы для вычисления матриц

Астана ( )Компьютерная графика (лекция 6) Конвейер

Астана ( )Компьютерная графика (лекция 6) Пример (1)

Астана ( )Компьютерная графика (лекция 6) Пример (2)

Астана ( )Компьютерная графика (лекция 6) Пример (3)

Астана ( )Компьютерная графика (лекция 6) Пример (4)

Астана ( )Компьютерная графика (лекция 6) Применение преобразований проекции Типичное использование glMatrixMode ( GL_PROJECTION ); glLoadIdentity (); glOrtho ( left, right, bottom, top, zNear, zFar)

Астана ( )Компьютерная графика (лекция 6) Видовые преобразования Установка «штатива» камеры, настройка объектива Чтобы «летать» по сцене –Задать видовое преобразование и перерисовать сцену gluLookAt( eye x, eye y, eye z, aim x, aim y, aim z, up x, up y, up z )

Астана ( )Компьютерная графика (лекция 6) Связь между модельным и видовыми преобразованиями Перемещение камеры = перемещение каждого объекта по отношению к фиксированной камере. Видовое преобразование эквивалентно нескольким модельным преобразованиям.

Астана ( )Компьютерная графика (лекция 6) Левая и правая системы координат Преобразования проекции используют левую систему координат –Znear и Zfar – просто расстояния от точки зрения Во всех остальных случаях OpenGL использует правую систему координат леваяправая x y z+ x y

Астана ( )Компьютерная графика (лекция 6) Принципы освещения Составляющие модели освещения OpenGL –Материал объекта определяет его своейста его поверхности –Цвет и положение источника света –Глобальные параметры освещения рассеянный свет

Астана ( )Компьютерная графика (лекция 6) Модель Фонга ambient = Ka, diffuse = Kd * cos(N, L), specular = Ks * (cos (R, V)) Ns intensity = ambient + amp * (diffuse + specular).

Астана ( )Компьютерная графика (лекция 6) Как устроено освещение в OpenGL Модель Фонга –Вычисляется на вершинах Составляющие модели освещения –Свойства материала поверхности –Свойства источника света –Свойства модели освещения

Астана ( )Компьютерная графика (лекция 6) Свойства материала Определение свойств материала для примитива glMaterialfv (face, property, value) GL_DIFFUSE GL_SPECULAR GL_AMBIENT GL_EMISSION GL_SHININESS

Астана ( )Компьютерная графика (лекция 6) Свойства источника света glLightfv ( light, property, value ) – цвет источника – положение – затухание

Астана ( )Компьютерная графика (лекция 6) Типы источников света OpenGL поддерживает два типа источников света –Локальные (точечные) источники –Бесконечно удаленные (параллельные) источники Тип определяется координатой w –w = 0 параллельный источник –W 0 точечный источник (x / w, y / w, z /w)