Warum sind normale Karten überwiegend blau statt einer zufälligen Farbe?
Ich vermute, normale Vektoren eines 3D-Objekts können in jede Richtung zeigen, wie zum Beispiel:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Warum sind normale Karten überwiegend blau statt einer zufälligen Farbe?
Ich vermute, normale Vektoren eines 3D-Objekts können in jede Richtung zeigen, wie zum Beispiel:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Antworten:
Es gibt zwei Arten von normalen Karten, die üblicherweise in der Spieleentwicklung verwendet werden. Sie denken, sie sollten so funktionieren, wie ein Typ funktioniert (Normalkarten im Modellraum), aber die meisten Spiele verwenden einen anderen Typ (Normalkarten im Tangentialraum), weshalb Sie Normalkarten meist blaue Texturen zuordnen.
Bei Normalen-Maps im Modellraum codiert jeder Kanal den genauen Wert der Normalen unter Verwendung desselben Koordinatensystems wie die Scheitelpunkte des Modells, mit dem er verwendet wird. Dies bedeutet, dass verschiedene Teile der normalen Karte unterschiedliche Farbtöne haben, Pixel in der Nähe haben jedoch normalerweise ähnliche Farben. Ein Beispiel für eine Normalkarte im Modellraum wird oben angezeigt ( Quelle ).
Normalkarten im Tangentialraum sind normalerweise hellblau. Dieser Kartentyp definiert Normalen in einem Koordinatenraum, der für die Position jedes Pixels auf der Oberfläche des Netzes eindeutig ist. Es verwendet die (interpolierte) Scheitelpunktnormale als Z-Achse und zwei weitere orthogonale Vektoren, die als Tangens und Bitangens bezeichnet werden, als X- und Y-Achse. Grundsätzlich können Sie sich die Normalen in der Karte als einen "Versatz" von der Normalen für dieses Pixel vorstellen, der durch Interpolation der Scheitelpunktnormalen berechnet wird. Die Tangenten- und Bitangentenvektoren werden ebenfalls aus Vertexdaten interpoliert und bestimmen, welche Richtung auf dem Netz "oben" und "links" in der normalen Karte entspricht. Das in der Frage bereitgestellte Bild ist ein hervorragendes Beispiel dafür, wie eine typische Tangentenraum-Normalkarte aussieht. Daher werde ich hier kein weiteres Beispiel angeben.
Die Komponenten eines normalen normalen (nicht beabsichtigten) Wortspiels reichen von [-1, 1]
. Aber Komponenten einer Farbe in einem Bild reichen von [0, 1]
(oder [0, 255]
aber normalerweise sind sie normalisiert [0, 1]
). Normalen werden also so skaliert und versetzt, dass die Normale (0, 0, 1)
zur Farbe wird (0.5, 0.5, 1)
. Dies ist die hellblaue Farbe, die Sie in normalen Karten sehen, und sie zeigt keine Abweichung von der interpolierten Scheitelpunktnormalen an, wenn Tangentenraumnormalen verwendet werden.
Der Grund, warum Tangentenraumnormalen gegenüber Modellraumnormalen bevorzugt werden, liegt in der Tatsache, dass sie einfacher zu erstellen sind und für mehrere Netze verwendet werden können. Außerdem werden bei Verwendung eines animierten Netzes immer Tangentialraum-Normalen verwendet, da sich die Normalen ständig ändern.
bitangent
und binormal
richtig gemacht haben.
Die normale Karte zeigt meistens von einer Oberfläche nach außen. Angenommen, Sie gehen von der üblichen Abbildung der Z-Komponente der XYZ-Normalvektoren in Richtung "Tiefe" und der Abbildung auf die B-Komponente des RGB-Farbraums aus, dann sind die meisten Normalvektoren in erster Linie blau.
Wenn die Textur beispielsweise rot wäre, würde dies bedeuten, dass die normale Karte eine Oberfläche ist, die meist nach rechts zeigt. Sie können diese Funktion in Ihrem Beispielbild sehen, wenn die Beulen am rechten Rand einen rötlichen Farbton aufweisen.
Eine vollständig rötlich gefärbte Oberfläche würde keinen Sinn ergeben. Das würde auf eine Fläche hindeuten, die ganz nach rechts weist. Das würde nur mit Geometrie modelliert, nicht Teil einer normalen Karte.