Математические основы программирования трехмерной графики
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Издательство Уральского университета
Год издания: 2016
Кол-во страниц: 112
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7996-1942-8
Артикул: 799105.01.99
В учебном издании рассмотрены алгоритмические основы построения и анимации трехмерных изображений. Изучается программный интерфейс, связывающий прикладную программу и систему компьютерной графики. Изложены основные математические и программные принципы создания трехмерных объектов с использованием графической библиотеки OpenGL. Сформулированы цели лабораторных работ, изложена необходимая информация для разработки графических программ визуализации анимационных трехмерных сцен. Учебно-методическое пособие предназначено для бакалавров.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство образования и науки Российской Федерации Уральский федеральный университет имени первого президента России Б. Н. Ельцина Н. В. Папуловская МАТЕМАТИЧЕСКИЕ ОСНОВЫ ПРОГРАММИРОВАНИЯ ТРЕХМЕРНОЙ ГРАФИКИ Рекомендовано методическим советом Уральского федерального университета в качестве учебно-методического пособия для студентов, обучающихся по направлению подготовки 09.03.01 «Информатика и вычислительная техника» Екатеринбург Издательство Уральского университета 2016
УДК 004.421.2:004.92-023.5(075.8) ББК 32.973я73+32.972.131.1я73 П17 Рецензенты: Урал. ин-т экономики, управления и права (завкаф. математики и естественно-научных дисциплин, доц., канд. физ.-мат. наук С. П. Трофимов); завкаф., доц., канд. техн. наук С. В. Фёдорова (НЧОУ ВО «Технический университет УГМК») Научный редактор — проф., д-р техн. наук Л. Г. Доросинский На обложке — иллюстрация Андрея Кобелева П17 Папуловская, Н. В. Математические основы программирования трехмерной графики : учебно-методической пособие / Н. В. Папуловская. — Екатеринбург : Изд-во Урал. ун-та, 2016. — 112 с. ISBN 978-5-7996-1942-8 В учебном издании рассмотрены алгоритмические основы построения и анимации трехмерных изображений. Изучается программный интерфейс, связывающий прикладную программу и систему компьютерной графики. Изложены основные математические и программные принципы создания трехмерных объектов с использованием графической библиотеки OpenGL. Сформулированы цели лабораторных работ, изложена необходимая информация для разработки графических программ визуализации анимационных трехмерных сцен. Учебно-методическое пособие предназначено для бакалавров. Библиогр.: 11 назв. Табл. 2. Рис. 43. УДК 004.421.2:004.92-023.5(075.8) ББК 32.973я73+32.972.131.1я73 ISBN 978-5-7996-1942-8 © Уральский федеральный университет, 2016 © Кобелев А., иллюстрации, 2016
ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ .............................................................................5 ВВЕДЕНИЕ .....................................................................................7 РАЗДЕЛ А. ОСНОВЫ ПОСТРОЕНИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ .......................................................................................10 Глава 1. Математический аппарат ...................................................10 1.1. Фреймы ..................................................................................10 1.2. Однородная система координат ...........................................11 1.3. Переход из одного фрейма в другой .....................................13 1.4. Аффинные преобразования ..................................................16 1.5. Преобразования в однородных координатах .......................20 1.5. Преобразование фрейма в графической системе ................24 Упражнения к главе 1 ..................................................................24 Глава 2. Проецирование ..................................................................25 2.1. Классическая и компьютерная визуализация ......................25 2.2. Проективное преобразование ...............................................28 2.3. Матрица параллельного проецирования .............................30 2.4. Матрица перспективного проецирования ...........................34 2.5. Проецирование и формирование теней ...............................37 Упражнения к главе 2 ..................................................................40 Глава 3. Закрашивание .....................................................................41 3.1. Свет и материя .......................................................................41 3.3. Модель отражения Фонга .....................................................51 3.4. Модель направленного света ................................................53 3.5. Прозрачность объекта ...........................................................56
Оглавление Упражнения к главе 3 ..................................................................61 Глава 4. Вычисление векторов .........................................................62 4.1. Вектор нормали к поверхности ............................................62 4.2. Вектор отражения..................................................................65 4.3. Вектор половинного направления .......................................67 Упражнения к главе 4 ..................................................................67 РАЗДЕЛ Б. ОСНОВЫ ПРОГРАММИРОВАНИЯ ГРАФИЧЕСКИХ ОБРАЗОВ ...........................................................69 Глава 5. Графическая библиотека OpenGL .....................................69 5.1. Подключение библиотеки OpenGL и начальная настройка формы проекта .............................................................................69 5.2. Использование дополнительных библиотек ........................70 5.3. Синтаксис команд OpenGL ..................................................72 5.4. Рисование примитивов .........................................................73 5.5. Визуализация сцены .............................................................74 5.6. Видовые преобразования .....................................................78 5.7. Аффинные преобразования ..................................................79 Глава 6. Лабораторный практикум ..................................................80 Правила оформления отчета .......................................................80 Лабораторная работа № 1. Синусоида ........................................82 Лабораторная работа № 2. Куб ....................................................83 Лабораторная работа № 3. Анимация .........................................83 Лабораторная работа № 4. Свет ..................................................85 Лабораторная работа № 5. Прозрачность ...................................88 Лабораторная работа № 6. Текстуры ..........................................92 Лабораторная работа № 7. Интерактивная графика ..................96 СЛОВАРЬ СПЕЦИАЛЬНЫХ ТЕРМИНОВ И ПОНЯТИЙ .........101 РЕКОМЕНДУЕМЫЙ БИБЛИОГРАФИЧЕСКИЙ СПИСОК .........................................................................................110
ПРЕДИСЛОВИЕ Д анное учебное пособие представляет собой вводный курс программирования компьютерной графики. Он включает описа ние основных понятий формирования трехмерных объектов и сцен. Изучается программный интерфейс, позволяющий осуществлять взаимодействие прикладной программе с оборудованием современного компьютера. Методические указания к лабораторному практикуму являются вспомогательным материалом для изучения технологии программирования трехмерной графики и содержат справочную информацию по графической библиотеке OpenGL и вспомогательным библиотекам. Пособие состоит из трех разделов. В разделе А представлен мате матический аппарат, используемый при построении компьютерной графики. В первой главе вводятся основные математические понятия. Данный математический аппарат заимствован из векторного анализа и линейной алгебры. Однако в компьютерной графике его принято излагать иначе. Если в курсе математики студенты изучают сначала линейную алгебру, а затем знакомятся с векторными пространствами, то в математике для построения графики все наоборот. Сначала будет рассмотрено представление объектов в математических пространствах, которое приводит к использованию линейной алгебры. Использование подхода описания объектов, независящих от координат, вызвано желанием показать, что все базовые концепции геометрических объектов не зависят от способа преобразований. Такой подход используется в объектно ориентированном программировании, где работа осуществляется над объектами, а не над способами их представления.
ПредислОвие Вторая глава посвящена проецированию и описанию стандартных проективных преобразований. В графических системах организация проективных преобразований отдается прикладной программе. Конечно, современные графические API избавляют прикладного программиста от забот, связанных с созданием собственных средств выполнения проективных преобразований. Однако знание основ этого процесса помогает понять, как в графической системе работает конвейер обработки данных, базирующийся на операциях с 4×4 матрицами. В третьей главе пособия рассматривается физика взаимодействия света с поверхностями объектов, модель освещения и распространения света, которая отвечает требованиям конвейерной архитектуры графической системы. В четвертой главе описывается вычисление векторов, необходи мых для формирования теней и реалистичного закрашивания объектов сцены. Каждая глава содержит упражнения для самостоятельной работы, призванные закрепить теоретический материал. Следующий раздел пособия (раздел Б) является практико-ориенти рованным, и он посвящен основам программирования графических приложений в графической стандарте OpenGL. Материал, изложенный в пособии, позволяет приступить к самосто ятельной разработке несложных графических приложений. Для этого в пособии размещен лабораторный практикум. Заключительная глава раздела Б содержит требования к оформле нию отчета о проделанной работе. Завершает пособие словарь специальных терминов и понятий. В результате выполнения цикла лабораторных работ сформируют ся навыки разработки приложения, содержащего трехмерную анимационную сцену. Лабораторный практикум построен на принципе от простого к сложному. Добавление элементов и составляющих графический образ позволяет изучить основы компьютерной графики и одновременно продемонстрировать возможности графической библиотеки. Выбор графических объектов, характеристик источников света, свойств материалов и текстур осуществляется обучаемым самостоятельно, тем самым не ограничивает его творчество.
ВВЕДЕНИЕ С тремительное развитие информационных и телекоммуникационных технологий не только изменило потребности человече ства, но и повлияло на мировоззрение людей. В таких областях, как игровая индустрия, кинематография, средства массовой информации, финансовый сектор и образование, внедрение современных компьютерных технологий уже произвели поистине революционный переворот. Следующим шагом на этом пути становится интернет-вещей. Интеграция в единую систему компонентов компьютерной графики, сетевых технологий и систем машинного зрения открыла новые пути передачи и отображения информации. Массовая доступность электронных устройств и разработка приложений с использованием широчайших возможностей компьютерной графики и звука позволяет говорить о новом уровне организации взаимодействия человека и машины. Компьютерная графика, как наука, начала развиваться около 50– 60 лет назад. В те годы удавалось добиться отображения нескольких десятков отрезков на экране электронно-лучевой трубки, а современные графические системы позволяют синтезировать изображения, неотличимые по качеству от созданных профессиональной камерой. Общепринятой практикой стало обучение с помощью систем моделирования виртуальной реальности и симуляторов. Такие системы созданы для обучения пилотов самолета, водителей автотранспорта, машинистов поездов. Будущие врачи практикуются делать операции на специальном виртуальном оборудовании. На экран выходят полнометражные фильмы, в которых нет ни одного снятого кадра, все действие смоделировано в памяти компьютера. В области программного обеспечения также произошли серьезные изменения. Появились гра
введение фические стандарты. Библиотека OpenGL (Open Graphic Library) стала стандартным интерфейсом для программистов как при написании прикладных программ, так и при разработке программных продуктов высокого класса — от интерактивных игр до систем визуализации результатов научных исследований. Математическая база компьютерного моделирования существен но отличается от математической теории, используемой в инженерной графике. И на это есть свои причины. Основное отличие связано с необходимостью различать математи ческое описание точки от вектора. Из аналитической геометрии точка — абстрактный объект в про странстве, не имеющий никаких измеримых характеристик, кроме координат. Вектор (от лат. vector «несущий») — математический объект, характеризующийся величиной и направлением. В математической теории компьютерной графики понятие «вектор» трактуется как направленный отрезок прямой, представленный совокупностью n чисел. Все графические объекты компьютерной графики описываются множеством вершин. Под вершиной (англ. vertex) понимается структура данных, которая описывает положение точки в 2D- или 3D-пространстве. Чтобы понять, как в программе формируются графические объек ты, нужно знать методы представления в графической системе вершин (точек в пространстве). Математическое обеспечение систем компьютерной графики — это совокупность методов представления и манипулирования множеством геометрических элементов, главными из которых являются точки и отрезки прямых [11]. Эти методы базируются на свойствах линейного (векторного), аффинного и евклидова пространства. Векторное пространство содержит объекты двух типов: скаляры и векторы. В аффинном пространстве к ним добавляется третий тип объектов — точка. В евклидовом пространстве вводится понятие расстояния. Предполагаем, что читатели данного пособия имеют представление о скалярном поле и векторном пространстве. В векторном пространстве отсутствуют такие понятия, как положение и расстояние. Если в качестве пространства для решения геометрических задач компьютерной графики использовать векторное пространство, то мы встретимся со множеством проблем. Одна из них заключается в том, что векторы являются свободными, т. е. не имеют точки приложения. В результате в векторном пространстве отсутствует возможность опреде
Введение лить особую точку, к которой должны быть привязаны базисные векторы. Эта проблема решается вводом в векторное пространство еще одного типа объектов — точки. Такое «дополнение» векторного пространства получило название аффинного. В аффинном пространстве возникает понятие фрейма как совокупности точки отчета и базисных векторов. Отказ от знакомого со школьной скамьи понятия системы координат в пользу понятия фрейма позволяет избежать трудностей при работе с векторами. Более того, концепция фрейма позволяет использовать единый математический аппарат матричной алгебры для манипуляции с точками и векторами, сохраняя при этом различие между двумя типами геометрических объектов. Хотя аффинное пространство и содержит все элементы, необходимые для построения геометрических моделей, в нем отсутствует понятие расстояния между двумя точками, а следовательно, и понятие длины вектора. Аффинное пространство, дополненное понятием расстояния, превращается в евклидово. В евклидовом пространстве вводится новая операция — скалярное произведение, операндами которой являются векторы, а результатом — скаляр. Операция скалярного произведения дает нам меру угла между двумя векторами. Проблема различия представления вектора и точки привела к воз никновению понятия однородных координат. В системе однородных координат для представления точки и векторов трехмерного пространства используются четырехмерные матрицы-столбцы. В пособии подробно описан математический аппарат и преимущества его использования для программирования компьютерной графики. Пользуясь математическим аппаратом однородных координат, можно выполнять операции над точками и векторами с помощью обычных операций матричной алгебры. Из пособия вы узнаете, почему при использовании четырех измерений количество арифметических операций даже снижается.
РАЗДЕЛ А. ОСНОВЫ ПОСТРОЕНИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ Глава 1. Математический аппарат 1.1. Фреймы В трехмерном векторном пространстве любой вектор s можно одно значно представить в виде линейной комбинации трех линейно-независимых векторов v1, v2, v3: s v v v = + + a a a 1 1 2 2 3 3 . Скаляры α1, α2, α3 — это координаты вектора s в базисе в v1, v2, v3. Можно записать представление вектора в матричной форме s v v v T = й л к к к щ ы ъ ъ ъ a 1 2 3 a = й л к к к щ ы ъ ъ ъ a a a 1 2 3 . При этом базис определяет конкретную систему координат. Мы привыкли рисовать систему координат на бумаге в виде трех векторов, которые исходят из одной точки (рис. 1.1, а). Однако векторы, как геометрические объекты, не имеют точки приложения, а характеризуются только направлением и модулем. Следовательно, с точки зрения математики векторы на рис. 1.1, б эквивалентны векторам рис. 1.1, а.