Mapowanie wypukłości — Bump mapping
Bump mapping to technika mapowania tekstur w grafice komputerowej do symulacji wypukłości i zmarszczek na powierzchni obiektu. Osiąga się to poprzez zakłócenie normalnych powierzchni obiektu i użycie zaburzonej normalnej podczas obliczeń oświetlenia. Rezultatem jest pozornie nierówna powierzchnia, a nie gładka powierzchnia, chociaż powierzchnia obiektu pod spodem nie ulega zmianie. Mapowanie nierówności zostało wprowadzone przez Jamesa Blinna w 1978 roku.
Mapowanie normalne jest najczęściej używaną odmianą mapowania wypukłości.
Zasady
Mapowanie wypukłości to technika stosowana w grafice komputerowej, która sprawia, że renderowana powierzchnia wygląda bardziej realistycznie poprzez symulowanie niewielkich przemieszczeń powierzchni. Jednak w przeciwieństwie do mapowania przemieszczeń geometria powierzchni nie jest modyfikowana. Zamiast tego modyfikowana jest tylko normalna powierzchni, tak jakby powierzchnia została przesunięta. Zmodyfikowana normalna powierzchni jest następnie używana do obliczeń oświetlenia (przy użyciu na przykład modelu odbicia Phonga ) dając wygląd szczegółu zamiast gładkiej powierzchni.
Mapowanie wypukłości jest znacznie szybsze i zużywa mniej zasobów przy tym samym poziomie szczegółowości w porównaniu z mapowaniem przemieszczeń, ponieważ geometria pozostaje niezmieniona.
Istnieją również rozszerzenia, które oprócz zwiększenia poczucia głębi modyfikują inne cechy powierzchni. Mapowanie paralaksy i mapowanie horyzontu to dwa takie rozszerzenia.
Podstawowym ograniczeniem mapowania wypukłości jest to, że zaburza ono tylko normalne powierzchni bez zmiany samej powierzchni. Sylwetki i cienie pozostają zatem nienaruszone, co jest szczególnie widoczne w przypadku większych symulowanych przemieszczeń. Ograniczenie to można przezwyciężyć za pomocą technik, w tym mapowania przemieszczeń, w którym nierówności są nakładane na powierzchnię lub przy użyciu izopowierzchni .
Metody
Istnieją dwie podstawowe metody wykonywania mapowania wypukłości. Pierwsza wykorzystuje mapę wysokości do symulacji przemieszczenia powierzchni, dając zmodyfikowaną normalną. Jest to metoda wymyślona przez Blinna i jest zwykle określana jako mapowanie wypukłości, chyba że określono inaczej. Etapy tej metody podsumowano w następujący sposób.
Przed wykonaniem obliczeń oświetlenia dla każdego widocznego punktu (lub piksela ) na powierzchni obiektu:
- Sprawdź wysokość na mapie wysokości, która odpowiada pozycji na powierzchni.
- Oblicz normalną powierzchni mapy wysokości, zwykle przy użyciu metody różnic skończonych .
- Połącz normalną do powierzchni z kroku drugiego z prawdziwą („geometryczną”) normalną do powierzchni, tak aby połączona normalna wskazywała w nowym kierunku.
- Oblicz interakcję nowej „wyboistej” powierzchni ze światłami w scenie, korzystając na przykład z modelu odbicia Phonga .
Rezultatem jest powierzchnia, która wydaje się mieć prawdziwą głębię. Algorytm zapewnia również, że wygląd powierzchni zmienia się w miarę przesuwania się świateł w scenie.
Inną metodą jest określenie mapy normalnych, która bezpośrednio zawiera zmodyfikowaną normalną dla każdego punktu na powierzchni. Ponieważ normalna jest określona bezpośrednio, a nie wyprowadzona z mapy wysokości, ta metoda zwykle prowadzi do bardziej przewidywalnych wyników. Ułatwia to artystom pracę, dzięki czemu jest to obecnie najpopularniejsza metoda mapowania wypukłości.
Techniki mapowania bump w czasie rzeczywistym
Programiści grafiki 3D w czasie rzeczywistym często używają odmian tej techniki w celu symulacji mapowania wypukłości przy niższych kosztach obliczeniowych.
Jednym z typowych sposobów było użycie stałej geometrii, która pozwala na prawie bezpośrednie wykorzystanie powierzchni mapy wysokości. W połączeniu z wstępnie obliczoną tabelą przeglądową do obliczeń oświetlenia, metoda może być zaimplementowana z bardzo prostą i szybką pętlą, pozwalającą na uzyskanie efektu pełnoekranowego. Ta metoda była powszechnym efektem wizualnym, gdy po raz pierwszy wprowadzono mapowanie wypukłości.
Zobacz też
Bibliografia
Linki zewnętrzne
- Cieniowanie wypukłe dla tekstur objętościowych , Max, NL, Becker, BG, Computer Graphics and Applications, IEEE, lipiec 1994, tom 14, wydanie 4, strony 18 – 20, ISSN 0272-1716
- Proste tworzenie wektorów na piksel w skali szarości, aby mapa wypukłości działała i nie tylko
- Przykład mapowania wypukłości ( aplet Java )