Reflektionen (Nässe)

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Reflektionen (Nässe)

Beitrag von Zudomon » 20.07.2018, 08:47

Irgendwie scheine ich Reflektionen noch nicht ganz verstanden zu haben. Prinzipiell gilt ja Einfallswinkel = Ausfallswinkel. Aber wie ist es auf nassen Oberflächen oder dem Meer? Da ziehen sich die Reflektionen ja immer sehr lang.
Bild
Bei mir sieht die Reflektion auf unebenem Boden so aus:
20180720_2.jpg
Ich weiß auch gar nicht, wie der Effekt heißt oder warum es letztendlich so ist. Und damit weiß ich auch nicht wirklich, wonach ich da suchen kann.
Also wäre toll, wenn das jemand erklären könnte :D
Zuletzt geändert von Zudomon am 24.07.2018, 10:43, insgesamt 1-mal geändert.

gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 10:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Reflektionen

Beitrag von gdsWizard » 20.07.2018, 09:50

Hallo Zudo,

Probiere mal die Reflektionen wie SpecularLicht zu betrachten. Da hat man ja auch eine Unschärfe bezüglich der Reflektion.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3850
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Reflektionen

Beitrag von Schrompf » 20.07.2018, 10:06

Die Reflektionen würden sich auch bei Dir schon lang ziehen, wenn Du eine glatte Oberfläche und eine vergleichweise enge Specular Reflection probieren würdest. Das ist ein ganz banaler Nebeneffekt der Reflektionswinkel-Mathematik entlang der Boden-Oberfläche.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 10:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Reflektionen

Beitrag von gdsWizard » 20.07.2018, 10:07

Du mußt halt mehrere Farbwerte auslesen und diese dann per Specularlicht berechnen und diese dann einfach integrieren ( zusammenrechnen ).

Benutzeravatar
Schrompf
Moderator
Beiträge: 3850
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Reflektionen

Beitrag von Schrompf » 20.07.2018, 11:10

Naja... neee. Wenn die Lichtquelle, deren Spiegelungen Du da berechnen willst, eh ne analytische Lichtquelle (also zumeist ein Punkt) ist, dann brauchst Du nicht zu samplen, sondern kannst es analytisch lösen. Und genau das ist die übliche Specular-Formel bereits: eine analytische Lösung für das Streuen einer Punktlichtquelle an winzig kleinen Unebenheiten der reflektierenden Oberfläche. English "Microfacets".

Wenn Du ein komplexeres Ding hast, was Licht abgibt, gibt es noch andere Tricks. Eine Leuchtreklame z.B. kann man als flaches texturiertes Gebilde annähern. Und da muss man auch nicht mehr xfach samplen, sondern nutzt die MipMaps aus.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
dot
Establishment
Beiträge: 1657
Registriert: 06.03.2004, 19:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Reflektionen

Beitrag von dot » 20.07.2018, 11:34

Verwendest du Phong Shading? Versuch's mal mit Blinn-Phong, das ist physikalisch korrekter… ;)
Untitled.png

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen

Beitrag von Zudomon » 20.07.2018, 11:46

Irgendwie muss da noch mehr hinter sein.
Ich weiß, dass man damals in 3DSMAX für den Lichtpunkt noch Anisotropie einstellen konnte, was den Lichtpunkt in die eine oder andere Achse verzerrt hat.

