Ich möchte folgende Informationen erfahren:
- Was sind Sie?
- Beispielgebrauch in der Spieleentwicklung (der Bereich, in dem sie verwendet werden)
Informationen zu folgenden Vektortypen:
Normal
Tangent
Binormal
Eine einfache, auf die Spielentwicklung ausgerichtete Erklärung würde ausreichen.
Antworten:
Im Allgemeinen stellt ein Normalvektor die Richtung dar, die direkt von einer Oberfläche "heraus" zeigt, was bedeutet, dass er orthogonal (in einem Winkel von 90 Grad zu) zu jedem Vektor ist, der koplanar (im Fall einer flachen Oberfläche) oder tangential (in der Ebene) ist bei einer nicht ebenen Fläche) die Fläche an einem bestimmten Punkt.
Ein Tangentialvektor wird typischerweise als ein Vektor angesehen, der in der Ebene der Oberfläche existiert (für eine flache Oberfläche) oder der tangential zu einem Referenzpunkt auf einer gekrümmten Oberfläche liegt (dh wenn eine flache Ebene mit derselben Normalen vom Referenzpunkt konstruiert wurde) , der Tangentenvektor wäre mit dieser Ebene koplanar).
Das Konzept eines binormalen Vektors ist etwas komplexer. In der Computergrafik bezieht es sich im Allgemeinen auf einen Bitangensvektor ( hier als Referenz ), der effektiv der "andere" Tangensvektor für die Oberfläche ist, der sowohl zum Normalvektor als auch zum gewählten Tangensvektor orthogonal ist.
Dies hängt von der Komplexität der Oberfläche und der gewünschten Genauigkeit der Normalen ab (in einigen Fällen, z. B. bei glatten Shadern, ist es wünschenswerter, eine Normale für eine angenäherte Oberfläche zu berechnen. wenn die ist - Informationen für eine Fläche nicht vorhanden ist ), aber es gibt einige verallgemeinerte Formeln hier .
In Bezug auf den Ort ihres Auftretens lautet die Antwort ÜBERALL . Normale Vektoren werden verwendet, um Kameras und Objekte im 3D-Raum zu positionieren, Trajektorien, Reflexionen und Winkel in physikalischen Berechnungen zu bestimmen, Skins und Texturen auf 3D-Modelle abzubilden, Zieltrajektorien-Offsets in der AI-Programmierung zu bestimmen und Shadern Hinweise zu geben, wie Licht-, Schatten- und Farbpunkte auf einer Oberfläche im Verhältnis zu Licht, Kamera und anderen Objekten usw. Sie sind möglicherweise eine der nützlichsten Informationen in einer 3D-Umgebung, und sie sind auch in 2D äußerst nützlich.
quelle
Normale Vektoren werden typischerweise für Beleuchtungsberechnungen verwendet. Es ist ein Vektor, der senkrecht zu der Oberfläche sein soll, die durch die Scheitelpunkte eines Netzes angenähert wird. Normalen werden an jeder Scheitelpunktposition definiert, können jedoch unterschiedlich berechnet werden, je nachdem, wie das Licht an diesem Scheitelpunkt reflektiert werden soll oder was Sie mit Ihren Lichtberechnungen im Shader tun möchten.
Tangential- und Binormalvektoren sind Vektoren, die senkrecht zueinander stehen, und der Normalvektor, der im Wesentlichen die Richtung der u, v-Texturkoordinaten in Bezug auf die Oberfläche beschreibt, die Sie rendern möchten. Normalerweise können sie zusammen mit normalen Karten verwendet werden, mit denen Sie Beleuchtungsdetails unter der Oberfläche für Ihr Modell erstellen können (Unebenheiten).
Es gibt offensichtlich andere Möglichkeiten, diese Vektoren zu verwenden, und ich habe gerade die durchschnittliche Verwendung dieser Vektoren beschrieben. Für weitere technische Informationen empfehle ich Ihnen, ein Buch über Computergrafik zu lesen oder einige Artikel im Internet zu lesen. Es gibt viele Informationen darüber.
quelle
Der Unterschied zwischen der Tangente und dem Binormalen ist auf Oberflächen weniger sofort klar, aber das sollte nicht überraschen - das Binormal wurde ursprünglich nicht für Oberflächen, sondern für Kurven definiert , bei denen das Konzept viel sinnvoller ist (und wo es wirklich lebt) als "normal" insofern, als es orthogonal zur Bewegungsrichtung ist (daher der Name). Um genauer zu sein, bei einer Raumkurve der Form p = V (t) = (V x (t), V y (t), V z (t)), dann die Tangente - die ein Vektor ist, der in das ist Bewegungsrichtung - ist gegeben durch T u = dp / dt = (dV x / dt, ich z / dt, ich z/ dt). (Ich verwende den Index hier, um "unnormalisiert" zu unterscheiden, da ich hier kein MathJax habe.) Dann ist die (momentane) Geschwindigkeit entlang der Kurve nur s = | T u |, die Länge des Tangentenvektors, und der 'normalisierte' Tangentenvektor ist einfach T = Tu / s.
Dann ist der Normalenvektor zur Kurve die Ableitung des normalisierten Tangentenvektors über die Zeit, Nu = dT / dt; Der Grund dafür, dass die normalisierte Tangente hier verwendet wird, besteht darin, dass die Geschwindigkeit entlang der Kurve den normalen Vektor nicht verzerrt. Sie können zeigen, dass mit dieser Definition immer TN u = 0 ist. Beachten Sie, dass N u nicht unbedingt ein Einheitsvektor ist nicht mehr als Tu ist; in der Tat ist seine Größe k = | N u | ist die (momentane) Krümmung der Kurve am gegebenen Punkt und der Punkt p + N u ist der Mittelpunkt des sogenannten Schwingkreises (am gegebenen Punkt). Die normalisierte Normale ist dann nur N = N u/ k und der Bitangens B ist das Kreuzprodukt B = TxN; da T und N beide Einheitsvektoren sind und orthogonal zueinander sind, ist B auch ein Einheitsvektor und (T, N, B) ist ein orthogonaler Rahmen.
Beachten Sie, dass nach dieser Definition die Binormale einer Kurve näher an der Normalen einer Fläche liegt (sie ist die Normale der lokalen Ebene der Kurve) und die Normale einer Kurve näher an der Normalen Wir denken an den Bitangens auf einer Oberfläche.
(Dieses Bild wird dem Konzept leider nicht wirklich gerecht, aber es ist das Beste, was ich im Internet finden kann, und ich kann nicht ohne Weiteres mein eigenes erstellen ...)
quelle