
- •1. Цвет в компьютерной графике 13
- •2. Геометрические преобразования 20
- •3. Представление геометрической информации 37
- •4. Удаление невидимых поверхностей и линий 45
- •5. Проекции пространственных сцен 55
- •5.4. Вопросы и упражнения 67
- •10.6 Вопросы и упражнения 108
- •12.4 Вопросы и упражнения 118
- •Введение Предмет и область применения компьютерной графики
- •1. Отображение информации
- •2. Проектирование
- •3. Моделирование
- •4. Графический пользовательский интерфейс
- •Краткая история
- •Технические средства поддержки компьютерной графики
- •Вопросы и упражнения
- •1. Цвет в компьютерной графике
- •1.1. О природе света и цвета
- •1.2. Цветовой график мко
- •1.3. Цветовые модели rgb и cmy
- •1.4. Другие цветовые модели
- •1.5. Вопросы и упражнения
- •2. Геометрические преобразования
- •2.1. Системы координат и векторы на плоскости и в трёхмерном пространстве
- •2.2. Уравнения прямой и плоскости
- •2.3. Аналитическое представление кривых и поверхностей
- •2.4. Пересечение луча с плоскостью и сферой
- •2.5. Интерполяция функций одной и двух переменных
- •2.6. Матрицы
- •2.7. Геометрические преобразования (перенос, масштабирование, вращение)
- •2.8. Переход в другую систему координат
- •2.9. Задача вращения относительно произвольной оси
- •2.10. Вопросы и упражнения
- •3. Представление геометрической информации
- •3.1. Геометрические примитивы
- •Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •3.2. Системы координат: мировая, объектная, наблюдателя и экранная
- •3.3. Однородные координаты
- •3.4. Вопросы и упражнения
- •4. Удаление невидимых поверхностей и линий
- •4.1. Алгоритм Робертса
- •4.2. Метод z-буфера
- •4.3. Методы приоритетов (художника, плавающего горизонта)
- •4.4. Алгоритмы построчного сканирования для криволинейных поверхностей
- •4.5. Метод двоичного разбиения пространства
- •4.6. Метод трассировки лучей
- •4.7. Вопросы и упражнения
- •5. Проекции пространственных сцен
- •5.1. Основные типы проекций
- •Параллельные проекции
- •Центральные проекции
- •5.2. Математический аппарат
- •Ортогональные проекции
- •Косоугольные проекции
- •Центральные проекции
- •5.3. Специальные картографические проекции. Экзотические проекции земной сферы
- •Стереографическая проекция
- •Гномоническая проекция
- •Ортографическая проекция
- •Проекции на цилиндр
- •Проекция Меркатора
- •Проекции на многогранник
- •Необычные проекции
- •5.4. Вопросы и упражнения
- •6. Растровое преобразование графических примитивов
- •6.1. Алгоритм Брезенхема растровой дискретизации отрезка
- •6.2. Алгоритмы Брезенхема растровой дискретизации окружности и эллипса
- •6.3. Алгоритмы заполнения областей
- •6.4. Вопросы и упражнения
- •7. Закрашивание. Рендеринг полигональных моделей
- •7.1. Простая модель освещения
- •7.2. Закраска граней Плоское закрашивание
- •Закраска методом Гуро
- •Закраска методом Фонга
- •7.3. Более сложные модели освещения
- •7.4. Устранение ступенчатости (антиэлайзинг)
- •7.5. Вопросы и упражнения
- •8. Визуализация пространственных реалистических сцен
- •8.1. Трехмерный графический конвейер
- •8.2. Свето-теневой анализ
- •8.3. Глобальная модель освещения с трассировкой лучей
- •8.4. Текстуры
- •8.5. Вопросы и упражнения
- •9. Введение в вычислительную геометрию
- •9.1 Вычислительная сложность алгоритмов
- •9.2 Основные геометрические объекты
- •9.3 Вопросы и упражнения
- •10. Триангуляция Делоне и диаграмма Вороного
- •10.1 Введение
- •10.2 Разбиение Делоне
- •10.3 Разбиение Вороного
- •Многогранник Вороного
- •Теорема о разбиении Вороного
- •10.4 Дуальность разбиений Вороного и Делоне
- •10.5 Алгоритм построения тетраэдризации Делоне
- •Триангуляция Делоне
- •Ячейки Вороного
- •10.6 Вопросы и упражнения
- •11. Алгоритмы построения выпуклой оболочки и триангуляции
- •11.1. Алгоритм построения выпуклой оболочки с использованием метода сортировки
- •11.2 Алгоритм построения триангуляции
- •12. Алгоритмы геометрического поиска
- •12.1 Поиск в плоском случае
- •12.2 Поиск на множестве тетраэдров
- •12.3 Поиск на множестве произвольных несамопересекающихся многогранников е3
- •12.4 Вопросы и упражнения
- •Список литературы
7.5. Вопросы и упражнения
Что такое эффект полос Маха?
Чем отличается диффузное отражение от зеркального?
От чего зависит интенсивность освещения точки поверхности при диффузном отражении?
От чего зависит интенсивность освещения точки поверхности при зеркальном отражении?
Какие параметры учитывает модель зеркального отражения, предложенная Фонгом?
Меняется ли интенсивность освещения при плоском закрашивании грани?
Какой параметр интерполируется при закрашивании методом Гуро?
Какой параметр интерполируется при закрашивании методом Фонга?
В чем состоит идея алгоритмов антиэлайзинга, основанных на уровне детализации растра?
8. Визуализация пространственных реалистических сцен
8.1. Трехмерный графический конвейер
Концепция графического конвейера сложилась в компьютерной графике на ранних стадиях её развития и имела целью представить этапы обработки геометрической и цветовой информации при отображении трехмерных сцен. На основе этой концепции разрабатывались аппаратные и программные средства компьютерной графики, выявлялись возможности распараллеливания вычислений, создавалась архитектура графических систем. В настоящее время, графический конвейер используют для представления функциональных возможностей таких программных интерфейсов к аппаратным средствам графики как OpenGL и Direct3D. Принципиально возможны два подхода к формированию изображения трехмерной сцены: ориентированный на экран, когда анализируется каждый пиксель и выявляются видимые объекты в данной точке экрана, и ориентированный на объекты сцены, когда преобразованиям, сортировке и разложению на пиксели подвергаются все объекты сцены. В графическом конвейере применяется второй, ориентированный на объекты сцены, подход.
Графический конвейер представляют как ряд процессоров между графической базой данных и видеобуфером, где накапливается изображение для вывода на экран дисплея.
Каждый процессор реализует определенный этап преобразования геометрической и цвето-яркостной информации. Данные на выходе одного процессора передаются на следующий. Типичный вариант конвейера содержит следующие этапы:
Считывание или «обход» 3-х мерной графической базы данных, где объекты представлены в мировой (или объектной) системе координат.
Преобразование из мировой системы в систему координат наблюдателя геометрических описаний объектов. Для полигональных моделей – это преобразование вершин многоугольников. Вычисление цвето-яркостных параметров в вершинах с учетом освещенности.
Отсечение или “клиппирование” плоскостями пирамиды видимости – оставляет то, что попало в область видимости экрана.
Перспективное преобразование или “перспективное деление” – переход в экранную двумерную систему координат. Информация о глубине, z-координата, может, тем не менее, сохранятся, например, для удаления невидимых поверхностей.
Преобразование или “разложение” в растр – это процесс вычисления всех пикселей на экране где разместился объект. В ранних алгоритмах использовался строчный принцип преобразования, когда обработка выполнялось последовательно строка за строкой – аналогично развертке в растровом дисплее.
Область объекта попавшего в пиксель называют фрагментом, и в последующей обработке может учитываться его внутренняя структура. Так, для устранения ступенчатости или антиэлайзинга используют площадь, занятую объектом в пикселе.
Вычисление цвето-яркостных параметров фрагментов объектов в пикселях.
Запись фрагментов в видеобуфер.
Удаление невидимых поверхностей может быть связано с различными этапами конвейера в зависимости от используемого алгоритма. Так, в простом случае алгоритма «художника» (приоритетного списка), при обходе базы данных на этапе 1 формируется приоритетный список объектов, в порядке начиная от самых далеких к наблюдателю. По мере записи в видеобуфер фрагментов объектов, более ближние затирают более дальние.
Если используется алгоритм Z-буфера, то наряду с видеобуфером вводится также память на z-координату или глубину в каждом пикселе. Для каждого фрагмента объекта вычисляется z-координата и сравнивается с z-координатой в пикселе уже записанной ранее в буфере.
При разработке аппаратных средств компьютерной графики часто используются концепция графического конвейера. Типичным является разделение аппаратных средств на геометрический и видео- процессор. Геометрический процессор выполняет этапы от графической базы данных до этапа перспективного преобразования. Оставшаяся часть конвейера от этапа преобразования в растр относится к видеопроцессору. Для геометрического и видеопроцессора характерны разные способы представления данных, алгоритмы и методы распараллеливания. Геометрический процессор работает с описаниями объектов в мировой системе координат и имеет высокую разрядность представления чисел, обычно в формате с плавающей запятой. Массовыми операциями являются умножение вектора на 4матрицу, перемножение матриц и перемножение векторов, которые хорошо распараллеливается. Кроме того, геометрический процессор обрабатывает структуры данных – списки, деревья и т. д.
В большинстве реализаций графического конвейера видеопроцессор принимает на вход многоугольники и даже, часто, только треугольники. Это связано с потребностью унификации данных для видео-преобразования, где должны быть минимизированы логические операции разбора «геометрии». Что бы обеспечить такими данными видеопроцессор, геометрический процессор разбивает объекты на треугольники на последних стадиях геометрических преобразований. Так, кусок гладкой поверхности, или пачь, заданный уравнениями и границами, может быть целиком преобразован в систему координат наблюдателя. Затем разбит сеткой, с частотой адаптированной к расстоянию до поверхности. И, наконец, произведена сборка треугольников по узлам сетки. Процесс сборки многоугольников по опорным узлам, когда каждый узел входит, как вершина, в несколько многоугольников, создавая плотное покрытие, называют сборкой примитивов («primitive assembly», например, в конвейере OpenGL). Геометрический процессор выполняет и другие функции, которые освобождают конвейер, на ранних стадиях обработки от заведомо не отображаемых на экране объектов. К ним относятся грани, лицевая сторона (или нормаль) которых направлена от наблюдателя. Объекты, описанная сфера вокруг которых, целиком лежит вне пирамиды видимости.
Важной функцией геометрического процессора является вычисление цветояркостных параметров в вершинах многоугольников. Если сцена содержит подвижные объекты или источники освещения, цвета и яркости объектов должны обновляться в каждом кадре. Типично, в базе данных хранятся нормали к поверхностям в вершинах аппроксимирующих поверхность многоугольников и начальные цвета. Геометрический процессор вычисляет цвета в вершинах в зависимости от источника освещения и используя некоторую модель освещенности (Гуро, Фонга и т. д.). Для более качественного моделирования эффектов освещенности, нормали могут передаваться в видеопроцессор.
Видеопроцессор вначале разбивает многоугольники на фрагменты размером в пиксель и, затем вычисляет различные параметры каждого фрагмента. Производительность этой части конвейера должна быть гораздо выше и приближенно оценивается как пропорциональное пиксельному разрешению экрана, умноженному на среднюю глубинную сложность изображения. В противоположность этому, производительность геометрического процессора должна быть пропорциональна количеству вершин или многоугольников сцены. Тем не менее, разрядность вычислений в видеопроцессоре может быть снижена до разрядности представления экранных координат. Часто применяемым методом распараллеливания вычислений в видеопроцессоре является метод разряженного растра. Несколько идентичных (под)процессоров получают одни и те же данные от геометрического процессора, но каждый работает со своей выборкой пикселей, которая представляет собой разряженный растр. Память видеобуфера (и Z-буфера) также разбита на слои, каждый из которых привязан к своей выборке пикселей. Поскольку современным алгоритмам «растрирования» нет необходимости быть привязанным к строчной развертке (из-за наличия видеобуфера), в процессе разложения в растр видеопроцессор может генерировать фрагменты многоугольника («пиксели») в любом порядке.