Главная страница
Навигация по странице:

  • Литература

  • Геометрические модели

  • Материалы и текстуры

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

  • Вэа и модействие

  • Выводе

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

  • Руководство по работе с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса Компьютерная графика


    Скачать 0.66 Mb.
    НазваниеРуководство по работе с графической библиотекой OpenGL. Руководство разработано с учетом опыта чтения курса Компьютерная графика
    Дата21.10.2022
    Размер0.66 Mb.
    Формат файлаdocx
    Имя файла221937-83556.docx
    ТипРуководство
    #747097
    страница2 из 30
    1   2   3   4   5   6   7   8   9   ...   30
    B. Примеры практических заданий 201

    B.l. Cornell Box 201

    1. Виртуальные часы 204

    2. Интерактивный ландшафт 206

    Литература 215

    Предметный указатель 217

    Предисловие

    Компьютерная (машинная) графика очень молодая дисци­плина. Появление машинной графики как научно-исследователь­ского направления обычно связывают с именем Айвена Сазер-ленда (Ivan Sutherland), который в 1963 г. опубликовал статью с результатами своей диссертационной работы. В 1967 г. была образована профессиональная группа АСМ SIGGRAPH. В ран­ний период развития машинной графики ассоциация SIGGRAPH развивалась как научно-техническая организация. В 1983 г. был сформирован Комитет SIGGRAPH по образованию для совер­шенствования обучения машинной графике и использования ее в учебном процессе.

    Мы стали свидетелями драматических изменений, которые произошли в компьютерной графике в 1990-е годы. Если в кон­це 80-х графические рабочие станции стоили безумно дорого и работать с ними могли только в очень богатых организациях (как правило из ВПК), то в конце 1990-х графические станции с вполне удовлетворительными возможностями за 1000 USD ста­ли доступны университетам и даже отдельным студентам. Если в 1980-е использовалась преимущественно векторная графика, то в конце 1990-х растровая полноцветная графика почти пол­ностью вытеснила векторную. Трехмерная графика стала столь же распространенной, как двухмерная, поскольку появились и быстро совершенствуются видеоплаты с графическими ускори-

    7

    8

    Оглавление

    телями и z-буфером.

    Параллельно с изменениями графической аппаратуры про­исходили глубокие метаморфозы в программном обеспечении. Вслед за широким распространением в 1970-е годы графических библиотек (в основном векторных, в большинстве своем фор-транных) в 1980-е годы потребовалось несколько этапов стандар­тизации графического обеспечения (Core System, PHIGS, GKS), чтобы к середине 1990-х прийти к Открытой Графической Биб­лиотеке (OpenGL). В настоящее время многие функции этой биб­лиотеки реализованы аппаратно.

    Все эти процессы не могли не сказаться на преподавании компьютерной графики в университетах. Однако, даже в США до конца 1970-х годов машинная графика оставалась необыч­ным предметом среди университетских курсов. В учебных пла­нах АСМ 1978 г. машинная графика отсутствовала. В 1980-е го­ды и в первой половине 1990-х целью курса было изучение и про­граммирование базовых алгоритмов графики (рисование прямой и кривой, клиппирование, штриховка или растеризация много­угольника, однородные координаты и аффинные преобразова­ния, видовые преобразования) [1, 2]. Теперь, при наличии интер­фейса прикладного программирования (API) высокого уровня, когда элементарные функции имеются в библиотеке OpenGL и зачастую реализуются аппаратно, пришлось пересмотреть кон­цепцию курса. В самом деле, зачем учиться умножать столби­ком, если у каждого в руках калькулятор. Появилась возмож­ность включить в курс более сложные и более современные раз­делы компьютерной графики, такие как текстурирование, ани­мация. Именно в соответствии с этой общемировой тенденцией эволюционировал курс компьютерной графики на факультете ВМиК МГУ (с 1999 г. интернет-версию курса можно найти на сайте http://courses.graphicon.ru).

    Следуя принципу "учись, делая"(learning-by-doing), мы, кро­ме традиционных лекций, включаем в курс выполнение 5-6 неболь-

    Оглавление

    9

    ших проектов, каждый продолжительностью две недели. (При­меры таких заданий вы найдете в этой книге.) Настоящая книга призвана помочь студентам в выполнении этих проектов. В от­личие от других справочных публикаций по OpenGL, в книге говориться не только о том, что имеется в библиотеке, но и о том, как этими средствами эффективно пользоваться. Напри­мер, как визуализировать зеркальные объекты, как построить тени.

    Моделируя реальную рабочую среду, мы учим студентов са­мостоятельной работе. В этих условиях пособие по использова­нию открытой графической библиотеки играет важную роль.

    Авторы благодарны Е. Костиковой и К. Каштановой за по­мощь в подготовке текста и иллюстраций.

    Ю.М. Банковский Апрель 2007 года


    Введение

    Все, что мы видим на экране компьютерного монитора, яв­ляется результатом работы алгоритмов синтеза изображений. Эти алгоритмы решают такие задачи, как визуализация тек­ста с использованием заданного набор шрифтов, отображение указателя курсора, рисование вспомогательных элементов гра­фического интерфейса, визуализацию изображений. Кроме это­го, алгоритмы синтеза решают задачи визуализации трехмерных данных, например, с целью создания интерактивной фотореали­стичной анимации, либо для наглядного представления резуль­татов каких-либо вычислений.

    Для облегчения выполнения программистами таких задач еще в 80-х годах 20-го века стали появляться программные ин­струментарии (библиотеки), содержащие в себе наборы базо­вых алгоритмов (таких, как визуализация простых геометриче­ских объектов), что позволило перейти на более высокий уро­вень абстракции при решении прикладных задач. В настоящее время программирование графических алгоритмов немыслимо без использования специальных программных инструментариев, также называемых прикладными программными интерфейсами (API — Application Programming Interface).

    OpenGL является одним из самых популярных прикладных программных интерфейсов для разработки приложений в обла­сти двухмерной и трехмерной графики.

    11

    12

    Оглавление

    Стандарт OpenGL (Open Graphics Library — открытая гра­фическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обес­печения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Осно­вой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.

    Библиотека насчитывает около 120 различных команд, кото­рые программист использует для задания объектов и операций, необходимых для написания интерактивных графических при­ложений.

    На сегодняшний день графическая система OpenGL под­держивается большинством производителей аппаратных и про­граммных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свобод­но распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

    Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, яв­ляются:

    • Стабильность. Дополнения и изменения в стандарте реа­лизуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.

    • Надежность и переносимость. Приложения, использую­щие OpenGL, гарантируют одинаковый визуальный ре­зультат вне зависимости от типа используемой операци­онной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах.

    Оглавление

    13

    Легкость применения. Стандарт OpenGL имеет продуман­ную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с ис­пользованием других графических библиотек. Необходи­мые функции для обеспечения совместимости с различ­ным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.

    Наличие хорошего базового пакета для работы с трехмерны­ми приложениями упрощает понимание студентами ключевых тем курса компьютерной графики — моделирование трехмерных объектов, закрашивание, текстурирование, анимацию и т.д. Ши­рокие функциональные возможности OpenGL служат хорошим фундаментом для изложения теоретических и практических ас­пектов предмета.

    Книга состоит из трех частей и двух приложений. Первая часть посвящена непосредственно описанию работы с библиоте­кой, основным командам и переменным. Во второй части рас­сматриваются принципы реализации более сложных алгоритмов компьютерной графики с помощью средств OpenGL. В третьей части приводится описание настройки работы с OpenGL в раз­личных интегрированных средах программирования и создание приложений, применяющих OpenGL для синтеза изображений. В приложениях можно найти демонстрационные программы на OpenGL и примеры практических заданий для самоконтроля.

    В пособии рассматривается стандарт OpenGL 1.2.


    Часть I

    Основы OpenGL
    Глава 1.

    Графический процесс и OpenGL

    Прежде чем перейти к описанию функций OpenGL, необхо­димо понять ее место в процессе формирования изображения на экране, определить область, задачи которой можно решать с по­мощью библиотеки.

    1.1. Графический процесс

    Традиционной задачей компьютерной графики является син­тез изображений объектов реального мира (как существующих, так и воображаемых). Для того, чтобы сделать такой синтез воз­можным, на входе алгоритма необходимы следующие данные:

    Геометрические модели задают форму и внутреннюю струк­туру объекта, обычно в трехмерном евклидовом простран­стве. Примеры простых моделей:

    сфера, заданная с помощью положения центра и ра­диуса;

    17

    18

    Глава 1. Графический процесс и OPENGL

    куб, заданный через положение центра и длины ребра.

    Анимация служит для задания модели движения, изменения формы или материала объекта с течением времени. На­пример, продольное перемещение объекта вдоль оси х со скоростью s м/с может быть задано с помощью формулы: x(t) = st.

    Материалы и текстуры определяют, как поверхность объек­та взаимодействует со светом. Материалы необходимы для получения изображения объекта, с их помощью вычисля­ется количество отраженного света, попадающего в «глаз» виртуального наблюдателя. Простейшая модель материа­ла— цвет объекта.

    Освещение задает расположение и характеристики источников света, что в совокупности с материалом позволяет высчи­тать цвет каждой точки объекта, изображение которого требуется построить. Пример модели освещения: солнце, задаваемое направлением и мощностью излучения.

    Виртуальная камера определяет, как трехмерные данные бу­дут отображаться (проецироваться) на двухмерное изобра­жение.

    Заметим, что для задач, не требующих реалистичности по­лучаемого изображения (например, научная визуализация), ма­териалы могут сводиться к простейшим формам, например, к разным цветам объектов, а освещение — отсутствовать.

    Далее в дело вступает алгоритм синтеза изображений, в опи­сываемом частном случае называемый процессом экранизации (rendering). Имея на входе набор моделей, алгоритм должен по­строить соответствующее изображение на экране монитора.

    Описанная схема графической обработки от получения гео­метрической модели объекта до синтеза изображения на экране называется графическим процессом.

    1.2. Геометрические модели

    19

    Остановимся более подробно на том, какую помощь OpenGL оказывает в реализации графического процесса.

    Вэа и модействие

    чт-

    Получение/—' N. .
    эа-рузка ^


    Редактирование и обработка

    данных П/'

    Экранизация

    Выводе буфер кадраг

    Вывод на


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

    OpenGL

    Оконная подсистема

    Рис. 1.1. Графический процесс и место OpenGL в нем.

    1.2. Геометрические модели

    В компьютерной графике используется большое количество разнообразных моделей для описания формы. Причиной этого является очевидная невозможность полностью оцифровать ре­альный объект. Следовательно, необходимо выбирать те особен­ности объекта, которые важны для конкретной задачи и задан­ного класса объектов. В частности, модели можно поделить на объемные и граничные. Объемные модели позволяют описать внутренность объекта, а граничные — геометрические свойства поверхности. Пример объемной модели показан на рисунке 1.2.

    В настоящее время наибольшую популярность завоевали гра­ничные модели, получаемые с помощью локальной кусочно-линейной аппроксимации поверхности. Такая модель представ­ляет собой набор связанных через общие вершины многоугольни­ков (полигонов), поэтому эти модели еще называет полигональ-

    1   2   3   4   5   6   7   8   9   ...   30


    написать администратору сайта