
- •1. Зарождение компьютерной графики.
- •2. 1960-е годы. Становление КГ.
- •1.2. Области применения компьютерной графики
- •1.4. Устройства вывода компьютерной графики
- •Контрольные вопросы и упражнения
- •2. АРХИТЕКТУРА ГРАФИЧЕСКИХ РАБОЧИХ СТАНЦИЙ
- •2.1. Рабочие станции
- •2.2. Графический ускоритель
- •2.4. Технология 3D-графики
- •Контрольные вопросы и упражнения
- •3.1. Общие положения методов представления видеоинформации
- •3.2. Алгоритмы архивации без потерь
- •3.3. Алгоритмы архивации с потерями
- •Контрольные вопросы и упражнения
- •4. ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ
- •4.1. Представление моделей
- •4.2. Способы представления объектов
- •Представление поверхностных моделей
- •4.4. Алгоритмы построения геометрических моделей тел
- •4.4.1. Построение правильных многогранников
- •4.4.2. Построение икосаэдра
- •4.4.3. Построение додекаэдра и сферы
- •Аффинные преобразования на плоскости
- •Однородные координаты точки
- •Аффинные преобразования в пространстве
- •Изометрическая проекция
- •Пример:
- •Перспективная проекция
- •5.4. Этапы создания графического объекта
- •Преобразования положения объекта
- •5.5. Работа с матрицами и векторами
- •Контрольные вопросы и упражнения
- •6.1.2. Простой метод устранения ступенчатости
- •6.1.3. Алгоритм Ву для растеризации отрезка с антиалиасингом
- •6.3. Закраска области, заданной цветом границы
- •Контрольные вопросы и упражнения
- •7. ЗАДАЧА ОТСЕЧЕНИЯ
- •7.1. Отсечение отрезков
- •7.1.4. Двумерный алгоритм Кируса-Бека
- •7.1.5. Проверка выпуклости и определение нормалей
- •7.2. Разбиение невыпуклых многоугольников
- •Алгоритм Сазерленда-Ходгмана
- •Контрольные вопросы и упражнения
- •8.4. Задача вычисления точек пересечений
- •8.4.1. Пересечение луча со сферой
- •8.4.3. Пересечение луча с многоугольником
- •8.4.4. Пересечение луча с треугольником
- •Решение будет состоять из следующих шагов:
- •Если мы вычислим единичные векторы Pa1, Pa2, Pa3
- •тогда углы будут равны
- •8.4.5. Пересечение с прямоугольным параллелепипедом
- •Контрольные вопросы и упражнения
- •9. АЛГОРИТМЫ УДАЛЕНИЯ СКРЫТЫХ ЛИНИЙ И ПОВЕРХНОСТЕЙ
- •9.1. Классификация методов удаления невидимых частей
- •9.2.1. Отсечение нелицевых граней
- •9.2.2. Ограничивающие тела (Bounding Volumes)
- •9.2.4. Иерархические структуры (Hierarchies)
- •9.3. Алгоритмы удаления линий
- •9.4.1. Алгоритм удаления поверхностей с Z-буфером
- •Построчный z-буфер
- •9.4.2. Алгоритм разбиения области Варнока
- •9.4.3. Построчный алгоритм Уоткинса
- •9.4.4. Алгоритм трассировки лучей
- •9.4.5. Алгоритмы упорядочения
- •9.4.6. Метод сортировки по глубине. Алгоритм художника
- •9.4.7. Метод двоичного разбиения пространства
- •9.5. Пример реализации алгоритма удаления невидимых граней
- •Контрольные вопросы и упражнения
- •10. ПОСТРОЕНИЕ РЕАЛИСТИЧЕСКИХ ИЗОБРАЖЕНИЙ
- •10.1. Модели освещения
- •10.1.1. Механизм диффузного и зеркального отражения света
- •10.1.2. Модели закраски
- •10.1.3. Прозрачность
- •10.1.4. Тени
- •10.2. Фактура (текстурирование)
- •10.4. Трассировка лучей
- •10.5. Излучательность
- •Контрольные вопросы и упражнения
- •11. ИНТЕРАКТИВНЫЕ СИСТЕМЫ. СОВРЕМЕННЫЕ СТАНДАРТЫ 3D-ГРАФИКИ
- •Аппаратно-независимые графические протоколы
- •Контрольные вопросы и упражнения
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
- •ИСТОЧНИКИ ИНТЕРНЕТ

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Брянский государственный технический университет
С.М. Брундасов
КОМПЬЮТЕРНАЯ ГРАФИКА
Утверждено редакционно-издательским советом в качестве учебного пособия
Брянск Издательство БГТУ
2005
2
УДК 004.9 (075)
ISBN
Брундасов, С.М. Компьютерная графика: учеб. пособие / С.М. Брундасов. - Брянск: БГТУ, 2004. - 241 с.
Учебное пособие представляет собой семестровый курс лекций. Дается общее введение в компьютерную графику. Содержится описание основных алгоритмов компьютерной графики, включая алгоритмы реалистичного представления сцен. Важную часть пособия составляют практические реализации алгоритмов на языке С++.
Учебное пособие предназначено для студентов специальности 220400 “Программное обеспечение вычислительной техники и автоматизированных систем”.
Научный редактор: кт.н., доц. Д.И. Копелиович
Рецензенты: каф. «Информатики и прикладной математики» Брянского государственного университета; зав. каф. «Сопротивление материалов и строительная
механика» Брянской государственной инженернотехнологической академии д.т.н., проф. И.Н. Серпик
ISBN
©Брянскийгосударственный техническийуниверситет
3
ПРЕДИСЛОВИЕ
Компьютерная, или машинная графика, – это самостоятельная область деятельности, со своими проблемами и спецификой, насчитывающая более 50 лет истории.
Машина наглядно изображает такие сложные геометрические объекты, которые раньше математики не изображали. Основными задачами машинной графики являются ввод в ЭВМ графической информации и вывод ее из ЭВМ (формирование изображений, а также определенного рода переработка информации в компьютере). Таким образом, основные задачи машинной геометрии, или, как говорят, автоматизированного геометрического моделирования и конструирования, – синтез в ЭВМ и анализ геометрических объектов, решение задач геометрического характера.
Разработав методы точного аналитического описания кривых и поверхностей, мы можем решать задачу об их синтезе, а именно задачу о построении кривой или поверхности по заданным условиям. Эти условия могут быть определены точно (кривая или поверхность должна проходить через заданные опорные точки, иметь непрерывную кривизну и т. п.) или иметь вид эстетических требований, таких как красота и другие неформализуемые свойства.
Понятно, какое значение может иметь машинная графика при проектировании новых изделий, в любой области: от технической до искусства.
Цель этого учебного пособия – дать обзор основных результатов, полученных в этой области. Поэтому мы начинаем с краткого изложения основных понятий и направлений компьютерной графики, даем немного информации о технической поддержке и оборудовании и заканчиваем большим разделом, посвященным математическим основам и алгоритмической реализации компьютерной графики. Пособие рассчитано на читателя, уже знакомого с некоторыми понятиями алгебры и геометрии, такими как векторы, матрицы, операции с векторами и матрицами, также с алгоритмическим программированием.
Излагаемый материал построен на базе курса лекций по компьютерной графике к.т.н. кафедры ИиПО БГТУ Брундасова С.М., а также на основе литературы и электронных источников. В основную программу курса входит широкий круг вопросов: от графических примитивов до построения фотореалистичных изображения.
4
Также прилагаются примеры программ по темам компьютерной графики. Изучение данного предмета требует практических навыков, а потому рекомендуется выполнять те упражнения, задания и тесты, которые даны в конце каждой главы.
5
1. ОСНОВНЫЕ ПОЛОЖЕНИЯ И ИСТОРИЯ РАЗВИТИЯ КОМПЬЮТЕРНОЙ ГРАФИКИ
Компьютерная графика (КГ) – это область информатики,
включающая все аспекты формирования изображений с помощью компьютеров. В том случае, если пользователь может управлять характеристиками объектов, говорят об интерактивной компьютерной графике.
Эта область начала развиваться около 40 лет назад. В те годы удалось добиться отображения нескольких десятков отрезков на экране электронно-лучевой трубки (ЭЛТ), а современные системы машинной графики позволяют создавать изображения, практически неотличимые по качеству от фотографических снимков.
При обработке информации, связанной с изображением на мониторе, принято выделять три основных направления: распознавание образов, обработку изображений и машинную графику.
Основная задача распознавания образов состоит в преобразовании уже имеющегося изображения на формально понятный язык символов. Распознавание образов, или система технического зре-
ния (COMPUTER VISION), – совокупность методов, позволяющих получить описание изображения, поданного на вход, либо отнести заданное изображение к некоторому классу (так поступают, например, при сортировке почты). Одной из задач COMPUTER VISION является так называемая «скелетизация» объектов, при которой восстанавливается некая основа объекта, его «скелет».
Обработка изображений (IMAGE PROCESSING) рассматри-
вает задачи, в которых и входные, и выходные данные являются изображениями, например, передача изображения с устранением шумов и сжатием данных, переход от одного вида изображения к другому (от цветного к черно-белому) и т.д.
Компьютерная (машинная) графика (COMPUTER GRAPHICS) воспроизводит изображение в случае, когда исходной является информация неизобразительной природы, например визуализация экспериментальных данных в виде графиков, гистограмм или диаграмм, вывод информации на экран в компьютерных играх, синтез сцен на тренажерах.
6
1.1. История развития компьютерной графики
История компьютерной графики (КГ) тесно связана с этапами развития аппаратного обеспечения вычислительной техники, а также практическими потребностями, обусловившими ее области применения. Рассмотрим основные вехи ее развития.
1. Зарождение компьютерной графики.
Первые системы компьютерной графики появились вместе с первыми цифровыми компьютерами. Началом эры КГ можно считать проект 1950 года WHIRLWIND ("вихрь") Массачусетского технологического института. Его система уже имела дисплей. Этого оказалось достаточно, чтобы пробудить интерес к компьютеру. Было ясно, что дисплеи привлекают внимание потенциальных пользователей, а компьютерное кодирование - нет. WHIRLWIND стал основой создания опытного образца системы воздушной защиты как средства преобразования данных, полученных от радара, в наглядную форму.
2. 1960-е годы. Становление КГ.
Новаторская работа Айвена (Ивана) Сазерленда наметила первую веху в КГ. Его докторская диссертация 1963 года явилась теоретической основой для программного обеспечения компьютерной графики. Середина 1960-х – период плодотворной работы и в промышленных приложениях КГ. Сначала появилась цифровая электронная чертежная машина фирмы Itek, которая стала основой для серии систем интерактивной графики компании Control Data Corp. В 1964 году General Motors представила свою DAC-1 – систему автоматизированного проектирования, разработанную совместно с IBM. В следующем году появился прототип системы числового программного управления для фирмы Lockheed. К октябрю 1966 года даже Wall Street Journal уже публиковал статьи о КГ.
Первые запоминающие электронно-лучевые трубки появились в 1968 году, когда фирма Computer Displays создала систему ARDS, а Computek – свою серию 400. Оба терминала использовали дисплей с запоминающей трубкой размером 6 на 8 дюймов и стоимостью 12 000$. Эти трубки оказали серьезное влияние на становление КГ. Стоимость часа машинного времени доходила тогда до 250$, системы на запоминающих трубках могли использоваться в комплексах со стоимостью часа от 10 до 30 долл. Предприятия, использующие другие технологии (трубки с регенерацией, сканирующие преобразовате-
7
ли, плазменные дисплеи и цифровые телевизоры), начали предлагать терминалы по столь же низкой цене.
3.1970-e. Системы "под ключ" и растровые системы.
Вконце шестидесятых - начале семидесятых годов в области КГ начали работать новые фирмы. Если ранее для выполнения какихлибо работ покупателям приходилось устанавливать уникальное оборудование и разрабатывать новое программное обеспечение, то с появлением разнообразных пакетов программ, облегчающих процесс создания изображений, чертежей и интерфейсов, ситуация существенно изменилась. За десятилетие системы "под ключ" стали настолько совершенны, что почти полностью изолировали пользователя от проблем, связанных с программным обеспечением. Итогом десятилетия для покупателей стали "проблемно-ориентированные устройства", специально предназначенные для решения конкретной задачи.
Вконце семидесятых годов в КГ произошли значительные изменения. Память для дисплеев стала дешевле, появилась возможность создания растровых дисплеев, имеющих множество преимуществ: вывод больших массивов данных, устойчивое, немерцающее изображение, работа с цветом и недорогие мониторы. Впервые стало возможно получение блестящей цветовой гаммы.
Устройства ввода в ранних системах компьютерной графики ограничивались клавиатурой и световыми перьями. В 1970-х этот список расширился и пополнился мышью, трекболом, графическими планшетами и дигитайзерами, а также сенсорными устройствами. Высокоскоростные электростатические графопостроители позволяли быстро получать высококачественные монохромные копии. Менее дорогие многоперьевые крупноформатные электромеханические графопостроители формировали цветные копии. Ленточные регистраторы и струйные графопостроители также стали использоваться для получения цветных изображений.
Возможно, наиболее знаменательным событием было создание в конце семидесятых годов персонального компьютера. В 1977 году Commodore выпустила свой РЕТ (персональный электронный делопроизводитель), а компания Apple создала Apple-II. ПК стимулировали процесс разработки периферийных устройств: недорогих графопостроителей и графических планшетов.
8
4.1980-e. Уменьшение соотношения ”цена/производительность”.
Ввосьмидесятые полного расцвета достигло появившееся несколько ранее первое приложение – "убийца" компьютерной графики как чистой технологии. Речь идет о системах автоматизированного проектирования и производства – об одном из первых применений КГ, способном вернуть сделанные в нее капиталовложения. Развитие систем CAD/CAM начиналось с мэйнфреймов, работающих с каркасными моделями, визуализируемыми с помощью обычных или интеллектуальных терминалов. К середине восьмидесятых рабочие станции стали уже обычным средством.
Конечно, ПК развивались как важная часть компьютерной графики, особенно с появлением в 1984 году моделей Apple Macintosh с графическим интерфейсом пользователя. Первоначально областью применения ПК были не графические приложения, а работа с текстовыми процессорами и электронными таблицами, однако его возможности как графического устройства побуждали к разработке относительно недорогих программ как в области CAD/CAM, так и в более общих областях бизнеса и искусства.
Кконцу десятилетия программное обеспечение имелось для всех сфер применения: от комплексов управления до настольных издательских систем.
Эти годы характеризовались существенным повышением производительности и снижением отношения «цена/производительность». Высокопроизводительные рабочие станции стоимостью от 30 до 100 тысяч долл. приобрели возможности вывода фотореалистических изображений в реальном масштабе времени. Параллельные процессоры и графические ускорители позволяли повышать производительность.
Манипулятор "мышь" стал естественным графическим устройством ввода, наряду с сенсорными системами, которые также нашли свое место в числе оборудования КГ. Вследствие появления интереса к работе с трехмерными изображениями возникли соответствующие устройства ввода: приборы типа spaceball фирмы Spaceball Technologies, обладающего шестью степенями свободы; "Bird" фирмы Ascension Technology – сенсорное устройство позиционирования вместе с разнообразными очками, реагирующими на положение руки
идвижение пальца руки.
9
Вконце десятилетия акцент сдвинулся в сторону обработки, хранения и передачи сканируемых пиксельных изображений. Стала более реальной возможность создания стереоизображений. Ранние системы использовали двухцветную (обычно красный и зеленый цвета) технику, которая ограничивала возможность воспроизведения реальности, а также объемные и дорогие вибрирующие мембраны. К 1989 году стало возможно за 2 000$ купить стереоскопические очки или полноэкранный жидкокристаллический дисплей с поляризующими панелями. Очки имели компактную батарейку возле ушной раковины и были связаны с терминалом посредством беспроволочного инфракрасного соединения. Следствием этого стало широкое внедрение стереоскопического программного обеспечения в приложения, использующие трехмерную визуализацию, например при моделировании молекул.
Вопреки постоянным прогнозам о приближающемся конце твердых копий почти все технологии построения цветных твердых копий приобрели популярность, включая перьевые графопостроители, электростатические и струйные принтеры. В эти же годы получили развитие системы формирования объемных твердых копий. Некоторые системы "выращивали" трехмерные объекты в жидких полимерах, активизируемых путем ультрафиолетовых источников или шлакования толченого металла под действием лазерных лучей либо путем вытеснения пластиковых каркасов. Время от времени появлялись сообщения о скоростных системах создания прототипов на основе моделей, генерируемых средствами КГ.
5.1990-e. Производственные связи.
Ввосьмидесятые годы возникли дебаты: была ли компьютерная графика индустрией или искусством? В девяностых годах большинство склонилось в сторону индустрии, потому что трудно было спорить с количеством и размером компаний, использующих графику в качестве отдельного продукта, интегрирующей системы или инструмента разработки программного обеспечения.
Конечно, индивидуальность в индустрии теряется. Стираются отличия между КГ и обработкой изображения. Компьютерная графика часто имеет дело с векторными данными, а основой для обработки изображений является пиксельная информация. Еще не так давно каждый пользователь требовал рабочую станцию с уникальной архитектурой, а сейчас процессоры рабочих станций имеют быстродейст-
10
вие, достаточное для того, чтобы управлять как векторной, так и растровой информацией.
Сжатие данных является другой технологией, влияющей на продвижение комплексов мультимедиа с интерактивными компактдисками и системами видеоконференций.
Становятся обычным явлением высокоскоростные сети. Это естественным образом влияет на конструкцию рабочих станций и их сетей, в которых уже не будет места большим хранилищам данных в каждом узле.
Появляются системы, которые распознают индивидуальные особенности пользователя на основе экспертных технологий и соответствующим образом настраивают интерфейс. На разных стадиях разработки находятся способы организации интерфейсов на базе голоса и жестов. Увеличение возможностей трехмерной графики способствует развитию графических интерфейсов от плоской метафоры к богатому интерфейсу "человек-компьютер".
6. Современные тенденции в КГ.
Айвен Сазерленд – пионер применения компьютеров для построения и обработки изображений – заметил как-то о своём излюбленном предмете: “Дисплей, подключённый к ЭВМ, представляется мне окном в Алисину страну чудес, программист может изображать либо объекты, описываемые хорошо известными законами природы, либо чисто воображаемые объекты, подчиняющиеся законам, записанным в программе. С помощью дисплея я сажал самолёт на палубу движущегося авианосца, следил за движением элементарной частицы в потенциальной яме, летал в ракете с околосветовой скоростью и наблюдал за таинствами внутренней жизни вычислительной машины”. Сегодня интерактивная машинная графика стала доступна уже не только узкому кругу специалистов. Мощные процессоры и современные программы сделали общение человека с ЭВМ настолько простым, что рисовать и даже проектировать с помощью ЭВМ может практически любой пользователь”.
2D-графика достигла максимальной скорости (для классических задач и разрешений). Все поставляемые сегодня ПК имеют возможности 3D-графики.
Активно развивается «новое» направление КГ – обработка видеоинформации.