Setze ich bei mir das Specular hoch, dann bewirkt das nicht, dass sich der Specularpunkt in die Länge zieht.
20180720_3.jpg
Zu der Oberfläche wird der Reflexionsvektor gebildet und dann zum einen aus der Cubemap gelesen (deswegen spiegelt sich da der Planet und zum anderen wird noch der Winkel zur Lichtquelle berechnet... also sowas wie pow(max(dot(reflection_dir, light_dir), 0), 512);
Wenn die Oberfläche glatt ist, dann spiegelt sich darin der Lichtpunkt ziemlich exakt wieder.

Aber sobald in der Wirklichkeit Nässe ins Spiel kommt, scheinen sich Lichtquellen schier endlos in eine Achse zu dehnen...
Noch mehr Beispielbilder: Google Bildersuche

@dot
Dein Beitrag war gerade noch nicht da. Du könntest recht haben... werde ich mich mal mit beschäftigen :D

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen

Beitrag von Zudomon » 20.07.2018, 12:24

Danke dot! :D (und auch Schrompf, du hattest ja quasi auch schon die Lösung)

Also ich glaube, das war es... ich bin auf jeden Fall mit dem Ergebnis zufrieden. Jetzt sollte ich vielleicht auch noch schauen, dass das Blinn Shading auch für Cubemaps genutzt wird.
20180720_6.jpg

joeydee
Establishment
Beiträge: 666
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Reflektionen

Beitrag von joeydee » 20.07.2018, 12:53

Hier hat jemand damit experimentiert, verschiedene Methoden gegenübergestellt, vielleicht sind noch brauchbare Anregungen dabei:
http://theinstructionlimit.com/isotropi ... comparison
- Phong reflection model
- Blinn-Phong (Blinn D1, Phong) specular distribution
- Lyon halfway method 1 (for k=2 and D = H* – L)
- Trowbridge-Reitz (Blinn D3) specular distribution
- Torrance-Sparrow (Blinn D2, Gaussian) specular distribution

gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 10:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Reflektionen

Beitrag von gdsWizard » 20.07.2018, 13:10

@Schrompf

Bei einer Lichtquelle kann natürlich analytisch vorgegangen werden. Aber auch Licht das von einem anderen Gegenstand kommt der nicht leuchtet ist Licht. Hier muss gesampelt werden. Natürlich kann man Mipmaps verwenden. Ist ja kein Zwang zum mehrfach sampeln. Wenn man genau ist sollte man vermutlich alles als Specularlicht bei Wasser reflektieren und nicht nur Lichtquellen. Zudo hat ja nicht nach Lichtquellen gefragt. Der große Wert von 512 als Exponent macht natürlich kleinere Werte als 1 schnell gegen 0. so das 1:1 Reflektionen stark überwiegen.

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen

Beitrag von Krishty » 20.07.2018, 15:50

Zusätzlich: Zoom auch mal näher ran. Dein Field of View ist viel viel viel größer als auf all den Fotos und Filmen, mit denen du dich vergleichst ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 10:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Reflektionen

Beitrag von gdsWizard » 20.07.2018, 19:04

Man muß übrigens doch mehrfach sampeln, man weiss ja nicht von wo das Licht kommt. Außerdem würde bei Verwendung von Mipmaps der Winkel ungenau bestimmbar werden.

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen

Beitrag von Jonathan » 23.07.2018, 16:01

Zudomon hat geschrieben:Ich weiß auch gar nicht, wie der Effekt heißt oder warum es letztendlich so ist. Und damit weiß ich auch nicht wirklich, wonach ich da suchen kann.
Also wäre toll, wenn das jemand erklären könnte :D
Bidirectional reflectance distribution function[1]. Im Allgemeinen gilt eben nicht "Einfallswinkel=Ausfallswinkel", sondern Materialien verhalten sich komplexer. Alle verlinkte Techniken hier können unter dem Oberbegriff der BRDF zusammengefasst werden (von dem es auch wieder Verallgemeinerungen gibt, aber das ist fürs erste nicht ganz so wichtig) und man sollte sich mit dem Prinzip vertraut machen, weil es eine sehr nützliche Denkweise ist die auch physikalisch gut motiviert ist.

Das worüber gdsWizard redet würde man wohl am ehesten Global Illumination nennen, was im Wesentlichen das ist, was man durch Pathtracing bekommt. Sehr nahe an der Realität, aber auch beliebig teuer zu berechnen (und selbst dann nur näherungsweise). Von daher hat er nicht unrecht, aber nur unter der Annahme, dass man es wirklich fotorealistisch haben möchte.

Noch ein paar Worte zu diesem konkreten Effekt: Du hast nur diese langen Reflexionen, wenn du auch Wellen auf dem Wasser hast. Ein See bei Windstille wird dir auch ein 'perfektes' Bild des Mondes liefern, und man kann durch die Form der Reflexion sogar sehen, an welchen Stellen auf dem Wasser sich die Strömung verändert. Du könntest also auch einfach eine perfekt spekulare BRDF ('Spiegel') nehmen, und die Wasseroberfläche mit einer passenden Normalmap versehen - allerdings bräuchtest du dafür schon krasse Auflösungen und Supersampling, damit der Effekt erhalten bleibt. Dann also lieber doch ein BRDF-Modell, dass schon fertig (aber nur näherungsweise) über diese Unebenheiten der Oberfläche integriert (also über die angesprochenen Mikrofacetten).
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen

Beitrag von Krishty » 23.07.2018, 17:25

Nein, BRDF hat nichts damit zu tun. Mikroflächen kann man dafür benutzen, aber damit kann man es ebensogut kaputtmachen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen

Beitrag von Jonathan » 23.07.2018, 17:43

Wieso nicht? Eine BRDF beschreibt, wie viel Licht aus einer eingehenden in eine ausgehende Richtung reflektiert wird, was genau das ist, was man z.B. mit Blinn-Phong auch berechnet, es ist demnach ein (einfaches) BRDF-Modell. Ich habe es deshalb erwähnt weil auf diese Frage "Warum sieht meine Reflexion nicht so aus, wie ich es erwarte?" die allgemeine Antwort lautet "Die BRDF ist falsch", und die konkrete "Probier halt mal Blinn-Phong aus".
Benutzt du möglicherweise eine andere Definition des BRDF-Begriffes als ich?
(Mag sein, dass BRDF im physikalisch basiertem Raytracing (als Oberbegriff für Algorithmen wie Pathtracing) öfter verwendet wird. Aber das ist halt wesentlich näher an der Realität als die Annäherungen die in der Echtzeitgrafik verwendet werden, und ich finde es interessant und nützlich zu wissen, wie man es 'richtig' machen würde, bevor man es näherungsweise berechnet.)
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen

Beitrag von Krishty » 23.07.2018, 18:34

Dass sich Reflexionen auf rauen Oberflächen langziehen, nennt man nicht BRDF ;) Zudo hatte ja bereits eine BRDF (wenn auch falsch) und wollte wahrscheinlich eher so einen Begriff hören wie Regenbogen oder Brockengespenst für das Phänomen, nicht die Simulationstechnik.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen

