Скачать презентацию Интерактивная Компьютерная Графика Часть 3 -2 удаление невидимых Скачать презентацию Интерактивная Компьютерная Графика Часть 3 -2 удаление невидимых

Часть 3-2.ppt

  • Количество слайдов: 14

Интерактивная Компьютерная Графика Часть 3 -2 (удаление невидимых линий) Интерактивная Компьютерная Графика Часть 3 -2 (удаление невидимых линий)

Вычисление нормали для грани n y По правилу правой руки: x По правилу левой Вычисление нормали для грани n y По правилу правой руки: x По правилу левой руки: z

Вычисление нормали в вершине D B A C Вычисление нормали в вершине D B A C

Видимые и невидимые линии Наличие невидимых линий Мировые координаты Удаление невидимых линий Оконные координаты Видимые и невидимые линии Наличие невидимых линий Мировые координаты Удаление невидимых линий Оконные координаты

Классификация методов ü По способу отображения объекта Ø Каркасный вид Ø Сплошной вид ü Классификация методов ü По способу отображения объекта Ø Каркасный вид Ø Сплошной вид ü По текущей системе координат Ø Мировое пространство Ø Видовое пространство Ø Экранная плоскость ü По точности решения Ø Аналитическое Ø Приближенное

Метод лицевых граней Op en GL Если наблюдатель находится в полуплоскости, определенной соответствующей внешней Метод лицевых граней Op en GL Если наблюдатель находится в полуплоскости, определенной соответствующей внешней нормалью, то знак этого полупространства – положительный Тип грани Знак полупространства Список граней Front – faced лицевая (+) A, B Back – faced нелицевая (−) C, D, E Для сплошных (solid) тел, ни одна из нелицевых граней никогда не будет видна даже частично → при определении видимости нелицевые грани можно всегда отбрасывать

Метод художника Грань B Наблюдатель Грань A Грань С ü Сортирует и отображает грани Метод художника Грань B Наблюдатель Грань A Грань С ü Сортирует и отображает грани в порядке приближения к наблюдателю (back-to-front) по самой их дальней Z-координате (или по центру масс) ü Неоднозначность сортировки ü Сложность сортировки: линейная и квадратичная

Метод двоичного разбиения A D + – E 1 E + E 2 – Метод двоичного разбиения A D + – E 1 E + E 2 – D A + – C + – B + E 2 B – E 1 ü Затратен для анимации из-за перестройки двоичного дерева ü Сложность сортировки: логарифмическая + C

Метод трассировки Объекты для визуализации Наблюдатель Решетка пикселей ü Работает для любой геометрии ü Метод трассировки Объекты для визуализации Наблюдатель Решетка пикселей ü Работает для любой геометрии ü Затратен для анимации

Метод буфера глубины По умолчанию: Op en ü Легко реализуется на аппаратном уровне ü Метод буфера глубины По умолчанию: Op en ü Легко реализуется на аппаратном уровне ü Четко учитывает любую геометрию ü Память под дополнительный буфер GL Каждому пикселу помимо цвета (буфер кадра) сопоставляется еще и глубина (z-буфер), т. е. расстояние от пикселя до соответствующей точки объекта

Z – буфер в Open. GL glut. Display. Mode ( GLUT_DEPTH | /*…*/ ) Z – буфер в Open. GL glut. Display. Mode ( GLUT_DEPTH | /*…*/ ) // создание буфера gl. Clear ( GL_DEPTH_BUFFER_BIT | /*…*/ ) // очистка буфера gl. Enable ( GL_DEPTH_TEST ) // включение сравнения z-координат gl. Disable ( GL_DEPTH_TEST ) // отключение сравнения z-координат gl. Depth. Mask ( TRUE ) // включение записи в Z-буфер gl. Depth. Mask ( FALSE ) // отключение записи в Z-буфер gl. Depth. Func ( GL_LESS ) // тип операций сравнения ( «меньше, чем» ) GL_ALWAYS | GL_NEVER GL_GREATER GL_EQUAL | GL_NOTEQUAL GL_LEQUAL | GL_GEQUAL

Грани и нормали в Open. GL ü Включить/выключить лицевые грани gl. Enable ( GL_CULL_FACE Грани и нормали в Open. GL ü Включить/выключить лицевые грани gl. Enable ( GL_CULL_FACE ) gl. Disable ( GL_CULL_FACE ) ü Направление рисования грани gl. Front. Face ( GL_CCW ) // против часовой стрелке (по умолчанию) gl. Front. Face ( GL_CW ) // по часовой стрелке ü Сокрытие (отбраковка) граней gl. Cull. Face ( GL_FRONT ) // лицевых граней gl. Cull. Face ( GL_BACK ) // нелицевых граней (по умолчанию) ü Задание вектора нормали (x, y, z)T gl. Normal 3 f( x, y, z ) gl. Normal 3 fv( *(x, y, z) ) ü Указание на принудительную нормализацию векторов нормалей gl. Enable ( GL_NORMALIZE )

Результат удаления невидимых линий Результат удаления невидимых линий

Результат удаления невидимых линий Результат удаления невидимых линий