Chciałbym znaleźć następujące informacje:
- Czym oni są?
- Przykładowe użycie w tworzeniu gier (obszar, w którym są używane)
Informacje o następujących typach wektorów:
Normal
Tangent
Binormal
Wystarczyłoby proste wyjaśnienie zorientowane na tworzenie gier.
Odpowiedzi:
Ogólnie mówiąc, wektor normalny reprezentuje kierunek skierowany bezpośrednio „na zewnątrz” z powierzchni, co oznacza, że jest ortogonalny (pod kątem 90 stopni do) dowolnego wektora, który jest współpłaszczyznowy z (w przypadku płaskiej powierzchni) lub styczny do (w przypadek niepłaskiej powierzchni) powierzchnia w danym punkcie.
Wektor styczny jest zwykle uważany za jeden wektor, który istnieje w płaszczyźnie powierzchni (dla płaskiej powierzchni) lub który leży stycznie do punktu odniesienia na zakrzywionej powierzchni (tj. Jeśli płaszczyzna płaska została zbudowana z tą samą normalną od punktu odniesienia , wektor styczny byłby współpłaszczyznowy z tą płaszczyzną).
Pojęcie wektora binormalnego jest nieco bardziej złożone; w grafice komputerowej ogólnie odnosi się do wektora bitangentu ( tutaj odniesienie ), który jest faktycznie „innym” wektorem stycznym dla powierzchni, który jest ortogonalny zarówno dla wektora normalnego, jak i wybranego wektora stycznej.
Jeśli chodzi o sposób ich obliczania, zmienia się to w zależności od złożoności powierzchni i od tego, jak precyzyjna ma być normalna (w niektórych przypadkach, na przykład w przypadku gładkich cieniowań, bardziej pożądane jest obliczenie normalnej dla przybliżonej powierzchni, gdy rzeczywista informacja o powierzchni nie jest obecna), ale podano tutaj kilka ogólnych wzorów .
Pod względem miejsca, w którym występują, odpowiedź brzmi WSZĘDZIE . Wektory normalne są używane do pozycjonowania kamer i obiektów w przestrzeni 3D, do określania trajektorii, odbić i kątów w obliczeniach fizycznych, do mapowania skór i tekstur do modeli 3D, do określania przesunięć trajektorii celu w programowaniu AI, aby dawać wskazówki shaderom na temat tego, jak do światła, cienia i punktów koloru na powierzchni w stosunku do świateł, aparatu i innych obiektów itp. Są to prawdopodobnie jedne z najbardziej przydatnych informacji w środowisku 3D, a nawet bardzo przydatne w 2D.
źródło
Zwykłe wektory są zwykle używane do obliczeń oświetlenia. Jest to wektor, który ma być prostopadły do powierzchni, która jest zbliżona do wierzchołków siatki. Normalne są zdefiniowane dla każdej pozycji wierzchołka, ale mogą być obliczane inaczej w zależności od tego, jak światło ma odbijać się w tym wierzchołku lub co chcesz zrobić z obliczeniami światła w module cieniującym.
Wektory styczne i binormalne są wektorami prostopadłymi do siebie oraz wektorem normalnym, który zasadniczo opisuje kierunek współrzędnych tekstury u, v względem powierzchni, którą próbujesz renderować. Zazwyczaj można ich używać wraz ze zwykłymi mapami, które umożliwiają tworzenie szczegółów oświetlenia powierzchni w modelu (nierówności).
Istnieją oczywiście inne sposoby wykorzystania tych wektorów i właśnie opisałem ich średnie użycie. Aby uzyskać więcej informacji technicznych, sugeruję wybranie książki o grafice komputerowej lub przejrzenie artykułów w Internecie. Istnieje wiele informacji na ten temat.
źródło
Różnica między styczną a binormalem jest mniej wyraźna na powierzchniach, ale nie powinno to być zbyt zaskakujące - binormal został pierwotnie zdefiniowany nie dla powierzchni, ale dla krzywych , gdzie koncepcja ma o wiele większy sens (i gdzie naprawdę żyje) jako „normalne”, ponieważ jest prostopadłe do kierunku ruchu, stąd nazwa). Mówiąc ściślej, biorąc pod uwagę krzywą przestrzenną w postaci p = V (t) = (V x (t), V y (t), V z (t)), a następnie styczną - która jest wektorem wskazującym kierunek ruchu - określa T u = dp / dt = (dV x / dt, dV z / dt, dV z/ dt). (Używam tutaj indeksu dolnego do rozróżnienia „nienormalizowanego”, ponieważ nie mam tutaj mojego MathJax.) Następnie (chwilowa) prędkość wzdłuż krzywej wynosi po prostu s = | T u |, długość wektora stycznego i „znormalizowany” wektor styczny to po prostu T = T u / s.
Następnie wektor normalny do krzywej jest pochodną znormalizowanego wektora stycznego w czasie, Nu = dT / dt; powodem, dla którego użyto tutaj znormalizowanej stycznej, jest powstrzymanie prędkości wzdłuż krzywej od wypaczania wektora normalnego - możesz pokazać, że przy tej definicji zawsze mamy TN u = 0. Zauważ, że N u niekoniecznie jest wektorem jednostkowym , więcej niż T U jest; w rzeczywistości jego wielkość k = | N u | jest (natychmiastowe) krzywizny krzywej w określonym momencie, a punkt P + N U jest środek tzw osculating koła (w danym punkcie). Znormalizowana normalna wynosi wtedy po prostu N = Nu/ k, a bitangent B jest iloczynem krzyżowym B = TxN; ponieważ zarówno T, jak i N są wektorami jednostkowymi i są względem siebie prostopadłe, B jest również wektorem jednostkowym, a (T, N, B) jest ramką ortogonalną.
Zauważ, że zgodnie z tą definicją „dwumianowy” do krzywej jest bliższy temu, co uważamy za normalny do powierzchni (jest normalny do „lokalnej” płaszczyzny krzywej), a normalna do krzywej jest bliższa temu, co myślimy o bitangencie powierzchni.
(Ten obraz, niestety, nie oddaje sprawiedliwości koncepcji, ale jest najlepszy, jaki mogłem znaleźć w sieci i nie mogę łatwo zbudować własnego ...)
źródło