Beitrag von Jonathan » 23.07.2018, 19:49

Ja, ok. Ich weiß nicht, ob für diesen Effekt ein besonderer Name geläufig ist, aber es ist eben eine direkte und ziemlich offensichtliche Konsequenz aus der Oberflächen-BRDF und die BRDF ist auch genau das, was man ändern muss um den gewünschten Effekt zu erzielen.

Ich finde es sehr nützlich nicht nur zu wissen, wie ein Effekt aussieht, sondern auch warum er (in der physikalischen Welt) entsteht. Das gibt einem nämlich in der Regel direkt eine 'Anleitung' was man eigentlich berechnen muss, und sobald man das hat, kann man sich überlegen, wie man es effizienter berechnen kann. Sicherlich ist dieser Weg in einem Pathtracer oft wesentlich direkter als in einem Polygonrasterizer, aber das bedeutet nicht, dass die physikalische Theorie für letztere nicht trotzdem nützlich ist. Es ist natürlich ein großes und komplexes Thema, aber ich kann nur Empfehlen, sich ein bisschen damit zu beschäftigen. Vermutlich will man dann aber mit der Rendering Equation anfangen, die BRDFs als Bauteil beinhaltet und quasi sämtliche globalen und lokalen Effekte in einer Szene auf sehr elegante und kompakte Art beschreibt.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen

Beitrag von Krishty » 24.07.2018, 06:11

Mir fiel gestern noch ein Effekt mit der selben Ursache auf: Wenn im Dunkeln eine Laterne durch eine Baumkrone scheint, sieht es so aus, als wären die Äste konzentrisch um die Lichtquelle angeordnet. Dummerweise finde ich kein Foto.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen

Beitrag von Zudomon » 24.07.2018, 11:10

Krishty hat geschrieben:Mir fiel gestern noch ein Effekt mit der selben Ursache auf: Wenn im Dunkeln eine Laterne durch eine Baumkrone scheint, sieht es so aus, als wären die Äste konzentrisch um die Lichtquelle angeordnet. Dummerweise finde ich kein Foto.
Jonathan hat geschrieben:Ein See bei Windstille wird dir auch ein 'perfektes' Bild des Mondes liefern, und man kann durch die Form der Reflexion sogar sehen, an welchen Stellen auf dem Wasser sich die Strömung verändert.
Direkt finde ich auch keins (Bild von Laterne hinter Baum, die das so zeigt), aber es ist toll, wie man immer präziser seine Umwelt dadurch wahrnimmt, indem man sich mit diesen ganzen Sachen beschäftigt! Ich arbeite zur Zeit auch an Global Illumination. Und lasse das Himmelslicht nun korrekter auf die Landschaft scheinen. Da mir die Schatten dadurch sehr blau vor kamen, aber sich das mit einigen Bildern bestätigt, bin ich zu der Erkenntnis gekommen, dass man ja anhand der Schattenfarbe schon Rückschlüsse auf das Wetter treffen kann. Je blauer, je Wolkenloser. Gut vielleicht keine überwältigende Erkenntnis, aber so direkt hab ich darüber halt noch nie nachgedacht.

