- •Часть 2. Создание реалистических изображений
- •Удаление невидимых линий и граней Общие замечания
- •МетодZ– буфера
- •Метод сортировки по глубине
- •Алгоритм художника
- •Метод плавающего горизонта
- •Метод разбиения области. Алгоритм Варнока
- •Метод Робертса
- •Построчный алгоритм Уоткинса
- •Цвет в компьютерной графике Зрительный аппарат человека
- •Физические принципы формирования оттенков
- •Цветовые модели
- •Задание цветов
- •Модели расчета освещенности граней трехмерных объектов
- •Модели закрашивания
- •Текстурирование
- •249035, Г. Обнинск, Студгородок, 1
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
ОБНИНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ АТОМНОЙ ЭНЕРГЕТИКИ
Факультет кибернетики
Н.Г.Типикин
КОНСПЕКТ ЛЕКЦИЙ ПО КУРСУ «КОМПЬЮТЕРНАЯ ГРАФИКА»
Часть 2. Создание реалистических изображений
Обнинск 2005
Типикин Н.Г. Конспект лекций по компьютерной графике. Часть 2. Создание реалистических изображений. – Обнинск ИАТЭ, 2004. – 80 с.
В пособии рассматриваются разделы компьютерной графики, посвященные созданию реалистических изображений. Пособие предназначено для студентов, начинающих осваивать компьютерную графику. Оно написано на основе курса лекций, читаемых автором в Обнинском государственном техническом университете на факультете кибернетики.
Пособие предназначено для использования студентами специальностей 220200 и 071900, изучающих курс «Компьютерная геометрия и графика»
Удаление невидимых линий и граней Общие замечания
Удаление невидимых линий производится до проецирования объекта.
Алгоритмы удаления невидимых граней могут быть условно поделены на два класса в зависимости от принципов, заложенных для их реализации. Первый класс – это алгоритмы, работающие в пространстве объекта. Это означает, что для определения видимости данной грани сравнивается ее взаимное расположение со всеми остальными гранями в трехмерной сцене. ПустьN– количество граней в трехмерной сцене. Для построения трехмерной сцены в этом случае необходимо сравнить положение каждой грани с оставшимися, что требует порядкаN2операций. Например, пусть количество граней в трехмерной сценеN= 1000, тогда время работы алгоритмов этого класса порядка 1,000,000 операций.
Другой класс алгоритмов – алгоритмы, работающие в пространстве изображения, основан на нахождении точки ближайшей грани, которую пересекает луч зрения, проходящий через заданную точку на растре. Поскольку число точек на растровом экране фиксировано, то алгоритмы этого класса менее чувствительны к увеличению количества объектов в трехмерной сцене. Пустьn- число точек на растровом экране. Тогда количество операций, необходимых для построения трехмерной сцены будет порядкаnN. Например, для экранного разрешения 320200 точек,n= 64000, тогда количество операций дляN= 1000 граней будет порядка 64,000,000. Выбор класса алгоритма может зависеть от особенностей конкретной задачи, а также от способов реализации алгоритма.
Определение видимости или не видимости точки по сути сводится к проверке, лежат ли две точки на одном проекторе (см. рисунок …).
Если проекция параллельная, то проверка сводится к сравнению координат
x1 =x2,y1 =y2;
Если проекция центральная, то проверки становятся значительно сложнее:
,
.
Те же самые вычисления придется повторить для новой точки P3.
Для эффективного решения задачи удаления невидимых ребер/граней преобразуем видимый объем, как показано на рис. 33.
Это достигается с помощью матрицы
,
которая носит название перспективного преобразования. После применения матрицы Mpнормированный видимый объем становится прямоугольным параллелепипедом, что позволяет перейти от центральной перспективной к параллельной проекции. Легко проверить, что, например,
.
При выполнении различных операций по выявлению перекрывающих друг друга граней широко используют ограничивающиеграньтела (оболочки). В качестве оболочек чаще всего используют параллелепипеды с гранями, параллельными координатным плоскостям. Если такой ограничивающий грань параллелепипед задан координатами своих диагональных углов (xmin, ymin, zmin) и (xmax,ymax,zmax), то проверка пересечения оболочек двух граней сводится к простой процедуре проверки пересечения трех промежутков: отxminдоxmax, отyminдоymaxи отzminдоzmax. Если хотя бы один из этих промежутков не пересекается с аналогичным промежутком для оболочки другой грани, то оболочки граней не пересекаются и, следовательно, грани тоже не пересекаются. Грани, оболочки которых пересекаются, могут как пересекаться, так и не пересекаться, и в этом случае проводят более сложные вычисления.
