Mapowanie normalnych

Mapowanie normalnych (ang. normal mapping lub Dot3 bump mapping) – jedna z wielu technik symulowania wypukłości na płaskich wielokątach, stosowana w grafice trójwymiarowej. Jest rozwinięciem koncepcji mapowania wypukłości (ang. bump mapping) opracowanej przez Jamesa F. Blinna i opisanej w publikacji z 1978 roku[1]. Podstawą działania mapowania normalnych jest zastąpienie wektorów normalnych opisanych przez geometrię, wektorami zapisanymi w specjalnej teksturze – mapie normalnych. Istnieje wiele podobnych technik symulowania wypukłości, jednak mapowanie normalnych jest obok parallax occlusion mappingu najczęściej stosowaną techniką we współczesnych grach komputerowych. Ma to miejsce głównie za sprawą niewielkiej złożoności obliczeniowej, wymaganej do uzyskania efektu końcowego. Mapowanie normalnych pozwala w bardzo wydajny sposób uzyskać wizualne złudzenie większej złożoności modelu trójwymiarowego niż jest ona w rzeczywistości. Dzięki temu liczba wielokątów potrzebnych do opisania takiego modelu może być znacznie zredukowana.

Mapowanie normalnych otoczenia zbioru Mandelbrota.
Mapowanie wypukłości pozwala uzyskać podobną wizualną złożoność modelu, nawet na bardzo uproszczonej geometrii.

Mapy normalnych edytuj

 
Różnica między zwykłą oświetloną powierzchnią a powierzchnią wygenerowaną z użyciem techniki mapowania normalnych.

Do uzyskania opisywanego efektu wykorzystana zostaje tak zwana „mapa normalnych”, będąca zapisaną w teksturze informacją o ułożeniu wektorów normalnych. Mówiąc dokładniej – każdy teksel takiej tekstury zamiast informacji o kolorze RGB, zawiera współrzędne XYZ określające kierunek i zwrot wektora normalnego. Model opisany zostaje taką mapą normalnych podobnie jak zwykłą kolorową teksturą, wykorzystując zazwyczaj te same współrzędne określające jej odwzorowanie na owym modelu. Mapa ta oczywiście nie jest wyświetlana, a jedynie służy jako kontener informacji. W fazie określania koloru pikseli dla generowanego obrazu przechowywane wektory normalne zostają odkodowane oraz zastosowane podczas obliczeń oświetlenia dla danego modelu trójwymiarowego. Ze względu na artefakty stratnej kompresji tekstur przy zapisywaniu wektorów, dokładna reprezentacja normalnych w teksturze może być inna (np. DXT5n).

W technice mapowania normalnych stosuje się dwa rodzaje map normalnych, z których każda przechowuje informację o wektorach normalnych w innej przestrzeni.

Mapy normalnych w przestrzeni stycznej edytuj

Tego typu mapy normalnych są stosowane przede wszystkim w grach komputerowych i innych symulacjach, w których obiekty podlegają deformacjom (np. animacja szkieletowa lub morph target animation). Wektory normalne w powyższej formie zawierają jedynie informacje o odchyleniu względem wektora normalnego określonego przez geometrię modelu. Domyślnie wektor reprezentujący niezaburzony wektor normalny skierowany jest w kierunku dodatniej osi Z: (0,0,1). W sytuacji, gdyby cała mapa normalnych kodowała taki niezaburzony wektor normalny, model zostałby wyświetlony w niezmienionej formie – jakby technika mapowania normalnych nie została zastosowana. Gdyby którykolwiek teksel mapy normalnych zawierał wektor odchylony od podanego wyżej, funkcja oświetlenia odbiłaby promień w innym kierunku niż normalnie.

Do poprawnego działania metoda ta wymaga obliczenia wektora stycznego dla każdego wielokąta na podstawie współrzędnych tekstury zapisanych w jego wierzchołkach. Gdy wektory normalne są uśredniane na wierzchołkach, wyliczone wektory styczne również powinny zostać uśrednione. Iloczyn wektorowy wektora normalnego geometrii i wyliczonego wektora stycznego tworzy drugi wektor styczny (ang. bitangent), co pozwala utworzyć układ współrzędnych zwany przestrzenią styczną. Wektory tego układu należy znormalizować i zortogonalizować (np. metodą Grama–Schmidta) względem wektora normalnego. Układ ten reprezentowany jest najczęściej przez macierz, która określana jest akronimem TBN (Tangent, Bitangent, Normal) ze względu na tworzące ją wektory. Macierz ta wykorzystywana jest w obliczeniach oświetlenia powierzchni z zastosowaniem omawianej techniki.

Charakterystyka:

  • jasne odcienie niebieskiego (łatwiejsze manipulacje w programach graficznych),
  • poprawne działanie w połączeniu z animacją,
  • uniwersalność – jedna mapa normalnych może pasować na wiele modeli,
  • wolniejszy od konkurencyjnej metody.

Mapy normalnych w przestrzeni obiektu edytuj

Mapy normalnych w przestrzeni obiektu stosuje się przede wszystkim do obiektów nie podlegających odkształceniom, jednak mogących wykonywać obroty czy translację (skalowanie może powodować problemy). Omawiana metoda, w porównaniu do poprzedniej, nie zawiera informacji jedynie o odchyleniu wektorów normalnych od narzuconych przez geometrię, a pełne współrzędne określające ich położenie. Stąd też różnica w kolorach takich map normalnych, gdy są wyświetlane jako obrazy. Mapy normalnych w przestrzeni obiektu zawierają szeroką gamę kolorów, natomiast te w przestrzeni stycznej ograniczoną do odcieni purpury, fioletu czy seledynu (wektory są skierowane w pobliże dodatniej osi Z). Metoda wykorzystująca bieżącą mapę normalnych jest szybsza od poprzedniej, jednak posiada poważne ograniczenia, które uniemożliwiają stosowanie jej w animowanych modelach trójwymiarowych.

Charakterystyka:

  • kolory tęczy (trudniejsze manipulacje w programach graficznych),
  • nie nadaje się do modeli podlegających deformacjom,
  • każdy model wymaga wygenerowania indywidualnej mapy normalnych,
  • szybszy (nie wymaga obliczeń na przestrzeni stycznej).
 
Tekstura oraz wygenerowane na jej podstawie mapy normalnych opisujące sferę – w przestrzeni stycznej (w środku) i w przestrzeni obiektu (po prawej).

Uwagi edytuj

Technika mapowania normalnych daje poprawny efekt wizualny w sytuacji, gdy nie występuje paralaksa, a więc gdy mapowane wypukłości są pomijalnie niskie. Wysokie nierówności powierzchni nie są poprawnie odwzorowywane przy patrzeniu na obiekt pod ostrym kątem do powierzchni. Poprawę przy małej częstotliwości wypukłości (czyli kiedy mają duże rozmiary) zapewnia mapowanie paralaksy, a przy większej, gdzie występuje już efekt zasłaniania jednych wypukłości przez drugie i zaczynają tworzyć się cienie, zaawansowane techniki mapowania paralaksy takie jak relief mapping i parallax occlusion mapping.

Zobacz też edytuj

Przypisy edytuj

  1. J. F. Blinn, Simulation of wrinkled surfaces. w: Computer Graphics (SIGGRAPH '78 Proceedings), 12(3), str. 286-292, sierpień (1978)