Jump to content
Unity Insider Forum

Normal Map wird im Schatten nicht angezeigt


Lessly

Recommended Posts

Hallo zusammen,

 

ich bin gerade am Texturen eines Gebäudes mit einer Steinmauer und möchte die Normalmap benutzen.

 

Nun musste ich aber feststellen, dass sobald Hausflächen im Schatten liegen, das Material nicht richtig angezeigt wird, sprich die Normalmap fehlt.

 

Weiß jemand an was das liegen könnte? Vielen Dank für eure Hilfe.

 

Liebe Grüße

Lessly

post-5011-0-36763100-1455976601_thumb.jpg

post-5011-0-94055900-1455976601_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da ist alles richtig und in Ordnung, und die Normal Map ist auch noch da.

Die Sache ist, dass Normal Maps nichts weiter tun als die Pixel in Abhängigkeit des einfallenden Lichts abzuändern. Wenn aber das einzige Licht keine spezifische Richtung hat, aus der es kommt, dann wird deine Oberfläche nicht heller oder dunkler durch eine Normal Map.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die physikalisch Korrekte herangehensweise wäre, eine Lichtquelle zu platzieren. Am besten ein Directional Light, das schwach aus irgendeiner Richtung leuchtet.

Alternativ wäre Normal Based Ambient Occlusion eine Möglichkeit... mit Deferred Rendering vielleicht. Ich weiß nicht, ob die Standard-Effekte von Unity das vielleicht können.

 

Kann bei Bedarf etwas tiefer drauf eingehen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, auf gehts!

 

Screen Space Ambient Occlusion, oder "SSAO", ist ein Post-Processing-Effekt, also ein Shader, der das fertige Bild verändert, nachdem es fertig gemalt wurde. Grundgedanke dieses Effekts ist der, dass diffuses Licht es immer schwerer hat, kleine Öffnungen und verwinkelte Ecken zu erreichen. Die Energie jedes Lichtpartikels wird immer schwächer, je öfter es abprallt. Das heißt: Je mehr Oberfläche in der Nähe einer Oberfläche ist, desto dunkler wird sie.

Den Effekt kann man bereits erkennen, wenn man an die Kante zwischen Zimmerdecke und -Wand schaut. Außerdem sieht man es sehr gut bei Autos:

1991_dodge_shadow_2_dr_america_hatchback-pic-3095438447709821481-640x480.jpeg

 

Hier erkennt man gut den normalen Schlagschatten, aber auch, dass es unter dem Auto noch dunkler wird. Das ist Ambient Occlusion.

Hier noch ein Bild, dreist aus dem Wikipedia-Artikel gemopst:

Show_how_3D_real_time_ambient_occlusion_works_2013-11-23_10-45.jpeg

 

SSAO funktioniert so, dass der Normal Buffer deines Bildes ausgelesen wird. Der sieht etwa so aus, wenn man ihn visualisiert:

texture_normal_buffer.png

 

In jedem Pixel kodiert ist dabei der Winkel der Oberfläche an dieser Stelle - relativ zur Kamera. Bemerke dabei, wie die Normal Map des Würfels den Normal Buffer beeinflusst.

SSAO detektiert jetzt Pixel, an denen der Winkel der umliegenden Pixel stark vom eigenen Winkel abweicht. Wo das der Fall ist, werden dunkle Pixel in den Color Buffer, also das eigentliche Bild, das der Spieler später sieht, gemalt.

Damit so ein Normal Buffer überhaupt erstellt wird, muss man Deferred Rendering anschalten. Deferred Rendering bedeutet, dass nicht Lichtberechnung passiert, während die Objekte gemalt werden, sondern alle Objekte ohne Licht oder Schatten, also voll beleuchtet, gemalt werden. Dazu dann dieser Normal Buffer und der übliche Depth Buffer, bei dem jedes Pixel gespeichert hat, wie weit es von der Kamera entfernt ist. Aus diesen drei Buffern geschieht dann der Hauptteil der Lichtberechnung. Dadurch ergibt sich übrigens auch der tolle Vorteil von Deferred Rendering, dass man beinaher beliebig viele dynamische Lichter benutzen kann.

Um Unity von Forward auf Deferred Rendering umzustellen: "Edit/Project Settings/Player", dann unter "Other Settings" die Option "Rendering Path".

Wenn du dann das Standard-Assets-Paket "Image Effects" importierst, ist da ein SSAO-Effekt dein. Außerdem "Screen Space Ambien Obscurance", das irgendwie ähnlich ist. Habe mir den Unterschied noch nicht richtig angeschaut.

Je nach dem, wie der SSAO-Effekt implementiert ist, könnte das ebenfalls einen wünschenswerten Effekt für dein Problem haben.

 

Selbst, wenn die Mauer nicht direkt hübscher werden sollte, sind Deferred Rendering und SSAO immer noch zwei Sachen, die fast immer die Grafik verbessern :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...