Aber zurück zum Thema:
Hier nochmal zum Vergleich Phong und Blinn:
20180720_7.jpg
20180720_9.jpg
Allerdings hab ich dann so überlegt, wie ist das nun mit den Cubemaps... also es fällt mir schon sehr schwer, den Blinn-Effekt nachzuvollziehen. Auf eine Cubemap übertragen, die in verschiedenen Smoothnessstufen vorliegt den gleichen Effekt zu erzielen ist gar nicht so leicht. Ich habe mir dann überlegt, dass es nicht reicht, einfach nur die Cubemap weicher zu machen, sondern man müsste hier auch mehrfach sampeln... und hab ich dann die Reflektion noch gestreut, indem ich die Oberflächennormale mit einfließen ließ. Das ganze noch irgendwie mit der Roughness des Materials und dem Einfallswinkel skalliert...

Auf den nächsten beiden Bildern sieht man nun einmal nur die Specularreflektion per Blinn und auf dem zweiten die Cubemap die wie gesagt gefiltert ist... dieser Halo kommt zustande, weil da langsam in die erste gefilterte Mipmapstufe übergangen wird. Es gibt halt nur 4 Mipmapstufen, deswegen also völlig normal, nicht dran stören.
20180720_10.jpg
20180720_11.jpg

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen (Nässe)

Beitrag von Zudomon » 24.07.2018, 11:11

Was mir jetzt erst an Blinn aufgefallen ist, wenn der Sonnenstand tiefer wird, dann spitzt sich die Reflektion immer weiter zu. Daneben wieder das Bild aus der Cubemap, was in diesem Fall auch wesentlich korrekter aussieht.
20180720_12.jpg
20180720_13.jpg
Hier nochmal ein Vergleich, welches nur das alte Cubemapreflektionsverfahren und daneben den eigenen Filter zeigt:
20180720_14.jpg
20180720_15.jpg
Ich hatte da jetzt nur getestet mit der Cubemap, werde es aber erstmal wieder deaktivieren, weil das mehrfachsamplen da doch sehr auf die Frames drückt. Insgesamt scheint aber der Nässe Effekt doch etwas komplizierter zu sein. Mit der Wasseroberfläche hatte ich übrigens auch schon auf Bildern beobachtet, ist die Oberfläche glatt, spiegelt sie perfekt... kommen wellen ins Spiel, zieht sich die Spiegelung in die Länge... aber sie zieht sich nicht in die Breite... vielleicht liegt es einzig und allein auch nur daran, dass man trickst, sowohl beim Shading, wo es wohl keine "richtige" Formel gibt, als auch, dass es falsch ist, einfach aus einer unscharfen Cubemap zu lesen.
Ich werde gleich nochmal bei meinem Pathtracer schauen, wie sich das ganze da verhält.

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen (Nässe)

Beitrag von Zudomon » 24.07.2018, 11:24

Tja, keine Ahnung.
Also bei dem Pathtracer war es ja so, dass ich zwischen perfekter Relfektion und diffuser Streuung wählen konnte. Wobei die Zwischenstufen ja als glossiness bekannt sind.
Ich dachte nun, vielleicht ergibt sich der Effekt ja auch automatisch... aber scheint nicht der Fall zu sein. Wahrscheinlich hat es was mit der Art der Streuung zu tun. Das einzige, was mir da einfällt um den Effekt nachzuahmen ist eben, dass man diese glossiness Reflektion nicht als Keule reflektieren lässt, sondern diese eben staucht. Damit eben viel in Richtung der Normale gestreut wird, aber wenig seitlich.

Hier der Übergang von Reflektion zu Diffuse:
1.png
2.png
3.png
4.png
EDIT: Ich glaube wir hatten irgendwo schon mal erörtert, dass einfach zwischen Reflektion und Diffuse zu interpolieren nicht der richtige Weg ist. Naja, war ein Versuch wert :lol:

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen (Nässe)

