Mapowanie odbić — Reflection mapping

Przykład mapowania odbić

W grafice komputerowej , mapowanie środowiska , lub odbicia mapowania , jest skuteczny w oparciu o obrazy oświetlenie technika zbliżony wygląd odblaskowej powierzchni za pomocą precomputed tekstury . Tekstura służy do przechowywania obrazu odległego otoczenia otaczającego renderowany obiekt.

Zastosowano kilka sposobów przechowywania otaczającego środowiska. Pierwszą techniką było mapowanie sferyczne , w którym pojedyncza tekstura zawiera obraz otoczenia odbity w sferycznym zwierciadle . Został prawie całkowicie pokonany przez mapowanie sześcianu , w którym środowisko jest rzutowane na sześć ścian sześcianu i przechowywane jako sześć kwadratowych tekstur lub rozkładane na sześć kwadratowych obszarów pojedynczej tekstury. Inne projekcje, które mają lepsze właściwości matematyczne lub obliczeniowe, obejmują mapowanie paraboloidy, mapowanie piramidy, mapowanie ośmiościanu i mapowanie HEALPix .

Mapowanie odbić jest jednym z kilku podejść do renderowania odbić , obok np. odbić w przestrzeni ekranu lub ray tracingu , który oblicza dokładne odbicie śledząc promień światła i podążając jego ścieżką optyczną . Kolor odbicia używany w obliczeniach cieniowania na pikselu jest określany przez obliczenie wektora odbicia w punkcie obiektu i odwzorowanie go na tekselu na mapie środowiska. Ta technika często daje wyniki, które są powierzchownie podobne do wyników generowanych przez ray tracing , ale jest mniej kosztowna obliczeniowo, ponieważ wartość radiacji odbicia pochodzi z obliczenia kątów padania i odbicia, po czym następuje wyszukiwanie tekstury, a nie śledzenie promienia w stosunku do geometrii sceny i obliczania promieniowania promienia, upraszczając obciążenie GPU .

Jednak w większości przypadków odwzorowane odbicie jest tylko przybliżeniem rzeczywistego odbicia. Mapowanie środowiska opiera się na dwóch rzadko spełnianych założeniach:

  1. Cały blask padający na zacieniony obiekt pochodzi z nieskończonej odległości. Jeśli tak nie jest, odbicie pobliskiej geometrii pojawia się w niewłaściwym miejscu na odbitym obiekcie. W takim przypadku w odbiciu nie widać paralaksy .
  2. Cieniowany obiekt jest wypukły , tak że nie zawiera wzajemnych odbić. Gdy tak nie jest, przedmiot nie pojawia się w odbiciu; tylko środowisko.

Mapowanie otoczenia jest zazwyczaj najszybszą metodą renderowania powierzchni odbijającej. Aby jeszcze bardziej zwiększyć szybkość renderowania, renderer może obliczyć położenie odbitego promienia w każdym wierzchołku. Następnie pozycja jest interpolowana przez wielokąty, do których dołączony jest wierzchołek. Eliminuje to potrzebę ponownego obliczania kierunku odbicia każdego piksela.

Jeśli używane jest mapowanie normalnych , każdy wielokąt ma wiele normalnych powierzchni (kierunek, w którym zwrócony jest dany punkt wielokąta), których można używać w połączeniu z mapą środowiskową w celu uzyskania bardziej realistycznego odbicia. W tym przypadku kąt odbicia w danym punkcie wielokąta będzie uwzględniał mapę normalną. Ta technika jest używana do nadania płaskiej powierzchni, która wygląda na teksturowaną, na przykład falisty metal lub szczotkowane aluminium.

Rodzaje

Mapowanie sfery

Mapowanie kuli przedstawia kulę padającego oświetlenia tak, jakby była widziana w odbiciu kuli odbijającej w kamerze ortogonalnej . Obraz tekstury można utworzyć, przybliżając tę ​​idealną konfigurację, używając obiektywu typu rybie oko lub wstępnie renderując scenę z mapowaniem sferycznym.

