Перенос баз данных с одного SQL Server на другой Изменения в системе защиты SQL Server Новые средства разработки Новые элементы программирования на языке Visual Basic Редактирование и анализ данных с помощью запросов

Лекции по компьютерной графике начало

5. Текстуры

 Нанесение текстур

Различают два вида текстур:

·         Процедурные

·         Проективные (наносятся на грань объекта)

5.1. Процедурные текстуры

  Рассмотрим простой пример: есть домик с кирпичными стенами. Решить задачу описания грани домика достаточно сложно. Можно было бы описать стенку, но это тоже сложно, поэтому эту стенку рисуют отдельно, а потом накладывают в качестве текстуры на нужную грань.

 

  xt1, y t1 x t2, y t2

Рис. 4.1.1

индекс t означает «текстурный»

 
 

В ряде случаев могут получаться искажения

Рис. 4.1.2 

Чем больше перспективное искажение, тем больше эти искажающие эффекты.

 

Решается следующая задача: в плоскости изображения имеется некоторый прямоугольник и bmp-картинка, которую нам надо вписать в этот прямоугольник. Эту задачу можно сформулировать иначе: имеется некоторый многоугольник и картинка, ему соответствующая. Многоугольник задан текстурными координатами, по которым из текстурного поля вырезается определённый кусок и наносится на объект.

 


5.1.1. Коррекция текстуры

 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 

коэффициент, стоящий в первых двух уравнениях системы в скобках, – это поправочный коэффициент, выполняющий коррекцию текстурных координат 

 
После подстановки всех формул получаем:

 

 

   h+ B

  xt(i) = xt1 ¾¾  (x t2 - x t1¾¾¾

   N-1 h(i)+ B 

 

  i h+ B

  yt(i) = yt1 ¾¾  (y t2 - y t1¾¾¾

   N-1 h(i)+ B 

   i

   h(i) = h1 ¾¾ (h2 - h1)

   N-

При программировании эти формулы можно упростить:

   i

   fx(i) ¾¾ (xt2 - xt1) (h+ B); fx(i+1) = fx(i) + Dfx

   N-

   i

   fy(i) ¾¾ (yt2 - yt1) (h+ B); fy(i+1) = fy(i) + Dfy

   N-

 

   (x t2 - x t1) (h+ B)   (y t2 - y t1) (h+ B)

  Dfx = ¾¾¾¾¾¾¾¾Dfy = ¾¾¾¾¾¾¾¾ ;

   N-1 N-

 

  Тогда будем иметь:

   fx(i)

  xt(i) = xt1 ¾¾¾ 

  h(i)+B

   fy(i)

  yt(i) = yt1 ¾¾¾ 

  h(i)+B

Дизайн, инженерная и Web графика