Основы построения 3-х мерных сцен с использованием библиотеки DirectX. Макушкина Л.А - 22 стр.

UptoLike

24
загораживаться активной гранью, а активная грань не может быть загорожена
никакой гранью 2-й группы. Поэтому получится правильное изображение, если
сначала изобразить грани 2-й группы, затем активную грань, а затем грани 1-й
группы. Если активная грань разбивает какую-либо грань, но она разрезается на
две грани, которые входят в различные группы. Метод разбиения реализуется с
помощью рекурсии, когда каждая группа разбивается на подгруппы до тех пор,
пока грани не будут отсортированы. Результат можно представить в виде дерева.
В каждом узле находится активная грань, в левой ветви находится лицевая (т.е.
видимаям) грань по отношению к корневой, в правой- не лицевая (т.е. невидимая).
Последовательность изображения дерева (рис. 7): самой правой, начиная с
вершины, изображать сначала правую ветвь, затем корень, затем левую ветвь и
так вверх до главного корня, после чего спуск по левой ветви.
Метод z-буфера принадлежит к тому типу алгоритмов, в которых задача
загораживания решается с помощью использования аппаратных особенностей
компьютера. Реализуется в большинстве графических акселератов.
Требуется две области памяти: буфер глубины или z-буфер, в котором
хранятся координаты z(глубина) каждого анализируемого пиксела плоскостей
проецирования и буфер кадра, в котором хранятся атрибуты пикселов (как
правило цвет).
Метод Z- буфера для ортогональной проекции на плоскость XOY 3-х
мерной сцены, которая представлена многогранниками:
1. Инициализировать буфер кадра фоновыми значениями интенсивности
или цвета.
2. Инициализировать буфер глубины значениями глубины фона.
3. Для каждой грани сцены выполнять шаги.
4. Преобразовать проекцию грани в растровую форму.
5. Для каждого пиксела проекции вычислить его глубину Z.
6. Сравнить z с соответствующим значением буфера глубины Z.
7. Если z<Z, то:
8. Записать атрибуты этого пиксела в буфер кадра.
9. Записать значение z в соответствующую позицию буфера глубины Z.
10. Иначе никаких действий не производить.
Время выполнения зависит от разрешения и количества граней.
Г5
Г4
Г2
Г3
Г1
Г6
Г7
Г8
Рис. 7. Двоичное дерево граней
загораживаться активной гранью, а активная грань не может быть загорожена
никакой гранью 2-й группы. Поэтому получится правильное изображение, если
сначала изобразить грани 2-й группы, затем активную грань, а затем грани 1-й
группы. Если активная грань разбивает какую-либо грань, но она разрезается на
две грани, которые входят в различные группы. Метод разбиения реализуется с
помощью рекурсии, когда каждая группа разбивается на подгруппы до тех пор,
пока грани не будут отсортированы. Результат можно представить в виде дерева.
В каждом узле находится активная грань, в левой ветви находится лицевая (т.е.
видимаям) грань по отношению к корневой, в правой- не лицевая (т.е. невидимая).
       Последовательность изображения дерева (рис. 7): самой правой, начиная с
вершины, изображать сначала правую ветвь, затем корень, затем левую ветвь и
так вверх до главного корня, после чего спуск по левой ветви.
                            Г1
                  Г7                    Г2
                                                  Г4
             Г8             Г3

                                             Г5         Г6
                       Рис. 7. Двоичное дерево граней


       Метод z-буфера принадлежит к тому типу алгоритмов, в которых задача
загораживания решается с помощью использования аппаратных особенностей
компьютера. Реализуется в большинстве графических акселератов.
       Требуется две области памяти: буфер глубины или z-буфер, в котором
хранятся координаты z(глубина) каждого анализируемого пиксела плоскостей
проецирования и буфер кадра, в котором хранятся атрибуты пикселов (как
правило цвет).
       Метод Z- буфера для ортогональной проекции на плоскость XOY 3-х
мерной сцены, которая представлена многогранниками:
      1. Инициализировать буфер кадра фоновыми значениями интенсивности
          или цвета.
      2. Инициализировать буфер глубины значениями глубины фона.
      3. Для каждой грани сцены выполнять шаги.
      4. Преобразовать проекцию грани в растровую форму.
      5. Для каждого пиксела проекции вычислить его глубину Z.
      6. Сравнить z с соответствующим значением буфера глубины Z.
      7. Если z