GKIW Moduł 10: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Daniel-PW (dyskusja | edycje)
Nie podano opisu zmian
Daniel-PW (dyskusja | edycje)
Nie podano opisu zmian
Linia 156: Linia 156:
Przy czym <math>\vec{D}\,</math> jest wektorem zaburzenia:
Przy czym <math>\vec{D}\,</math> jest wektorem zaburzenia:


:<math>\vec{D}=\frac{\partial B(u,v)}{\partial u}\cdot \vec{S}-\frac{\partial B(u,v)}{\partial v}\cdot \vec{T}</math>
:<math>\displaystyle \vec{D}=\frac{\partial B(u,v)}{\partial u}\cdot \vec{S}-\frac{\partial B(u,v)}{\partial v}\cdot \vec{T}</math>


gdzie <math>\vec{S}\,</math> i <math>\vec{T}\,</math> są wektorami stycznymi do powierzchni <math>S(u,v)\,</math>.
gdzie <math>\vec{S}\,</math> i <math>\vec{T}\,</math> są wektorami stycznymi do powierzchni <math>S(u,v)\,</math>.

Wersja z 14:33, 4 gru 2006



Tekstury

Nakładanie tekstury jest jednym z najważniejszych zadań grafiki realistycznej. Pozwala zwiększyć stopień realizmu generowanych obrazów, dodając pewne cechy obiektom, które bez tego wyglądałyby nienaturalnie. Jednocześnie ponieważ jest to nakładanie – odwzorowanie obrazu na powierzchni materiału, to jest to technika szybsza i efektywniejsza niż realizacja rzeczywistego definiowania właściwości powierzchni obiektu.

Przedstawione zastosowania pokazują możliwości jakie daje tekstura. Nie jest to tylko nałożenie obrazu – zdjęcia, ale może to być także zmiana pewnych postrzeganych właściwości materiałowych. Możliwa jest także zmiana pewnych cech związanych z otoczeniem – tekstura jest także stosowana do przyspieszenia lub uproszczenia wyznaczania oświetlenia.

W tym zestawieniu warto wyróżnić trzy kategorie odwzorowania.

  • Odwzorowanie wzoru – przeniesienie mapy barw (np. zdjęcia) na powierzchnię. Od takiej realizacji oczekujemy tylko, aby nałożona mapa była związana z obiektem.
  • Odwzorowanie cech zależnych od obserwatora. W tym przypadku dodatkowo tekstura powinna zachowywać właściwości zależne od pewnych kierunków związanych ze sceną (np. położenie źródeł światła) i kierunków związanych z obiektem (np. anizotropia).
  • Odwzorowanie zmieniające geometrię powierzchni materiału. Oczywiście zmiana może być w tym przypadku pozorna (np. przy zastosowaniu mapowania nierówności) ale realizacja powoduje powstanie wrażenia zgodnego z oczekiwaniem.

Jak widać nakładanie tekstury może obejmować szeroki zestaw zagadnień. Formalnie należałoby więc definiować teksturę jako pewną wektorowa funkcje wielu zmiennych. Liczba zmiennych jest zależna od właściwości odwzorowania.


Podstawowe problemy stosowania tekstur

Pierwszym problemem jaki pojawia się przy odwzorowaniu tekstur jest pozyskiwanie tekstur. Znane są „banki” tekstur w Internecie zawierające wzory o różnej rozdzielczości i jakości (a także różnej cenie). Można także pokazać metody generowania wzorów.

Odwzorowanie geometryczne jest operacją, która musi zapewnić możliwość nałożenia wzorca na powierzchnię, w taki sposób żeby nie stracić jakości wzorca.

Bezpośrednio z nakładaniem tekstury, a także z rzutowaniem perspektywicznym są związane problemy próbkowania, powodujące, że trudno jest w prosty sposób uzyskać zawsze dobrą jakość odwzorowanej tekstury mimo posiadania znakomitych wzorców. Problem ten można rozwiązać stosując filtrowanie tekstur.