Mapowanie sferyczne ma ograniczenia, które umniejszają realizm wynikowych renderingów. Ponieważ mapy sferyczne są przechowywane jako projekcje azymutalne środowisk, które reprezentują, nagły punkt osobliwości (efekt „ czarnej dziury ”) jest widoczny w odbiciu na obiekcie, gdzie kolory tekselu na lub w pobliżu krawędzi mapy są zniekształcone z powodu nieodpowiednia rozdzielczość do dokładnego odwzorowania punktów. Mapowanie sferyczne również marnuje piksele, które są w kwadracie, ale nie w sferze.

Artefakty mapowania sferycznego są tak poważne, że są skuteczne tylko w przypadku punktów widzenia w pobliżu wirtualnej kamery ortograficznej.

Mapowanie kostki

Diagram przedstawiający widoczne odbicie, które zapewnia odbicie odwzorowane na sześcianie. Mapa jest faktycznie rzutowana na powierzchnię z punktu widzenia obserwatora. Podświetlenia, które w ray tracingu byłyby zapewnione przez śledzenie promienia i określenie kąta wykonanego za pomocą normalnych, można "zamazać", jeśli zostaną ręcznie namalowane w polu tekstury (lub jeśli już się tam pojawiają w zależności od tego, jak uzyskano mapę tekstury ), skąd będą rzutowane na mapowany obiekt wraz z resztą szczegółów tekstury.
Przykład trójwymiarowego modelu wykorzystującego odbicie w sześcianie

Mapowanie sześcienne i inne mapowania wielościanów zajmują się poważnymi zniekształceniami map sferycznych. Jeśli mapy sześcienne są wykonane i filtrowane poprawnie, nie mają widocznych szwów i mogą być używane niezależnie od punktu widzenia często wirtualnej kamery pobierającej mapę. Od tego czasu mapy sześcienne i inne mapy wielościanowe wyparły mapy sferyczne w większości aplikacji do grafiki komputerowej, z wyjątkiem uzyskiwania oświetlenia opartego na obrazach . Oświetlenie oparte na obrazach można wykonać za pomocą map sześciennych z korekcją paralaksy.

Ogólnie rzecz biorąc, mapowanie sześcienne wykorzystuje ten sam skybox, który jest używany w renderingach zewnętrznych. Odbicie mapowane sześcianowo odbywa się poprzez określenie wektora , na którym obiekt jest oglądany. Ten promień kamery jest odbijany od normalnej powierzchni miejsca, w którym wektor kamery przecina obiekt. Powoduje to odbity promień, który jest następnie przekazywany do mapy sześcianu, aby uzyskać teksel, który zapewnia wartość radiancji używaną w obliczeniach oświetlenia. Stwarza to efekt, że obiekt jest odblaskowy.

Mapowanie HEALPix

Mapowanie środowiska HEALPix jest podobne do innych mapowań wielościanów, ale może być hierarchiczne, zapewniając w ten sposób ujednoliconą strukturę do generowania wielościanów lepiej przybliżających sferę. Pozwala to na mniejsze zniekształcenia kosztem zwiększonych obliczeń.

Historia

Prekursorami prac nad mapowaniem tekstur był Edwin Catmull , z udoskonaleniami zakrzywionych powierzchni przez Jamesa Blinna , w 1974 roku. Blinn kontynuował dalsze udoskonalanie swojej pracy, opracowując mapowanie środowiska do 1976 roku.

Gene Miller eksperymentował z mapowaniem sferycznego środowiska w 1982 roku w MAGI Synthavision .

Wolfgang Heidrich wprowadził mapowanie paraboloidowe w 1998 roku.

Emil Praun wprowadził mapowanie ośmiościanu w 2003 roku.

Mauro Steigleder wprowadził mapowanie piramid w 2005 roku.

Tien-Tsin Wong, et al. wprowadził istniejące mapowanie HEALPix do renderowania w 2006 roku.

Zobacz też

Bibliografia

Zewnętrzne linki