7. Odwzorowywanie tekstur

Odwzorowanie tekstury może służyć do modyfikacji pewnych właściwości obiektu, takich jak:

  • Kolor powierzchni
  • Wektor normalny powierzchni
  • Współczynnik połysku powierzchni
  • Współczynnik przezroczystości
  • Cienie, przesunięcie powierzchni
  • Lokalne układy współrzędnych

Współrzędne tekstury są w takich przypadkach związane ze współrzędnymi obiektu.

Tekstura może byc też wykorzystywana do opisu oświetlenia sceny. Nie jest wówczas związana z żadnym obiektem sceny, ale z umowną sferą o nieskończonym promieniu, w której centrum znajduje się scena. Ten rodzaj tekstury nazywany jest odwzorowaniem środowiska.

Przy wykorzystywaniu tekstur w systemach komputerowej generacji obrazu pojawiają się następujące problemy, które dalej zostaną omówione:

  • Problem generowania wzorca tekstury
  • Problem odwzorowania geometrycznego tekstury
  • Problem filtrowania tekstury

Istnieją dwa sposoby opisu tekstury w systemach komputerowej generacji obrazu, tzn.:

proceduralny - w postaci funkcji matematycznej lub zestawu parametrów dla określonej klasy funkcji

jawny - w postaci tablicy wartości funkcji tekstury

Szeroko rozpowszechnionymi klasami funkcji stosowanymi do proceduralnego generowania tekstur są szeregi fal sinusoidalnych, funkcje fraktalne czy procesy stochastyczne. Każda funkcja opisana proceduralnie może być stablicowana dla określonej części dziedziny funkcji i z określoną precyzją (tzw. gęstością próbek).

Po wygenerowaniu tekstury powstaje problem jej poprawnego odwzorowania na obraz obiektu na ekranie. W procesie odwzorowania tekstury na obraz obiektu możemy wyróżnić dwa etapy:

Parametryzację - etap polegający na określeniu przekształcenia przestrzeni tekstury w przestrzeń obiektu

Projekcję - etap polegający na odwzorowaniu obiektów na przestrzeń ekranu

Powszechnie stosowane odwzorowanie przestrzeni tekstury 2D na powierzchnię obiektu wykonywane jest najczęściej zgodnie ze schematem:

 

Rysunek 48. Odwzorowanie tekstury od piksela do mapy (tablicy) tekstury

 

Przeglądanie w przestrzeni ekranu, nazywane także odwzorowaniem odwrotnym, jest najczęściej stosowaną metodą, w której dla każdego piksela w przestrzeni ekranu jest wyznaczany jego obraz źródłowy w przestrzeni tekstury. Jest on następnie filtrowany dając wartość tekstury dla danego piksela. Przy stosowaniu tej metody wymaga się znajomości odwzorowania odwrotnego, tzn. z przestrzeni ekranu do przestrzeni tekstury, niezbędnego do wyznaczenia obrazu źródłowego piksela. Ponadto niezbędny jest bezpośredni dostęp do tablicy tekstury.

Odwzorowanie odwrotne można również wykonać na etapie parametryzacji, przechodząc z przestrzeni tekstury do przestrzeni obiektu.

 

Rys. 11.7. Tablica opisująca teksturę, złożona z tzw. tekseli (elementów tekstury) o współrzędnych (s,t)

 

Ten rodzaj odwzorowania, powszechnie znany pod nazwą "bump mapping" jest szczególnie efektowny, a zarazem bardzo prosty od strony algorytmicznej. Efekt pofałdowań na powierzchni uzyskuje się wyłącznie poprzez zaburzenia wersora normalnego do powierzchni - wynikająca stąd zmiana odbicia rozproszonego i ew. lustrzanego wystarcza do uzyskania wrażenia wklęsłych i wypukłych miejsc na powierzchni.

Rysunek 49. Zasada symulowania wypukłości na płaskiej powierzchni

Dla powierzchni P(uv)  definiuje się funkcję zaburzającą T(uv), tzw. mapę wypukłości. Funkcja ta określa zaburzenia powierzchni w kierunku wektora normalnego:

 

P"( u,v) =P( u,v) +T( u,v)\frac{N}{|N|}

 

Po wyznaczeniu wektora normalnego dla tak zaburzonej powierzchni i pominięciu mało znaczących członów otrzymuje się prostą zależność:

 

N^{\prime }( u,v) =\mathbf{N} +\frac{\partial T}{\partial u} \ \frac{\mathbf{N} \times \partial \mathbf{P} /\partial v}{| \mathbf{N}| } +\frac{\partial \mathbf{T}}{\partial v} \ \frac{\mathbf{N} \times \partial \mathbf{P} /\partial u}{| \mathbf{N}| }

 

Funkcją zaburzającą T (u,v ) może być dowolna funkcja, dla której da się policzyć pochodne. Jeśli wzór wypukłości jest zdefiniowany niematematycznie, za pomocą tablicy, to wartości pośrednie wyznacza się stosując biliniową interpolację, a pochodne funkcji zaburzającej - metodą różnic dzielonych. W szczególności funkcją zaburzającą może być dowolna mapa bitowa, pełniąca podwójną rolę - jako wzór płaski i jako mapa zaburzeń. Działanie algorytmu bump mapping można przeanalizować w następującej  aplikacji:

 

Rysunek 50. Odwzorowywanie wypukłości na powierzchni kuli.