Normal map vs. Height map?

2 Antworten

Eine Normal-Map ist eine Bump-Map.

Bei einer Normal-Map werden die Normalen direkt in einer Texture gespeichert.

Bei einer Bump-Map, die keine Normal-Map ist, wird aus einer Height-Map die Höhe der Geometrie an einer bestimmten Stelle bestimmt und dann die Normale entsprechend der Höhe verändert.

Siehe auch:

https://en.wikipedia.org/wiki/Bump_mapping

Im wesentlichen sollte sich mit einer Normal-Map mehr anstellen lassen.

Nope. Eine Height Map wird meist als Synonym für eine Displacement Map verwendet. Die wird gemeinhin mit hoher Bittiefe erstellt und beeinflusst die die Position von Vertices entlang seiner lokalen Z-Achse.

Dann gibt es noch die Bump Map, die prinzipiell genauso aussieht und funktioniert, allerdings wird hier nur das Shading beeinflusst. Die verwendet man für sehr feine Details. In enigen Programmen wird auch diese als Height Map bezeichnet.

Eine Normal Map erfüllt denselben Zweck, hat aber den Vorteil, dass hier der Winkel der Oberflächennormalen beeinflusst wird. Im Vergleich zur Bump Map wirken die Resultate sauberer, glatter und natürlicher. Allerdings mit dem Nachteil, dass für denselben Detailgrad eine bedeutend größere Normal Map benötigt wird.

Und dann gibt es noch Vector Displacement, das funktioniert wie klassisches Displacement Mapping, aber in jeder Richtung. Danach hast du zwar nicht gefragt, aber ich erwähne es der Vollständigkeit halber trotzdem.

Diyhorst 
Fragesteller
 19.03.2022, 14:31

Danke,

Im Vergleich zur Bump Map wirken die Resultate sauberer, glatter und natürlicher. Allerdings mit dem Nachteil, dass für denselben Detailgrad eine bedeutend größere Normal Map benötigt wird.

Dass das so ist, sehe ich z.b. In Blender, mir gehts darum warum das so ist. Wenn ich eine einfache Geometrie auf einer plane sumuliere, wie oben beschrieben, müsste doch das Resultat das gleiche sein oder?

0
OnkelOzzy  19.03.2022, 15:16
@Diyhorst

Eben nicht, weil ein Konus Schrägen hat. Die werden via Normal Map I'm Shader korrekt definiert, mit einer Bump Map nicht.

Bei Quadern oder Zylindern würde es keinen Unterschied machen.

0
Diyhorst 
Fragesteller
 19.03.2022, 15:21
@OnkelOzzy

Wie definiert dann die Graustufe den schader? Die Oberfläche wird ja in beiden Fällen geshaded, also in beiden Fällen der Schatten richtig dargestellt. Nur bei der normal map 'richtiger'.

0
OnkelOzzy  19.03.2022, 15:29
@Diyhorst

In Graustufen ist jeder Pixel ein quadratischer Höhenpunkt. Das sieht dann ähnlich aus, wie aus Klötzchen gebaut. Wenn du nach heranzoomst, kannst du die Treppchenbildung auch deutlich sehen.

In der Normal Map werden die Pixel hingegen je nach Lage schräggestellt.

0
Diyhorst 
Fragesteller
 19.03.2022, 15:40
@OnkelOzzy

Wie kann denn ein Pixel schraggestellt werden ;-) der schader rechnet doch für jeden Pixel einen Wert aus. Im einfachsten Falle wo ist hell wo ist dunkel im Abhängigkeit von dem vector der Lichtquelle. Im Falle der normal map kann der shader für jedes Pixel auf dessen rgb Wert zurückgreifen und sodann aus den zwei Vektoren etwas ausrechnen. Und das genau weil es ja zwei Vektoren sind. Im Falle der Graustufe kann der shader ja nur einen z Wert mit dem vektor des Lichts verrechnen. Und genau wie das geht hätte ich gerne gewusst. Falls ich mir das überhaupt so richtig zusammenreißen. Danke für deine Zeit!!

0
OnkelOzzy  19.03.2022, 16:42
@Diyhorst

Google mal nach Normals, da wird das genau erklärt. Es gibt einen Grund dafür, dass eine Normal Map bunt ist. Dadurch hast du einen Wert für Höhe, sowie X- und Y- Winkel jedes Pixels.

Wenn du es überprüfen willst, es gibt jede Menge vorgefertigter PBR-Texturen. Da findest du oft sowohl Bump- als auch Normal-Maps. Mappe beides auf eine Plane und Zoome soweit ran, dass du die einzelnen Pixel siehst. Dann erkennst du deutlich den Unterschied im Shading.

0
Diyhorst 
Fragesteller
 19.03.2022, 17:00
@OnkelOzzy

Ich hab doch geschrieben dass ich weiss wo der Unterschied ist. Ich hatte ja gerade nach dem Verfahren gefragt wie der shader die Graustufen interpretiert bzw wie er zum Ergebnis kommt, bei der normal map Bild ich mir ein dass ichs versteh

0
OnkelOzzy  19.03.2022, 18:35
@Diyhorst

Und ich versuche, es zu erklären. Bei beiden Texturen werden die Pixel sozusagen als Faces interpretiert. Bei Bump Maps entsprechen diese den Normals der Faces, auf die sie gemappt sind.

Wenn du ein mittelgrau als Bumpmap angibst, hast du eine unveränderte Oberfläche. Hellere Pixel werden erhöht, dunklere gesenkt. Die Richtung, in der die Normalen zeigen, wird dabei nicht beeinflusst.

Bei Normal Maps hingegen werden die Normalen verdreht, was durch die jeweilige Farbe bestimmt wird.

Falls das nicht weiterhilft, reden wir wahrscheinlich aneinander vorbei.

1