Teksturowanie (ang. texture mapping)

Transkrypt

Teksturowanie (ang. texture mapping)
Grafika komputerowa
Teksturowanie (ang. texture mapping)
Radosław Mantiuk
Wydział Informatyki
Zachodniopomorski Uniwersytet Technologiczny
Grafika komputerowa
Tekstura
Tekstura to funkcja modyfikująca wygląd powierzchni. Aproksymacją tej funkcji
może być bitmapa.
Grafika komputerowa
Przykłady testur
Grafika komputerowa
Potok teksturowania
1. 
Mapowanie tekstury (ang. texture mapping) - obliczenie współrzędnych
parametrycznych (u,v) dla każdego wierzchołka modelu.
2. 
Filtrowanie tekstury - obliczenie współrzednych teksela tekstury w rastrze
(s,t) (funkcja korespondera, powiększanie lub pomniejszanie bitmapy).
3. 
Nakładanie tekstury - modyfikacja koloru pikseli na etapie rasteryzacji.
Pictures courtasy of MIT, Lecture Notes 6.837
Grafika komputerowa
Mapowanie tekstur
•  Obliczenie współrzędnych parametrycznych (u,v), odpowiadających danemu
wierzchołkowi modelu.
•  Współrzędne (u,v) wyraża się jako liczby zmiennoprzecinkowe znormalizowane do
przedziału <0,1>.
v
(u3,v3)
(u1,v1)
(u2,v2)
u
Grafika komputerowa
Mapowanie tekstur
tekstura
model
Grafika komputerowa
Mapowanie tekstur
Liniowe
Cylindryczne
Sferyczne
Grafika komputerowa
Teksturowanie: mapowanie sferyczne
Obliczenie współrzędnych tekstury (u,v) dla puntu na powierzchni kuli (dx,dy,dz) na
powierzchni kuli o promieniu jednostkowym.
arctan 2(dz , d x )
u = 0.5 +
2π
arcsin(d y )
v = 0.5 +
π
Grafika komputerowa
Funkcje korespondera
Funkcje korespondera - powiekszanie tekstury do wymaganego rozmiaru
poprzez powielanie.
Grafika komputerowa
Współrzędne tekstury
•  Obliczenie położenia teksela tekstury odpowiadająceg danemu wierchołkowi
•  Zamiania współrzędnych (u,v) -> (s,t)
Filtrowanie tekstur - ma na celu dostosowanie wielkości tekstury do wielkości
obszaru, na który tekstura będzie nakładana
•  powiększenie i pomniejszenie
W idelanym przypadku tekstura powinna mieć cztery razy więcej tekseli (ang. texels)
od liczby pikseli znajdującej się w obszarze obrazu (bufora ramki), na który tekstura
jest mapowana.
Grafika komputerowa
Filtrowanie tekstur: Metoda najbliższego sąsiada
Przykład pomniejszenia tekstury.
(u,v)
Grafika komputerowa
Filtrowanie tekstur: filtracja dwuliniowa
filtrowanie dwuliniowe (ang. bilinear filtering) uśrednianie wartości piksela
(u,v)
Grafika komputerowa
OpenGL: Nakładanie tekstury
Grafika komputerowa
OpenGL: Teksturowanie
glBegin(GL_QUADS);
glNormal3f( 0, 0, -1.0f );
glTexCoord2f( 1.0f, 1.0f );
glVertex3f( -0.5f, +0.5f, -0.5f );
glTexCoord2f( 0.0f, 1.0f );
glVertex3f( +0.5f, +0.5f, -0.5f );
glTexCoord2f( 0.0f, 0.0f );
glVertex3f( +0.5f, -0.5f, -0.5f );
glTexCoord2f( 1.0f, 0.0f );
glVertex3f( -0.5f, -0.5f, -0.5f );
glEnd();
Współrzędne interpolowane na etapie rasteryzacji.
Grafika komputerowa
OpenGL: Teksturowanie
GLuint tex;
glGenTextures( 1, &tex);
glBindTexture( GL_TEXTURE_2D, tex);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
// Black/white checkerboard
float pixels[] = {
0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f
};
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 2, 2, 0, GL_RGB, GL_FLOAT, pixels);
Grafika komputerowa
Filtrowanie tekstur - MIP Mapping
MIP Mapping (multium in pavro - wiele w jednym) - sposób przechowywania i
szybkiego dostępu do tekstur o różnym rozmiarze.
(u,v)
Grafika komputerowa
Filtrowanie anizotropowe
Jeżeli proporcje tekstury nie pasują do proporcji obszaru pikseli, na które tekstura
ma zostać nałożona.
(u,v)
Grafika komputerowa
Filtrowanie perspektywiczne
Interpolacja współrzędnych tekstur w trójkącie uwzględniająca trójwymiarowe
położenie wierzchołków.
(u,v)
Grafika komputerowa
Mapowanie środowiska
Ang. Environment Mapping (EM) - wykorzystanie testury do aproksymacji powierzchni
odbijających.
Pictures courtasy of MIT, Lecture Notes 6.837
Grafika komputerowa
Mapowanie środowiska
Grafika komputerowa
Mapowanie nierówności (ang. bump mapping)
Bump mapping - wykorzystanie tekstury do modyfikacji wektora normalnego.
(u,v)
Pictures courtasy of MIT, Lecture Notes 6.837
Grafika komputerowa
Mapowanie przesunięć (ang. displacement mapping)
Displacement mapping - tekstura służy do modyfikacji geometrii obiektu.
(u,v)
Grafika komputerowa
Testury proceduralne
Wykorzystanie funkcji matematycznych do obliczania wartości tekseli.
(u,v)
•  tekstury trójwymiarowe
•  symulacje zjawisk fizycznych (np. przepływ wody)
•  istnieje problem aliasingu i zachowania ciągłości
Grafika komputerowa
Cache'owanie tekstur
•  Przesyłanie tekstur do pamięci GPU zajmuje dużo czasu.
•  Dostęp do danych tektury jest również czasochłonne.
Szybki dostęp do potrzebnej w danym momencie tektury:
•  tektury powinny być możliwie najmniejsze,
•  wielokąty pogrupowane zgodnie z przynależnością do tektury,
(u,v)
•  oddalone wielokąty teksturowane są za pomocą
mniejszych obrazów,
•  kompresja tekstur (S3TC, ETC)
Grafika komputerowa
Atlasy tekstur
Grafika komputerowa
Literatura
1. 
Tomas Moller, Eric Haines, Real-Time Rendering, A K Peters, ISBN 1-56881-101-2

Podobne dokumenty

Teksturowanie - Bartosz Bazyluk

Teksturowanie - Bartosz Bazyluk U, UV, UVW zależnie od wymiarowości Współrzędne powierzchni bryły na którą nakłada się teksturę zwyczajowo nazywa się S, ST, STR zależnie od wymiarowości W OpenGL przyjęto tę drugą konwencję jako d...

Bardziej szczegółowo