Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по КГ.doc
Скачиваний:
16
Добавлен:
12.09.2019
Размер:
17.06 Mб
Скачать

Общая схема действий по отсечению

  1. Выделить грани, которые целиком находятся ВНУТРИ В.О. (показаны зеленым)

  2. Выделить грани, которые пересекаются гранями В.О. (показаны красным)

  3. В цикле по «красным» граням делать:

Методом Сазерленда-Ходжмана «обрезать» грань, оставив ТОЛЬКО ее ЧАСТЬ ВНУТРИ ВИДИМОГО ОБЪЕМА.

Здесь для напоминания приводится обсуждавшийся раньше пример алгоритма Сазерленда-Ходжмана для плоского случая. В трехмерном случае идея алгоритма остается неизменной.

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

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

  • При ЦЕНТРАЛЬНОМ ПРОЕЦИРОВАНИИ видимый объем имеет вид усеченной пирамиды.

  • Это создает заметные НЕУДОБСТВА и ЗАМЕДЛЕНИЕ в определении видимости точек.

  • Рассмотрим, какими приемами пользуются для снижения остроты этих неудобств.

Как задается видимый объем

Принято считать видимый объем симметричным относительно плоскостей ZOX и ZOY. Поэтому положение верхнего правого дальнего угла пирамиды видимости позволяет полностью восстановить ее. С учетом факта наличия ближней фронтальной плоскости видимый объем однозначно определяется четверкой чисел:

ВидимыйОбъем=(Xmax, Ymax, Zmax, d).

Дополнительные проблемы отсечения при центральном проецировании

Наклонное расположение боковых плоскостей затрудняет определение видимости точек в высотном и широтном направлениях. Определение расположения точки по отношению к передней и задней фронтальным плоскостям выполняются обычным сравнением координат.

Логические величины Дальше и Ближе определяются так:

Дальше = (Z > Zmax ? 1 : 0); Ближе = (Z < d ? 1 : 0);

А вот логичекое Выше требует выполнения двух вещественных делений и одного сравнения (вычитания).

Выше = (Y / Z > Ymax / Zmax ? 1 : 0);

Деление с плавающей точкой – это очень трудоемкая и медленная операция!

Повышение эффективности проверок при центральном проецировании

Некоторое (небольшое) улучшение в организации работ по отсечению можно получить, если до отсечения ко всем вершинам всех объектов сцены применить нормирующее преобразование:

Как видим, здесь деление заменяется умножением, которое машинно выполняется несколько быстрее.

После этого преобразования видимый объем преобразуется так, что верхний передний правый угол пирамиды видимости имеет координаты (1,1,1), боковые грани наклонены в оси Z под углом 45 градусов. В этих условиях видимость точек в широтном и высотномнаправлениях можно производить без вещественного деления, а только путем сравнения координат.

У нормированного видимого объема остается лишь один параметр:

НормированныйВидимыйОбъем=(d');

До нормирования было: Выше = (Y / Z > Ymax / Zmax ? 1 : 0);

После нормирования стало: Выше = (Y’ > Z’ ? 1 : 0);

Как видим, достаточно сравнить координаты.

Отпала необходимость в вещественном делении ПРИ КАЖДОЙ ПРОВЕРКЕ.

Проверки <, > выполняются ВЫЧИТАНИЕМ!

После выполнения проверок на видимость надо вернуть координаты вершин в старое (правильное) состояние.

итоги

  • Наиболее частый случай – видимый объем имеет форму усеченной пирамиды (строится центральная проекция). Отсечение с ним выполняется сложнее.

  • Случай параллельной проекции встречается реже, отсечение с ним проще.

  • Быстрая классификация точек относительно видимого объема выполняется, как и в двумерном случае, методом Коэна-Сазерленда, но модифицированным под трехмерный случай (код положения вершины составляет уже не 4 бита, а 6).

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

  • Логика этих операций сложнее, чем в двумерном случае (алгоритм Сазерленда-Ходжмана).

  • Дополнительной проблемой при отсечении в случае центральной проекции является необходимость деления вещественных координат (Для вычисления флагов «выше», «ниже», «правее» и «левее»).

  • Некоторое повышение производительности при этом можно достичь НОРМИРОВАНИЕМ СЦЕНЫ (приведением видимого объема к «единичному» состоянию).

ОТСЕЧЕНИЕ СЦЕНЫ ПО ГРАНИЦАМ ВИДИМОГО ОБЪЕМА СЛУЖИТ ПОВЫШЕНИЮ ПРОИЗВОДИТЕЛЬНОСТИ ВИДЕОКОНВЕЙЕРА, так как ИЗ СТРУКТУРЫ ДАННЫХ СЦЕНЫ ИСКЛЮЧАЮТСЯ ЗАВЕДОМО НЕВИДИМЫЕ ОБЪЕКТЫ

Примечание. Этот подход продолжается также и на следующей операции видеоконвейера – УДАЛЕНИИ НЕВИДИМЫХ ГРАНЕЙ И РЕБЕР.