Mapowanie paralaksy

Parallax mapping z cieniowaniem.
Trawa odwzorowana metodą iterative parallax mapping.

Mapowanie paralaksy (ang. parallax mapping, offset mapping, virtual displacement mapping) – technika wizualizacji nierówności powierzchni obiektów trójwymiarowych przez odwzorowanie paralaksy tych wypukłości widocznej podczas ich obserwacji pod kątem. Paralaksę tę odwzorowuje się poprzez przesunięcie tekstur obiektu.

Mapowanie paralaksy wykorzystuje mapę wysokości, czyli teksturę z zapisanymi wysokościami dla poszczególnych punktów. Klasyczne mapowanie paralaksy polega na odczytaniu wysokości w punkcie tekstury, po czym znajduje się przesunięcie zgodnie ze wzorem:

i jest to przesunięcie na teksturze z obserwowanego punktu w kierunku obserwatora (kamery). SCALE i BIAS to stałe, a to znormalizowany wektor kierunku obserwacji wyrażony we współrzędnych przestrzeni stycznej, czyli powiązanych z teksturą.

Ponieważ ta technika zakłada, że wysokość nie zmieni się od punktu obserwowanego do punktu widocznego (wynikającego z przesunięcia), daje ona poprawne efekty tylko wtedy, gdy rozmiary wypukłości są wystarczająco duże. Małe, a zarazem wysokie nierówności powierzchni będą generować zakłócenia obrazu. W tej technice nie widać też efektu zasłaniania jednych nierówności przez drugie i nie jest możliwe rzucanie przez nie cieni, dlatego cieniowanie uzyskuje się poprzez użycie metody mapowania normalnych.

Rozwinięcia metody

Uogólnienie mapowania paralaksy na przypadek wysokich, a jednocześnie wąskich nierówności, które zapewnia też właściwe cieniowanie, zostało wypracowane w technikach znanych jako:

  • relief mapping,
  • parallax occlusion mapping,
  • steep parallax mapping,
  • iterative parallax mapping.

Trzy pierwsze metody wykorzystują śledzenie promienia od obserwatora, począwszy od miejsca, gdzie wchodzi on do bryły, aż do dna mapy wysokości (umieszczonej pod powierzchnią bryły w celu uniknięcia obcinania brzegów) i szukają punktu przecięcia. Różnią się one sposobem wyszukiwania i wyglądem otrzymanych cieni. Ostatnia uzupełnia klasyczny parallax mapping o wykorzystanie normalnej – w punkcie, gdzie pobiera się wysokość, sprawdza się również normalną i wyznacza styczną – przecięcie tej stycznej z powierzchnią bryły wyznacza punkt widoczny. Kolejne iteracje rozpoczynając z tak obliczonego punktu, znajdują coraz to bliższe obserwatorowi punkty widoczne. Domyślna (opublikowana) implementacja nie obsługuje cieniowania.

Mapowanie paralaksy którąkolwiek z tych metod zachowuje oryginalną sylwetkę (kształt widoczny pod światło) obiektu powodując, że efekt zanika na brzegach. Istnieje rozwinięcie mapowania paralaksy o modyfikację sylwetek (Policarpo). Dodatkowo, jedynym źródłem informacji o nierównościach jest mapa wysokości, która uniemożliwia wyświetlanie spodu, gdyż jest on powierzchnią równoległą do powierzchni obiektu. Opracowano więc technikę odwzorowania kilku powiązanych map wysokości, która zapewnia m.in. wizualizację ażurowych przedmiotów.

Zobacz też

Bibliografia

  • Detailed Shape Representation with Parallax Mapping, Kaneko et al., 2001
  • Dynamic Parallax Occlusion Mapping with Approximate Soft Shadows, Tatarchuk, 2006
  • Iterative Parallax Mapping with Slope Information, Premecz, 2006
  • Relief Mapping of Non-Height-Field Surface Details, Policarpo, Oliveira, 2006
  • Steep Parallax Mapping, McGuire, 2005

Media użyte na tej stronie

Parallax mapping.ogv
Autor: Glide111, Licencja: CC BY-SA 3.0
Parallax mapping with self-shadowing
Parallax grass.png
Autor: Qduaty, Licencja: CC BY-SA 4.0
Trawa wygenerowana metodą Iterative Parallax Mapping