Галантные
празднества Живопись |
Архитектура | Скульптура | Искусство
России | Национальная галерея |
Декоративное искусство |
Нанесение текстур
Различают два вида текстур:
· Процедурные
· Проективные (наносятся на грань объекта)
Рассмотрим простой пример: есть домик с кирпичными стенами. Решить задачу описания грани домика достаточно сложно. Можно было бы описать стенку, но это тоже сложно, поэтому эту стенку рисуют отдельно, а потом накладывают в качестве текстуры на нужную грань.
![]() |
xt1, y t1 x t2, y t2
Рис. 4.1.1
| |||
![]() | |||
В ряде случаев могут получаться искажения
Рис. 4.1.2
Чем больше перспективное искажение, тем больше эти искажающие эффекты.
Решается следующая задача: в плоскости изображения имеется некоторый прямоугольник и bmp-картинка, которую нам надо вписать в этот прямоугольник. Эту задачу можно сформулировать иначе: имеется некоторый многоугольник и картинка, ему соответствующая. Многоугольник задан текстурными координатами, по которым из текстурного поля вырезается определённый кусок и наносится на объект.
![]()
![]()

![]()
P x2
y2 h2 xt2 y t2
i=N-1


X2 Y2 Z2
S2 xt2 yt2
![]() |
x1 y1 h1 xt1 yt1 xt(i) yt(i) h
xt yt s
i
i=0
X1 Y1 Z1 S1 xt1 yt1
Рис. 4.2
s-s1
xt = xt1 + ¾¾¾ (x t2 - x t1)
s2-s1
s-s1
yt = yt1 + ¾¾¾ (y t2 - y t1)
s2-s1
Линейная интерполяция:
![]() |
A
h = ¾ - B ;
S
|
![]() |
i h2 + B

xt(i) = xt1 + ¾¾
(x t2 - x t1) ¾¾¾
N-1 h(i)+ B
![]() |
i h2 + B
yt(i) = yt1 + ¾¾ (y t2 - y t1) ¾¾¾
N-1 h(i)+ B
i
h(i) = h1 + ¾¾ (h2 - h1)
N-1
При программировании эти формулы можно упростить:
i
fx(i) = ¾¾ (xt2 - xt1) (h2 + B); fx(i+1) = fx(i) + Dfx
N-1
i
fy(i) = ¾¾ (yt2 - yt1) (h2 + B); fy(i+1) = fy(i) + Dfy
N-1
(x t2 - x t1) (h2 + B) (y t2 - y t1) (h2 + B)
Dfx = ¾¾¾¾¾¾¾¾ ; Dfy = ¾¾¾¾¾¾¾¾ ;
N-1 N-1
Тогда будем иметь:
fx(i)
xt(i) = xt1 + ¾¾¾
h(i)+B
fy(i)
yt(i) = yt1 + ¾¾¾
h(i)+B