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
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