Beitrag von Zudomon » 24.07.2018, 11:40

Ich glaube, was ich letztendlich dann gesucht habe ist das hier:
https://blog.turbosquid.com/2014/04/14/ ... eflection/

Da unter dem Abschnitt Anisotropy

Und hier noch ein paar Bilder zu dem Thema:
Google Bilder

Scheinbar nicht nur gut für Nässe, sondern auch Schallplatten, diese Aluminiumplättchen (keine Ahnung wie man das nennt) und Haare. Wahrscheinlich kann man damit auch gut (Vogel-)Federn simulieren.
Irgendwie erschreckend. Da ist mir schon vor 20 Jahren Anisotropie in 3DSMAX begegnet und es dauert mehr als mein halbes Leben, bis es bei mir auch tatsächlich angekommen ist. :?

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen

Beitrag von Jonathan » 24.07.2018, 11:50

Krishty hat geschrieben:Mir fiel gestern noch ein Effekt mit der selben Ursache auf: Wenn im Dunkeln eine Laterne durch eine Baumkrone scheint, sieht es so aus, als wären die Äste konzentrisch um die Lichtquelle angeordnet. Dummerweise finde ich kein Foto.
Ah, da kann ich aushelfen :) Inklusive Erklärung:
https://www.itp.uni-hannover.de/fileadm ... range.html

(Nach "Light Rings" suchen - es gibt zwei Einträge dazu der zweite zeigt genau was du beschrieben hast)
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen (Nässe)

Beitrag von Jonathan » 24.07.2018, 12:04

Zudomon hat geschrieben:EDIT: Ich glaube wir hatten irgendwo schon mal erörtert, dass einfach zwischen Reflektion und Diffuse zu interpolieren nicht der richtige Weg ist. Naja, war ein Versuch wert :lol:
Das genau meinte ich die ganze Zeit: Mach dich mit der Theorie hinter bidirektionalen Reflektanzfunktionen vertraut und du siehst sofort, wo der Fehler liegt. Ein bisschen siehst du es aber schon anhand folgender drei Bilder:

https://en.wikipedia.org/wiki/Bidirecti ... ion#Models
BildBildBild
Diffuse / Glossy / Specular

Wenn du zwischen dem ersten und dritten interpolierst, wirst du NIEMALS die Form in der Mitte bekommen. Diffus bedeutet, dass aus allen Richtungen reflektiert wird, Specular bedeutet, dass aus genau einer Richtung reflektiert wird, und Glossy, das aus einigen, eng zusammenliegenden Richtungen reflektiert wird. Wenn du aber zwischen Diffus und Specular interpolierst bekommst du eine Mischung aus 50% Licht von überall und 50% Licht aus genau einer Richtung.

In einfachen Beleuchtungssituationen kann das ähnlich aussehen, z.B. wenn es nur darum geht ein Punktlicht reflektieren zu lassen. Aber wenn die ganze Umgebung spiegeln soll geht es so nicht und es wird auch niemals so gehen. Du musst irgendwie eine Approximation für das Integral über einen kleinen Ausschnitt der Cubemap (gewichtet mit der BRDF) finden, was z.B. durch Addition vieler Sample funktioniert.
Details kann ich leider nicht geben, ich kenne eher die Pathtracing Ansätze und weiß, dass man damit das richtige Ergebnis bekommt und das was immer man mit seinem Rasterizer anstellt, man diese Berechnungen irgendwie approximieren muss.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Jonathan
Establishment
Beiträge: 1275
Registriert: 04.08.2004, 20:06

Re: Reflektionen (Nässe)

Beitrag von Jonathan » 24.07.2018, 12:14

