Основы компьютерной графики для программистов. Казанцев А.В. - 45 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 45
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
Глава 6. Алгоритмы удаления невидимых ребер и граней
Классификация
Алгоритмы удаления невидимых граней могут быть условно поделены на два класса в
зависимости от принципов, заложенных для их реализации. Первый классэто
алгоритмы работающие в пространстве объекта. Это означает, что для определения
видимости данной грани сравнивается ее взаимное расположение со всеми остальными
гранями в трехмерной сцене. Пусть
Nколичество граней в трехмерной сцене. Для
построения трехмерной сцены в этом случае необходимо сравнить положение каждой
грани с оставшимися, что требует порядка
2
N
операций. Например, пусть количество
граней в трехмерной сцене
1000
=
N
, тогда время работы алгоритмов этого класса
порядка 1,000,000 операций.
Другой класс алгоритмов - работающих в пространстве изображения, основан на
нахождении точки ближайшей грани, которую пересекает луч зрения, проходящий
через заданную точку на растре. Поскольку число точек на растровом экране
фиксировано, то алгоритмы этого класса менее чувствительны к увеличению
количества объектов в трехмерной
сцене. Пусть n - число точек на растровом экране.
Тогда количество операций, необходимых для построения трехмерной сцены будет
порядка
N
n . Например, для экранного разрешения 320
×
200 точек, =n 64000, тогда
количество операций для
=
N
1000 граней будет порядка 64,000,000. Выбор класса
алгоритма может зависеть от особенностей конкретной задачи, а также от способов
реализации алгоритма.
Алгоритм с использованием z-буфера
Рассмотрим алгоритм удаления невидимых граней с использованием
z-буфера, который является одним из наиболее часто используемых в современных
приложениях компьютерной графики. Он работает в пространстве изображения и
применяется в таких популярных графических библиотеках как OpenGL и Direct3D.
Алгоритм работает в параллельной проекции. Пусть размеры окна вывода или экрана
составляют
X точек в ширину и Y точек в высоту. В качестве z-буфера заведем
двумерный прямоугольный массив чисел по размерности совпадающий с окном вывода
или экрана, т.е.
X
×
Y. В z-буфере будут храниться текущие значения z-координат
каждого пиксела.
В начале работы алгоритма в z-буфер заносятся значения, соответствующие
бесконечности. Каждая грань трехмерного объекта, представленная в виде
многоугольника, преобразуется в растровую форму. При разложении в растр для
каждой точки многоугольника вычисляется значение ее z-координаты. Если z-
координата оказалась меньше чем текущее значение
в z-буфере, то в z-буфер заносится
z-координата точки, и на экране рисуется точка цветом текущего многоугольника.
После разложения в растр всех многоугольников изображение трехмерной сцены
построено.
Рассмотрим способ ускоренного вычисления z-координат при разложении
многоугольников в растр. Запишем уравнение плоскости, образуемой многоугольником
в пространстве:
0
=
+
++ DCz
By
A
x .
Основы компьютерной графики для программистов                                                                  45
____________________________________________________________________________________________________________________



Глава 6. Алгоритмы удаления невидимых ребер и граней

Классификация
Алгоритмы удаления невидимых граней могут быть условно поделены на два класса в
зависимости от принципов, заложенных для их реализации. Первый класс – это
алгоритмы работающие в пространстве объекта. Это означает, что для определения
видимости данной грани сравнивается ее взаимное расположение со всеми остальными
гранями в трехмерной сцене. Пусть N – количество граней в трехмерной сцене. Для
построения трехмерной сцены в этом случае необходимо сравнить положение каждой
                                                             2
грани с оставшимися, что требует порядка N операций. Например, пусть количество
граней в трехмерной сцене N = 1000 , тогда время работы алгоритмов этого класса
порядка 1,000,000 операций.
Другой класс алгоритмов - работающих в пространстве изображения, основан на
нахождении точки ближайшей грани, которую пересекает луч зрения, проходящий
через заданную точку на растре. Поскольку число точек на растровом экране
фиксировано, то алгоритмы этого класса менее чувствительны к увеличению
количества объектов в трехмерной сцене. Пусть n - число точек на растровом экране.
Тогда количество операций, необходимых для построения трехмерной сцены будет
порядка n ⋅ N . Например, для экранного разрешения 320 × 200 точек, n = 64000, тогда
количество операций для N = 1000 граней будет порядка 64,000,000. Выбор класса
алгоритма может зависеть от особенностей конкретной задачи, а также от способов
реализации алгоритма.


Алгоритм с использованием z-буфера
Рассмотрим     алгоритм   удаления    невидимых    граней    с   использованием
z-буфера, который является одним из наиболее часто используемых в современных
приложениях компьютерной графики. Он работает в пространстве изображения и
применяется в таких популярных графических библиотеках как OpenGL и Direct3D.
Алгоритм работает в параллельной проекции. Пусть размеры окна вывода или экрана
составляют X точек в ширину и Y точек в высоту. В качестве z-буфера заведем
двумерный прямоугольный массив чисел по размерности совпадающий с окном вывода
или экрана, т.е. X × Y. В z-буфере будут храниться текущие значения z-координат
каждого пиксела.
В начале работы алгоритма в z-буфер заносятся значения, соответствующие
бесконечности. Каждая грань трехмерного объекта, представленная в виде
многоугольника, преобразуется в растровую форму. При разложении в растр для
каждой точки многоугольника вычисляется значение ее z-координаты. Если z-
координата оказалась меньше чем текущее значение в z-буфере, то в z-буфер заносится
z-координата точки, и на экране рисуется точка цветом текущего многоугольника.
После разложения в растр всех многоугольников изображение трехмерной сцены
построено.
Рассмотрим способ ускоренного вычисления z-координат при разложении
многоугольников в растр. Запишем уравнение плоскости, образуемой многоугольником
в пространстве: Ax + By + Cz + D = 0 .




http://www.ksu.ru/persons/9134.ru.html