Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Удаление невидимых линий и поверхностей .doc
Скачиваний:
9
Добавлен:
14.04.2019
Размер:
79.36 Кб
Скачать

Удаление невидимых линий и поверхностей

Задача удаления невидимых линий и поверхностей(УНЛиП) перекрывающихся объектов является одной из наиболее сложных в компьютерной графике.

Алгоритмы удаления невидимых линий и поверхностей определяют ребра, поверхности или объемы, которые невидимы для наблюдателя, находящегося в заданной точке пространства.

Необходимость удаления невидимых линий проиллюстрирована рис. , на котором приведен каркасный чертеж куба. Каркасный чертеж представляет трехмерный объект в виде штрихового изображения его ребер. Этот чертеж можно проинтерпретировать по-разному: как вид куба сверху, слева или снизу. Удаление тех ребер и граней, которые невидимы из соответствующей точки наблюдения, позволяет избавиться от неоднозначности.

Все алгоритмы УНЛиП включают в себя сортировку.

  • Главная сортировка ведется по геометрическому расстоянию от объекта сцены до точки наблюдения. Основная идея, положенная в основу сортировки по расстоянию, заключается в том, что чем дальше расположен объект от точки наблюдения, тем больше вероятность, что он будет полностью или частично заслонен более близкими к точке наблюдения, т.е. всем объектам сцены присваиваются приоритеты по глубине.

  • Далее проводится сортировка по горизонтали и по вертикали, чтобы выяснить, будет ли действительно рассматриваемый объект заслонен более близким к точке наблюдения.

Эффективность алгоритма УНЛиП таким образом зависит от эффективности процесса сортировки.

Для повышения эффективности сортировки используется когерентность сцены (тенденция неизменяемости сцены в малом).

Алгоритмы УНЛиП классифицируют по способу выбора системы координат или пространства, в котором они работают.

  • Алгоритмы, работающие в объектном пространстве.

  • Алгоритмы, работающие в пространстве изображений.

Алгоритмы, работающие в объектном пространстве, используют систему координат, в которой описаны объекты (МСК). При этом получаются точные результаты, ограниченные лишь точностью вычислений. Полученные изображения можно увеличивать в несколько раз без потери качества.

Алгоритмы, работающие в пространстве изображений , имеют дело с системой координат устройства(экрана), на котором визуализируются объекты. При этом точность вычислений ограничена разрешающей способностью экрана(600х480, 800х600 и 1024х768). Результаты , полученные в пространстве изображений, а затем увеличенные в несколько раз, не будут соответствовать исходной сцене(например, могут не совпасть концы отрезков).

Алгоритмы, формирующие список приоритетов(сортировка по глубине), работают как в ОП, так и в ПИ.

Метод z-буфера

Одним из самых простых алгоритмов удаления невидимых граней и поверхностей является метод z-буфера (буфера глубины). В силу крайней простоты этого метода часто встречаются его аппаратные реализации.

Сопоставим каждому пикселу (х, у) картинной плоскости, кроме цвета, хранящегося в видеопамяти, его расстояние до картинной плоскости вдоль направления проектирования z(x, у) (его глубину). Изначально массив глубин инициализируется +  . Для вывода на картинную плоскость произвольной грани она переводится в свое растровое представление на картинной плоскости и для каждого пиксела этой грани находится его глубина. В случае, если эта глубина меньше значения глубины, хранящегося в z-буфере, пиксел рисуется и его глубина заносится в z-буфер.

Замечание

Данный метод работает ucключumeльно в пространстве изображений(картинной плоскости) и не требует никакой предварительной обработки данных . Для вычисления глубины соседних пикселов при растровом разложении грани может использоваться целочисленный вариант алгоритма Брезенхема.

Алгоритмы упорядочения

Метод, использованный ранее зля построения графика фикции двух переменных и заключающийся в последовательном выводе на экран всех граней в определенном порядке, может быть использован и для расчета более сложных сцен.

Подход заключается в таком упорядо­чении граней, чтобы при их выводе в этом порядке получалось корректное изобра­жение. Для этого необходимо, чтобы бо­лее дальние грани выводились раньше, чем более близкие.

Существует различные методы по­строения такого упорядочения, однако часто встречаются такие случаи, когда заданные грани нельзя упорядочить

(рис.7 ). В подобных случаях необходимо произвести разбиение одной или нескольких граней, чтобы получившееся после разбиения мно­жество граней можно было упорядочить.