Rodzaje tekstur

Tekstury dwuwymiarowe w postaci prostokątnego wzoru są najczęściej spotykane. Również właściwości trójwymiarowe materiałów spotykane są w postaci zestawów dwuwymiarowych wzorców – na przykład przecięć pod różnymi kątami.


Generowanie tekstur I

Opis proceduralny pozwala generować tekstury za pomocą odpowiednio dobranych funkcji matematycznych lub zestawu parametrów dla wybranej klasy funkcji. Tablicowanie parametrów tekstury daje gotowy zestaw wartości dla realizacji obrazowania. Stosując opis proceduralny można dostosować wybrany podzbiór dziedziny dla konkretnego rozwiązania. Jest to bardzo istotne, gdyż gęstość próbkowania daje z jednej strony określony poziom szczegółów, a z drugiej strony zapewnia możliwość minimalizacji zniekształceń związanych z nakładaniem próbkowanego obrazu. Parametry tablicowane są realizacją funkcyjną dla określonej gęstości próbkowania. Ponieważ parametr ten nie może być zmieniany w trakcie odwzorowania, stosuje się zestawy takiej samej tekstury tablicowane dla różnej gęstości próbkowania.

Niezależny podział wyróżnia generowanie deterministyczne i stochastyczne. Deterministyczne, w którym istnieją reguły rozmieszczania wzorca tekstury na powierzchni materiału. Generowanie stochastyczne nie zapewnia informacji o ustalonej strukturze wzorca. Pozwala natomiast na tworzenie lokalnych zmian parametru (np. barwy) powierzchni wynikających z pewnego prawdopodobieństwa.

Często zachodzi potrzeba łączenia różnych technik aby uzyskany efekt jak najlepiej odpowiadał rzeczywistości. Przykładem może być generowanie trójwymiarowej tekstury słojów drewna. Można to zrobić przyjmując opis proceduralny deterministyczny opierając się na modelu zawierającym koncentrycznie umieszczone walce. Średnicę walca zmienia się dodatkowo przez deterministyczne zaburzenie w postaci harmonicznych. Ale aby zwiększyć podobieństwo do rzeczywistego obiektu dodaje się niewielkie zaburzenia stochastyczne zarówno do średnicy walców i położenia ich osi obrotu, jak również do barwy słojów.


Generowanie tekstur II

Modele deterministyczne można podzielić na cztery grupy.:

Modele okresowe, w których wzorzec jest nakładany na przestrzeń tekstury w ramach siatki. Okna siatki odpowiadają rozmiarom wzorca. Wzorzec może być powielony na wszystkie okna siatki lub tylko na ich część. Źródłem wzorca mogą być obiekty naturalne (skanowane, fotografowane) lub wygenerowane obrazy (edytory graficzne itp.).

W modelach o losowym rozmieszczeniu na powierzchni przestrzeni tekstury pojawiają się losowo rozmieszczone elementy (tzw. „bomby”) o określonej barwie i kształcie.

Modele mozaikowe są generowane bezpośrednio w przestrzeni tekstury w postaci rozrastających się, losowo ułożonych komórek. Każda z nich rozrasta się, aż do napotkania innej komórki.

Modele syntaktyczne generowane są bezpośrednio w przestrzeni tekstury z wykorzystaniem języków formalnych i reguł gramatycznych.


Odwzorowanie tekstur

Parametryzacja w przestrzeni obiektu zakłada, że obiekty są generowane w swoich własnych układach współrzędnych. Odwzorowanie tekstury jest opisem przekształcenia układu współrzędnych obiektu na układ współrzędnych tekstury. Takie odwzorowanie jest nazywane przekształceniem prosty.

Ten typ parametryzacji jest najwygodniejszy do stosowania w metodzie śledzenia promieni.

