Co to są wektory normalne, styczne i dwumianowe i jak się je stosuje?

47

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.

Jaanus Varus
źródło
1
Zadajesz zbyt wiele pytań. Najlepiej po prostu przeczytaj, jak działają wektory. Od zera. Po drodze załóż również swoją trygonometrię.
Sidar,
3
Uznałem, że może to być wiele pytań, ale z drugiej strony miło byłoby mieć te informacje razem pod jednym pytaniem. Dlatego właśnie poprosiłem o proste wyjaśnienia.
Jaanus Varus

Odpowiedzi:

43

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.Normalny, styczny, bitangent

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.

Strzelba Ninja
źródło
2
Cholera, powinienem był dodać zdjęcie: p
RobCurr
Dziękuję za dokładne wyjaśnienie! Oznaczone jako odpowiedź.
Jaanus Varus
2
Pomocne może być przeczytanie tego artykułu, dlaczego założenie kwadratowej poprawki jest nieprawidłowe i dlaczego wszystko, co wszyscy mówią o stycznych i bitangentach, jest dość fałszywe. Określa właściwą matematykę, którą należy zastosować, ale niestety nie jestem wystarczająco kompetentny, aby udzielić poprawnej odpowiedzi.
Lars Viklund
Wektory bitangentowe i binormalne są równoważne. Są to imiona przypisane do tej samej rzeczy i zależy to tylko od twojego „mentalnego punktu widzenia”, jakiego imienia użyć.
Nikos
15

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.

RobCurr
źródło
4
+1 - Następnym razem jednak; dodaj zdjęcie.
Pieter Geerkens
9

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 ...)

wprowadź opis zdjęcia tutaj

Steven Stadnicki
źródło