Dlaczego normalne mapy są przeważnie niebieskie zamiast przypadkowego koloru?
Myślę, że normalne wektory obiektu 3D mogą wskazywać w każdym kierunku, na przykład:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Dlaczego normalne mapy są przeważnie niebieskie zamiast przypadkowego koloru?
Myślę, że normalne wektory obiektu 3D mogą wskazywać w każdym kierunku, na przykład:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Odpowiedzi:
Istnieją dwa rodzaje normalnych map powszechnie używanych w tworzeniu gier. Twoim zdaniem powinny działać tak, jak działa jeden typ (normalne mapy w przestrzeni modelowej), ale większość gier używa innego typu (normalne mapy w przestrzeni stycznej), dlatego kojarzysz głównie niebieskie tekstury z normalnymi mapami.
W przypadku map normalnych w przestrzeni modelu każdy kanał koduje dokładną wartość normalną przy użyciu tego samego układu współrzędnych, co wierzchołki modelu, z którym jest używany. Oznacza to, że różne części normalnej mapy będą miały różne odcienie, ale piksele w pobliżu zwykle będą miały podobne kolory. Przykład normalnej mapy przestrzeni modelowej pojawia się powyżej ( źródło ).
Normalne mapy przestrzeni stycznej są zwykle jasnoniebieskie. Ten typ mapy definiuje normalne w przestrzeni współrzędnych unikatowej dla pozycji każdego piksela na powierzchni siatki. Wykorzystuje (interpolowany) wierzchołek normalny jako oś Z oraz dwa inne wektory ortogonalne, zwane styczną i bitangentem, jako osie X i Y. Zasadniczo można traktować normalne na mapie jako „przesunięcie” względem normalnej dla tego piksela obliczone przez interpolację normalnych wierzchołków. Wektory styczne i bitowe są również interpolowane z danych wierzchołków i określają, który kierunek na siatce odpowiada „w górę” i „w lewo” na normalnej mapie. Obraz przedstawiony w pytaniu stanowi doskonały przykład tego, jak wygląda typowa mapa normalna w przestrzeni stycznej, więc nie podam tutaj innego przykładu.
Składniki normalnego normalnie (bez zamierzonej gry słów) wahają się od [-1, 1]
. Ale komponenty koloru w obrazie mieszczą się w zakresie od [0, 1]
(lub [0, 255]
zwykle są one znormalizowane do [0, 1]
). Tak więc normalne są skalowane i przesunięte tak, że normalna (0, 0, 1)
staje się kolorem (0.5, 0.5, 1)
. Jest to jasnoniebieski kolor widoczny na normalnych mapach i oznacza brak odchyleń od interpolowanego wierzchołka normalnego przy zastosowaniu normalnych przestrzeni stycznej.
Powodem, dla którego normalne w przestrzeni stycznej są preferowane w stosunku do normalnych w obszarze modelu, jest fakt, że są łatwiejsze do utworzenia i mogą być używane do wielu siatek. Dodatkowo, w przypadku użycia z animowaną siatką, zawsze używane są normalne z przestrzeni stycznej, ponieważ normalne stale się zmieniają.
bitangent
i binormal
prawidłowe.
Normalna mapa najczęściej wskazuje na zewnątrz z powierzchni. Zakładając, że korzystasz ze zwykłego mapowania komponentu Z wektorów normalnych XYZ, będącego kierunkiem „głębokości”, oraz mapowania do komponentu B przestrzeni kolorów RGB, w efekcie większość normalnych wektorów będzie głównie niebieska.
Jeśli tekstura byłaby, powiedzmy, czerwona, oznaczałoby to, że normalna mapa jest powierzchnią, która jest w większości skierowana w prawo. Możesz zobaczyć tę funkcję na przykładowym obrazie, ponieważ prawa krawędź wypukłości ma czerwonawy odcień.
Kompletna powierzchnia o czerwonawym kolorze nie miałaby sensu. Oznaczałoby to powierzchnię całkowicie skierowaną w prawo. To byłoby po prostu modelowane za pomocą geometrii, a nie części normalnej mapy.