5.1.2. Билинейная
интерполяция
При обращении к полю
текстуры с дробными координатами мы округляем их до целых. В результате
получается несколько кривое изображение. Можно с этим бороться, используя
билинейную интерполяцию. Она основана на том, что яркость в точке находится по
яркости 4-х соседних точек, а в пространственных координатах это позволит
избежать искривлений при проецировании текстуры. Однако в координатах изображения
это будет уже не линейная интерполяция.
Задача заключается в нахождении яркости в точке
V.
Сначала находится яркость в точке V5 с учетом
линейной интерполяции между точками V1 и V4; затем в точке V6 с учетом интерполяции между точками V2 и V3. Затем производится интерполяция между
точками V5 и V6 для нахождения яркости в точке V.
V5=V1*(1-Ex) +V4*Ex V6=V2*(1-Ex) +V3*Ex V = V5*(1-Ey) +V6*Ey Ex, EyÎ{0:1}
Рис. 4.3.1
Линейная интерполяция в большинстве случаев не
совсем корректна, так как можно получить эффект искажения картинки. Необходимо
линейно интерполировать текстурные координаты исходя из координат изображения. Использование
этого метода существенно замедляет работу алгоритма, но улучшает качество
картинки.
Вопрос: как реализовать прозрачность
(например, прозрачное окно в доме)?
Ответ: вводят признак прозрачности
текстуры. При появлении кода прозрачности соответствующие точки
игнорируются.
окно
непрозрачно
a1
a1 - коэффициент прозрачности.
a1 Î [0, 1] a1 = 0 => прозрачно a1 = 1 => непрозрачно
V2
V1
Рис. 4.3.2
В этом
случае VS = a1V1 + V2 (1-a1)
a1 a2 непрозрачно
V2
V3
V1
Рис. 4.3.3
VS = a1V1 + (1-a1)( a2V2 + V3 (1-a2))