Dlaczego normalne mapy przestrzeni stycznej nie są całkowicie niebieskie?

11

Dlaczego normalne mapy nie są po prostu niebieskie? Sądzę, że normalne mapy powinny mieć przeważnie kolor niebieski, ponieważ składnik Z normalnej reprezentowany jest przez niebieski. Normalne wskazują na powierzchnię w kierunku Z, więc powinniśmy widzieć kolor niebieski jako dominujący kolor, ponieważ składnik Z jest dominujący.

Z definicji przestrzeń styczna jest prostopadła do powierzchni. W dowolnym momencie powinniśmy mieć normalną zawsze wskazującą w Z (kierunek niebieski) bez X (kierunek czerwony) lub Y (kierunek zielony). Zatem mapa normalna (ponieważ jest to „mapa normalna”) powinna mieć kolor normalny, który jest po prostu niebieski (R = x = 0, G = y = 0, B = z = 1) bez żadnych odcieni pomiędzy nimi.

Ale normalne mapy nie są takie i mają w nich gradienty odcieni. Dlaczego tak jest?

konik morski
źródło

Odpowiedzi:

19

Przestrzeń styczna jest prostopadła do norm geometrycznych - interpolowanych norm wierzchołków wielokątów. Mapa normalna zapewnia normalne cieniowanie względem przestrzeni stycznej zdefiniowanej przez normalne geometryczne. Kiedy normalne cieniowanie nie jest takie samo jak geometryczne - tj. Ponieważ masz szczegółową teksturę powierzchni z funkcjami, które nie są modelowane w geometrii - normalna mapa odbiega od „płaskiego niebieskiego” (RGB 128, 128, 255).

To jest rodzaj sedna normalnych map - w ten sposób uzyskujesz szczegółowy, drobny kształt powierzchni, który ma być reprezentowany przez oświetlenie i cieniowanie, nawet jeśli nie wymodelowałeś wszystkich tych drobnych szczegółów za pomocą wielokątów.

Nathan Reed
źródło
1
Aby rozwinąć, normalne mapy są zwykle wykonywane w przestrzeni stycznej, ponieważ pozostaje to dokładne, gdy siatka jest animowana, podczas gdy np. Normalne mapy w przestrzeni modelu wymagałyby normalnej mapy animowanej w tandemie z dowolną animacją, którą możesz mieć (co byłoby szczególnie skomplikowane na przykład szkielety i arbitralne ragdoll). W przypadku geometrii statycznej nie ma technicznych powodów, dla których nie można mieć normalnej mapy przestrzeni modelowej, która nie jest całkowicie niebieska, co upraszcza nieznacznie moduł cieniujący piksele (kosztem spójności, potrzeby większej liczby jednostek cieniujących, a z kolei większej liczby jednostek cieniujących zmiany wyboru).
MaulingMonkey
1
(również normalne dane mapy zwykle nie mogą być ponownie użyte w wielu miejscach siatki, jeśli znajdują się w obszarze modelu)
MaulingMonkey
+1; ostatni paragraf jest kluczem do pytania - gdyby powierzchnia, na której się znajdowały, miała być całkowicie płaska, byłyby niebieskie. Jeśli powierzchnia miała mieć pewną chropowatość, normalne mapy modelują tę chropowatość bez potrzeby określania dodatkowej geometrii.
Maximus Minimus,
2

Prosta odpowiedź jest taka, że ​​wynika to z odchyleń zasięgu.

Normalne mają zakres od -1,0 do 1,0 dla każdego komponentu (x, y, z). Natomiast mapa normalna, przechowywana jako 24-bitowy obraz RGB, ma zakres od 0 do 255 dla każdego komponentu.

Oznacza to, że wszystkie składniki, które były zerowe, stają się 127,5 (dokładnie w środku) na normalnej mapie (co zaokrągla do 128).

Wektor normalny (0,0,1) staje się (128, 128, 255) na normalnym obrazie mapy, który jest purpurowym kolorem, a nie czystym niebieskim (0,0,255).

GraphixGuy
źródło