Zudomon hat geschrieben:Insgesamt scheint aber der Nässe Effekt doch etwas komplizierter zu sein. Mit der Wasseroberfläche hatte ich übrigens auch schon auf Bildern beobachtet, ist die Oberfläche glatt, spiegelt sie perfekt... kommen wellen ins Spiel, zieht sich die Spiegelung in die Länge... aber sie zieht sich nicht in die Breite... vielleicht liegt es einzig und allein auch nur daran, dass man trickst, sowohl beim Shading, wo es wohl keine "richtige" Formel gibt, als auch, dass es falsch ist, einfach aus einer unscharfen Cubemap zu lesen.
Guck dir nochmal die Ringe in den Ästen an. Sowohl beim Wasser als auch bei den Ästen reflektiert das Licht halt da, wo der Winkel passt. Nun sind die Äste aber überall und in alle Richtungen angeordnet, das Wasser ist aber eine Ebene (plus Unebenheiten). Hättest du ein Rohr durch das du schaust würde von dessen Oberfläche jeder Punkt Richtung Lichtquelle reflektieren und das ganze Rohr wäre hell. Wenn du jetzt guckst, wo das Rohr und das Wasser die selbe Oberflächennormale haben siehst du, dass dies nur in einem schmalen Streifen an der Unterseite der Fall ist. Deswegen sind die Reflexionen am Wasser lang und nicht breit, würdest du sie breit haben wollen, darf die Wasseroberfläche nicht einfach nach links und rechts weiter gehen, sie müsste links und rechts nach oben gebogen werden.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen

Beitrag von Zudomon » 24.07.2018, 12:21

Jonathan hat geschrieben:
Krishty hat geschrieben:Mir fiel gestern noch ein Effekt mit der selben Ursache auf: Wenn im Dunkeln eine Laterne durch eine Baumkrone scheint, sieht es so aus, als wären die Äste konzentrisch um die Lichtquelle angeordnet. Dummerweise finde ich kein Foto.
Ah, da kann ich aushelfen :) Inklusive Erklärung:
https://www.itp.uni-hannover.de/fileadm ... range.html

(Nach "Light Rings" suchen - es gibt zwei Einträge dazu der zweite zeigt genau was du beschrieben hast)
Danke für den Link! Das ist ja echt krass, wie das bodenlose Fass immer mehr in die Unendlichkeit führt.
"Curtain diffraction" gibt es glaub ich auch wenn man mit der Handytaschenlampe auf den Bildschirm (TFT) leuchtet.
Aber ich glaube, das meint Krishty hier nicht... sondern eher das Licht auf den Ästen. Vielleicht wirkt das so, weil eben besonders viel Licht auf die Ästen strahlt, die Tangential (bei der Bildprojektion) zur Lichtquelle stehen. Die anderen Richtungen verschwinden ja quasi im dunkeln.
So in etwa:
Bild
Jonathan hat geschrieben:Wenn du aber zwischen Diffus und Specular interpolierst bekommst du eine Mischung aus 50% Licht von überall und 50% Licht aus genau einer Richtung.
Da bin ich mir aber nicht sicher... so wie ich es aus dem Satz von dir lese, interpolierst du die Ergebnisse von Diffuse und Reflektion. Aber das mache ich nicht. Es werden die Richtungen interpoliert... ansonsten würdest du quasi nur zwischen Diffuse und Reflektion überblenden. Stell dir eher vor, dass sich die diffusen Pfeile auf dem Bild zu der perfekten Reflekion morphen. Wobei ich dir aber trotzdem recht geben muss. Die Keule (mittleres Bild) würde in meiner Interpolation wohl mehr in Richtung Normale zeigen, was scheinbar falsch wäre.

joeydee
Establishment
Beiträge: 666
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Reflektionen (Nässe)

Beitrag von joeydee » 24.07.2018, 14:36

Ich denke, Anisotropie ist da auch ein Thema.
Man kennt das Stichwort zwar eher von gebürsteten Oberflächen mit physikalisch fester Vorzugsrichtung, aber wenn ein Microfacet-Muster nicht aus Flächenteilchen ("bumps"), sondern eigentlich aus vielen Liniensegmenten mit zufälligen Richtungen besteht ("scratches"), kann es auch zu anisotropischen Effekten kommen, deren (scheinbare) Richtung sich mit Beleuchtungs- und Blickwinkel ändert. Aus der Vielzahl der vorhandenen Richtungen ergibt sich dann praktisch eine Vorzugsrichtung.

U.a.: Äste, Autotscheibenkratzer, Wasser bei flachem Blickwinkel, ...

Bild
Bild

Hier setzt sich auch jemand damit auseinander:
http://www.neilblevins.com/cg_education ... _world.htm

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen

Beitrag von Krishty » 24.07.2018, 19:01

Zudomon hat geschrieben:Aber ich glaube, das meint Krishty hier nicht... sondern eher das Licht auf den Ästen. […] So in etwa:
Genau das.
Vielleicht wirkt das so, weil eben besonders viel Licht auf die Ästen strahlt, die Tangential (bei der Bildprojektion) zur Lichtquelle stehen. Die anderen Richtungen verschwinden ja quasi im dunkeln.
Nein. Es wirkt so, weil nur die Äste, auf die das Licht „tangential“ scheint, es zum Betrachter weiter reflektieren. Denn so funktioniert Specular eben.
joeydee hat geschrieben:Ich denke, Anisotropie ist da auch ein Thema.
Man kennt das Stichwort zwar eher von gebürsteten Oberflächen mit physikalisch fester Vorzugsrichtung, aber wenn ein Microfacet-Muster nicht aus Flächenteilchen ("bumps"), sondern eigentlich aus vielen Liniensegmenten mit zufälligen Richtungen besteht ("scratches"), kann es auch zu anisotropischen Effekten kommen, deren (scheinbare) Richtung sich mit Beleuchtungs- und Blickwinkel ändert. Aus der Vielzahl der vorhandenen Richtungen ergibt sich dann praktisch eine Vorzugsrichtung.
Genau, das mit den Kratzern ist noch ein wunderbares Beispiel.

Okay, das geht in Jonathans Richtung und vielleicht habt ihr mit Microfacets recht, auch wenn ich mich sträube. Letzendlich ist die Ursache ja, dass bei flachem Blick auf Wasser nur noch die Wellengipfel sichtbar sind. Das Licht scheint am meisten „tangential“ (in Zudos Sinne) auf die Wellenkämme und Wällentäler; die Wellenfronten selber sind der Sonne zu stark zu- oder abgewandt. Die Wellentäler sind durch davorliegende Wellen verdeckt, von denen wir … wieder nur Wellenkämme sehen. Also sehen wir quasi nur noch die Menge von Wellenkämmen. Das kann man als Microfacets simulieren, da habt ihr schon recht.

Aber die Äste nicht. Die verdecken sich gegenseitig nicht stark genug.

Und, wichtiger: Dann würde sich der Effekt doch bei Blinn-Phong nicht zeigen, oder? Denn das macht ja schließlich nichts mit Microfacets (die Reflexionseigenschaft hängt nur vom Halbwinkel ab, in keiner Weise vom Winkel zur Oberfläche)! Trotzdem sehen wir den Effekt dort deutlich. Verteidigt euch.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Zudomon
Establishment
Beiträge: 2112
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Reflektionen

Beitrag von Zudomon » 24.07.2018, 19:19

Krishty hat geschrieben:Und, wichtiger: Dann würde sich der Effekt doch bei Blinn-Phong nicht zeigen, oder? Denn das macht ja schließlich nichts mit Microfacets (die Reflexionseigenschaft hängt nur vom Halbwinkel ab, in keiner Weise vom Winkel zur Oberfläche)! Trotzdem sehen wir den Effekt dort deutlich. Verteidigt euch.
Ich habe Probleme darauf eine Antwort zu formulieren. Außerdem ist da meine Vorstellung nur recht vage. Man muss sich überlegen, wie sich der Halbwinkel verhält... wenn man die Fläche an der sich das Licht reflektiert von der Seite sieht, ist dieser Halbwinkel relativ stabil, wenn der Betrachter und das Licht ihre Lage verändern. Wenn man die Fläche von oben betrachtet, verlässt der Halbwinkel, wenn Betrachter und Licht nicht auf einer Linie liegen relativ schnell die Lage der Normale. Dadurch hat man also zur Seite hin eine starke Änderung, nach oben und unten hin aber nicht. Also ungefähr so würde ich sagen :D
Zuletzt geändert von Zudomon am 25.07.2018, 12:22, insgesamt 1-mal geändert.

Benutzeravatar
Krishty
Establishment
Beiträge: 6866
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Reflektionen (Nässe)

Beitrag von Krishty » 24.07.2018, 19:57

Naja, du sollst dich nicht verteidigen, denn du hast den Thread ja gemacht weil du nicht weißt, wie’s geht.

Wer Microfacets als Erklärung verschlägt, soll mir erklären, warum Blinn-Phong auch ohne Microfacets den gewünschten Effekt simuliert. Protip: Es ist eine einfache geometrische Eigenschaft, wie Schrompf von Anfang an gesagt hat. Aber sicher kann man es mit Microfacets noch vereinfachen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Antworten