Parametryzacja w przestrzeni świata określa odwzorowanie przestrzeni tekstury na przestrzeń świata. Jest to nazywane często przekształceniem odwrotnym.

Projekcja jest przekształceniem przestrzeni obiektu na przestrzeń ekranu (rzutu). Ponieważ najczęściej w rzutowaniu jest wykorzystywane rzutowanie perspektywiczne więc również projekcja tekstury jest realizowana w postaci przekształcenia perspektywicznego.


Parametryzacja powierzchni


Prezentowane przykłady są parametryzacjami w przestrzeni obiektu. Pierwsza funkcja przekształca sferę obiektu na prostokąt tekstury.

Drugi przykład jest funkcją przekształcającą powierzchnię boczną walca (powierzchnia obiektu) na prostokąt tekstury.


Przykłady nakładania tekstur

Prezentowane przykłady opisane są jako modele okresowe, przy czym w przypadku zdjęcia budynku Metropolita prostokąt tekstury jest nałożony dokładnie jeden raz, natomiast w pozostałych dwóch przypadkach prostokątny wzorzec jest powielany wielokrotnie.


Mapowanie nierówności I

Modelowanie nierówności powierzchni jest przykładem tekstury dwuwymiarowej. Metoda ta (ang. bump mapping) została zaproponowana przez Blinna w 1978 roku. Pozwala uzyskiwać widok powierzchni o zmodyfikowanym kształcie bez modyfikowania samej geometrii powierzchni.

Przy zastosowaniu tekstury Blinna zmianę kierunku wektora normalnego uzyskuje się przez dodatkową funkcje zaburzenia. Zmodyfikowany wektor normalny jest wykorzystywany w modelu oświetlenia, dzięki czemu są postrzegane lokalne zmiany oświetlenia. Oczywiście wektor zmieniony funkcją zaburzenia może, tak naprawdę, tworzyć dowolny kąt z powierzchnią obiektu, w związku z tym głównym problemem jest dobranie funkcji zaburzenia w taki sposób, aby zmiana wektora odpowiadała rzeczywistej zmianie kształtu powierzchni.


Mapowanie nierówności II

Niech S(u,v)=[xS(u,v),yS(u,v),zS(u,v)] opisuje parametrycznie powierzchnię, która będzie odkształcona. Analogicznie niech B(u,v)=[xB(u,v),yB(u,v),zB(u,v)] opisuje zaburzenie (teksturę). Wektor normalny N do powierzchni S(u,v) można wyznaczyć jako:

N=S(u,v)u×S(u,v)v

Jeśli nałożymy teksturę na powierzchnię to powstanie powierzchnia zniekształcona

S(u,v)=S(u,v)+B(u,v)N

Wektor normalny do tak otrzymanej powierzchni można wyznaczyć analogicznie. Przy czym różniczkując równanie zniekształconej powierzchni otrzymuje się:

S(u,v)u=S(u,v)u+B(u,v)uN+B(u,v)Nu
S(u,v)v=S(u,v)v+B(u,v)vN+B(u,v)Nv

Blinn założył, że zaburzenie jest na tyle małe, że ostatnie wyrazy w tych równaniach można pominąć. Wtedy aproksymowany wektor normalny do zniekształconej powierzchni można opisać jako

N(S(u,v)u+B(u,v)uN )×(S(u,v)v+B(u,v)vN )

to oznacza, że

N=N+D

Przy czym D jest wektorem zaburzenia:

D=B(u,v)uSB(u,v)vT

gdzie S i T są wektorami stycznymi do powierzchni S(u,v).

Takie rozwiązanie daje bardzo prostą możliwość definicji wektora normalnego odkształconej powierzchni za pomocą wektorów zaburzenia. Wadą zaproponowanej przez Blinna metody jest aproksymacja wektora normalnego. Stąd powstało wiele różnych realizacji tej metody, wykorzystujących różne warianty uproszczenia. Znane są również próby aplikacji sprzętowych mapowania nierówności Blinna.