10.8.5. Другие окна Укажите, взяв за образец окно Барлетта на рис. 10.46, б, в, какие элементы содержит окно Барлетта размером семь на семь? Чему равен общий масштабный множитель?

10.8.2. Сглаживание текстуры

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

10.8. Ступенчатость; технологии сглаживания_673

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

а б Рис. 10.47. Пример ступенчатости и улучшение в результате сглаживания (с разрешения Paul Heckebert)

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

На рис. 10.48 показан отдельный пиксел с координатами (х, у), подвергающийся визуализации, и полученные соответствующие ему значения (s*, г*) в пространстве текстуры. Обозначим для удобства через Т( ) все преобразование из пространства пикселов в пространство текстуры, тогда (s*, t*) = Т(х,у). (Компоненты этого преобразования были рассмотрены в главе 8.)

Причина возникновения ступенчатости при визуализации текстуры

Рис. 10.48. Причина возникновения ступенчатости при визуализации текстуры

Поскольку пикселы являются не точками, а имеют конечную площадь, нам следовало бы подумать о том, как отображается в пространство текстуры весь квадратный пиксел с центром в точке (х, у). Этот пиксел также изображен (см. рис. 10.48) в виде четырехугольника1. Мы будем называть такой четырехугольник текстурным квадратом (texture quad), соответствующим рассматриваемому экранному пикселу. Представим, что пространство текстуры покрывается такими квадратами, каждому из которых соответствует экранный пиксел. Размер и форма каждого текстурного квадрата зависит от природы преобразования Г( ) и определить их зачастую непросто. Если функция texture(,) изменяется в пределах одного квадрата, то цвет экранного пиксела все равно определяется только одним значением texture(s*, t*), вследствие чего теряется важная информация и возникает ступенчатость.


⇐ Предыдущая| |Следующая ⇒