Warum wird Lambert's cosine law nur bei diffusen Flächen angewandt?
-
Hallo,
in letzter Zeit denke ich viel über den N*wi-Faktor aus der Rendergleichung nach.
In der Rendergleichung taucht ja der Faktor wi*N auf: Siehe hier:
https://en.wikipedia.org/wiki/Rendering_equation
\omega_{\text{i}} \cdot \mathbf n is the weakening factor of inward irradiance due to incident angle, as the light flux is smeared across a surface whose area is larger than the projected area perpendicular to the ray. This is often written as \cos \theta_i.
Für diese Rendergleichung steht keine Einschränkung, dass sie nur für diffuse Oberflächen gilt. Wenn man sich differse Paper aus der Computergrafik-Szene durchließt, dann sieht man diese Formel BSDF*Li*(N*wi) sehr oft.
Bei Mirror-Reflection wird dieser Faktor aber nicht angwendet.
Auf dieser Seite zum Beispiel ist die BRDF so definiert, dass sie lediglich ein konstanten Albedo-Faktor enthält (Seite 11):
https://www.cs.cmu.edu/afs/cs/academic/class/15462-f09/www/lec/lec8.pdf
Würde man jetzt DIESE Brdf in die Rendergleichung einsetzen, dann würde der N*wi-Faktor wieder auftauchen was laut dieser Seite hier aber offentsichtlich falsch ist (Seite 165):
http://graphics.stanford.edu/papers/veach_thesis/thesis.pdf
Hier gibt er der BRDF noch den extra-Faktor 1/(wi * N) um den Lambert-Faktor rauszucanceln.
Die Frage ist also, warum gibt es diesen Faktor in der Rendergleichung überhaupt?
Laut dieser Seite
ist die Erklärung dafür dass wenn das Licht schräg auf eine Fläche trifft, dann scheint ein Teil des Lichtstrahls an der Fläche vorbei (Hier mit dL Bezeichnet). Deswegen wird der Lichtanteil, der an der Fläche dA ankommt, immer kleiner.
Hier noch eine Extraerklärung dazu: https://en.wikipedia.org/wiki/Lambert's_cosine_law
Wenn diese Erklärung richtig wäre, dann müsste sie ja auch für Spiegel gelten. Tut sie aber laut Eric Veach nicht.
Meine Fragen: Warum enthält die Rendergleichung diesen wi*N-Faktor?
Warum sieht man in fast allen Papern immer die Formel?:
Radiance = Intetral über alle wi{BRDF*Li*(wi*N)dwi}
Wenn wi*N wirklich nur was mit diffusen Oberflächen zu tun hat, dann müsste doch dieser Faktor in die BRDF gehören oder nicht?
Wie lautet der Faktor, wenn ich eine Glossy-Surface habe? Li=Lo wohl offentsichtlich nicht, da kein perfekter Spiegel und Lo=Li*(wi*N) wohl auch nicht, da nicht perfekt diffuse.
-
Diffuse Oberflächen haben eine BRDF, die konstant ist. Für den Fall einer analytischen Lichtquelle (Licht kommt nur aus einer einzigen Richtung, d.h. entspricht einem Dirac Impuls), kollabiert die Rendergleichung dann zu der Formel, die man für diffuse Oberflächen in den Shader schreibt...
-
dot schrieb:
Diffuse Oberflächen haben eine BRDF, die konstant ist. Für den Fall einer analytischen Lichtquelle (Licht kommt nur aus einer einzigen Richtung, d.h. entspricht einem Dirac Impuls), kollabiert die Rendergleichung dann zu der Formel, die man für diffuse Oberflächen in den Shader schreibt...
Damit hast du ja nur erklärt, warum man im Shader für Punktlichtquellen N*wi schreibt, da das Integral nur für ein einziges wi einen Wert liefert. Kannst du auch meine anderen Fragen beantworten?
@edit: Und was dein Satz: 'Diffuse Oberflächen haben eine BRDF, die konstant ist' angeht.
Meines Wissens lautet die Regel: Egal von wo ich auf die diffuse Fläche draufschaue, Lo ist immer gleich. Die Regel lautet also NICHT: Lo ist unabhändig von Li sondern nur alle Lo's sind gleich. Von daher kann ich das so nicht unterstreichen, das die BRDF konstant ist, egal wie wi oder wo ist. Laut mein Verständis ist die BRDF nur von wi(Licht-Richtung-In) abhängig. Und zwar von Albedo / Pi. Die Zuordung des wi*N-Faktors ist für mich noch nicht geklärt. Deswegen schreibe ich ja hier.