Наложение текстур

Текстура – это плоское изображение, которое накладывается на грани объектов. При этом каждой точке объекта соответствует пара координат на текстуре (u,v). Текстура обычно представляет собой двумерный массив значений цвета, его элементы называют текселами (texture element). Текстурные координаты (u,v) стараются делать независимыми от размеров этого массива, как правило, координаты (0,0) соответствуют верхнему левому, а (1,1) правому нижнему углу текстуры.

Текстуру накладывают при растеризации граней, при этом центру каждого пиксела соответствует пара (u,v) по которой из текстуры выбирается определенный элемент u’=u*usize,v’=v*vsize и его цвет заносится в пиксел. С=Texture[v’][u’]. Если одна из координат (u’,v’) выходит за пределы массива, то можно поступить несколькими способами:

- занести некоторый цвет рамки { if ((u’<0)||(u’>= usize)||(v’<0)||(v’>= vsize)) C=Cb; }

- занести цвет крайнего тексела { if (u’<0) u’=0; if (v’<0) v’=0; if (u’>= usize) u’= usize-1; if (v’>= vsize) v’= vsize-1;}

- зациклить текстуру {u’=u’ % usize; v’=v’ % vsize; }

Есть несколько способов наложить текстуру на объект: планарный, цилиндрический, сферический. В любом из них текстурные координаты вычисляются проектированием точки на соответствующую поверхность. При планарном способе наложения это обычное параллельное проектирование на плоскость текстуры. При цилиндрическом – это высота точки в цилиндре и угол. При сферическом – это два угла.

       
   
 
 


Чаще всего работают с планарным наложением текстур. Чтобы получить координаты (u,v), нужно сначала перевести координаты точки P в систему координат текстуры. Сначала совмещаем начала координат P’=P-O. Затем переводим в базис (U,V,N). Т.к. в общем случае U и V не единичные, то ,.

Из этих формул следует, что текстурные координаты можно линейно интерполировать, т.е. для любой точки P на отрезке AB, P=A+k(B-A), текстурные координаты равны , , где и - текстурные координаты точек A и B.

Текстурные координаты задаются либо коэффициентами, характеризующими текстурную плоскость , либо парами текстурных координат (u,v) для каждой вершины грани. Часто при цилиндрическом или сферическом наложении текстур находят по точным формулам только координаты (u,v) для вершин граней, а затем накладывают планарную текстуру.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: