Sollte idealer Spiegel helle Farbe mit Materialfarbe multiplizieren?


7

Ideale Spiegelreflexion ist wie ein perfekter Spiegel. Ich schaue mir den Code für SmallPt an und sehe, dass eine der Kugeln ein ideales Spiegelmaterial hat:

Sphere spheres[] = {//Scene: radius, position, emission, color, material 
   / ...
   Sphere(16.5,Vec(27,16.5,47),       Vec(),Vec(1,1,1)*.999, SPEC),//Mirr
   / ...
 };

Bei der Strahlungsberechnung geschieht Folgendes:

  } else if (obj.refl == SPEC)            // Ideal SPECULAR reflection 
     return obj.e + f.mult(radiance(Ray(x,r.d-n*2*n.dot(r.d)),depth,Xi)); 

wo fist die Objektfarbe von Vec(.999,.999,.999).

Ich war überrascht, hier eine Farbvervielfachung zu sehen. Hat ein idealer Spiegel keine Farbe? Ich denke wie es fist Vec(.999,.999,.999), effektiv geht es durch die Farbe fast unverändert? Irgendwelche Gedanken darüber, warum .999 verwendet wurde und nicht 1? Ich vermute, das ist etwas, um einen winzigen Energieverlust zu modellieren?


Aktuelle Antworten vermeiden Ihre Frage, warum 0,999 anstelle von 1 verwendet wird. Abgesehen davon, dass es keinen wirklichen visuellen Unterschied macht, vermute ich, dass diese Zahl gewählt wurde, um Gleitkommafehler zu vermeiden, die zu einem Energiegewinn führen könnten. Könnte jemand, der mit IEEE 754 besser vertraut ist, dies kommentieren?
David Kuri

Antworten:


8

Was "ideal" in diesem Zusammenhang bedeutet, ist, dass es keine Divergenz in Richtung der Lichtreflexionsvektoren gibt (dh keine Rauheit), sondern dass sie alle als perfekte Reflexionen von einer optisch flachen Oberfläche betrachtet werden. Selbst für optische flache Oberflächen wird bei der BRDF-Bewertung immer noch die Fresnel-Gleichung angewendet, die die Spiegelreflexion ändert und möglicherweise wellenlängenabhängig ist, was bei Metallen ein gemeinsames Merkmal ist.

Geben Sie hier die Bildbeschreibung ein

In smallPt gibt es jedoch keine Fresnel-Näherung (z. B. Schlick-Näherung ), sondern das Oberflächenreflexionsvermögen wird einfach mit einem konstanten Term multipliziert, was falsch ist. Auch die Spiegelalbedo von 0,999 ist für jedes reale Material sehr hoch. Nachfolgend finden Sie eine Tabelle der Spiegelreflexionsbereiche verschiedener Metalle und Dielektrika bei normaler Inzidenz als Referenz:

Geben Sie hier die Bildbeschreibung ein


5

Das Metallspekular ist ein Produkt der hellen Farbe und der Albedo des Materials. Nur für Nichtmetalle ist die Farbe des Spiegels unabhängig von der Albedo, aber auch eher dunkel. Ein perfekter Spiegel wäre daher eine perfekt glatte metallische Oberfläche mit einer Albedo von 1. Man könnte also sagen, ein solcher Spiegel wäre weiß und hätte keine Farbe.

Ein realistischerer Spiegel würde zum Beschichten etwas wie Silber mit einer Albedo von (0,972, 0,960, 0,915) verwenden. Diese Farbe stellt den Prozentsatz des Lichts jeder Frequenz dar, der von Silber reflektiert wird. Daher muss es mit der Farbe des reflektierten Lichts multipliziert werden.


5

In diesem Zusammenhang bezieht sich "perfekter Spiegel" auf eine perfekt flache Oberfläche mit einer diffusen Farbe von 0% (reines Schwarz). Es ist jedoch immer noch möglich, eine spiegelnde Farbe zu haben: Zum Beispiel verhält sich eine Weihnachtsbaumkugel wie ein perfekter Spiegel, färbt aber immer noch die Reflexion. Wenn Sie die 99% weiße Farbe durch eine rote Tönung ersetzen, erhalten Sie den roten Weihnachtskugel-Look.

In SmallPT haben Kugeln zwei Farben: edie Emissionsfarbe und c. Der Trick ist, dass ces zwei verschiedene Bedeutungen gibt, die vom Materialtyp abhängen refl:

  1. Wann reflist DIFF, cwird als diffuse Farbe interpretiert.
  2. Wann reflist SPEC, cwird als Spiegelfarbe interpretiert.

Im Fall Nr. 2 wird also die diffuse Farbe weggelassen, was einer diffusen Farbe von 0%, reinem Schwarz, entspricht.

Falls Sie es noch nicht überprüft haben, ist diese Präsentation eine hervorragende Code-Erklärung für SmallPT , dicht, aber gründlich: smallpt: Global Illumination in 99 Zeilen C ++ .


Ich denke, wie das Konzept einer Spiegelfarbe Sinn macht, wenn es um perfekte Spiegel geht? Wollen Sie damit sagen, dass das gesamte einfallende Licht an der Schnittstelle reflektiert und die Farbe (Frequenz) geändert werden kann? Wäre der Einfallswinkel = Reflexionswinkel? Welcher physikalische Prozess würde den Farbwechsel bewirken? Es tut mir leid, wenn ich wie ein Kind klinge, das nach einer Antwort weitere Fragen stellt.
PeteUK

Es ist etwas komplizierter. Um zu versuchen, die Erklärung in diesen Kommentar einzufügen: Wenn Licht auf eine Oberfläche trifft, treten einige in diese ein (Brechung), andere nicht und prallen ab (Reflexion). Ob es eintritt oder nicht, kann von der Lichtwellenlänge abhängen (daher die Grafiken in der Antwort von @ JarkkoL), und genau das verleiht Gold sein gelbes Aussehen.
Julien Guertault

Für den Fall, dass das nicht klar war, bezog ich mich auf die Kupfer- und Aluminium-Dreifachgraphen: Sie repräsentieren das Reflexionsvermögen für rote, grüne und blaue Wellenlängen.
Julien Guertault

Vielen Dank für Ihre Antworten. In Bezug auf das Licht, das auf die Oberfläche trifft, die nicht reflektiert und gebrochen wird: Wir sprechen nicht mehr über einen perfekten Spiegel (oder eine ideale Spiegeloberfläche), oder? Wird diese Brechung und Reemission als spiegelndes Highlight (dh als heller Fleck) bezeichnet? Zurück zu der konstruierten idealen Spiegeloberfläche, auf der alles Licht reflektiert wird: Gibt es eine Möglichkeit, dass das einfallende und das reflektierte Licht unterschiedliche Farben haben?
PeteUK

3

Ideale Spiegel sind genau das, ideal. Die Frage, ob es Farbe hat oder nicht, kommt nie ins Spiel, sein Ideal spiegelt es alles wider. Wie die Division durch Null ist es undefiniert. Dies bedeutet jedoch nicht, dass Sie Ihr Ergebnis nicht mit einem multiplizieren können, es ist immer noch dasselbe Ergebnis.

Das Problem ist, dass wir die Konzepte von Intensität und Farbe erfolgreich miteinander vermischt haben. Wir nehmen in RGB einfach an, dass die Farbe 3 unabhängige Intensitäten hat. Was überhaupt nicht stimmt, es ist eine ziemliche Vereinfachung der Funktionsweise der Realität. Es gibt wirklich so etwas wie ein hochintensives dunkles Orange, das RGB nicht erklären kann. Als solches ist es schwer zu sagen, da wir zwei unabhängige Dinge als eins zusammenführen. Aber ja, wahrscheinlich wird etwas Energie aus einem in diesem Code unbekannten Grund entfernt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.