Diffuse Reflexionsverwirrung

7

Nach dem, was ich gelesen habe, sollte mit einem einfachen Richtungslicht die Farbe eines Punktes sein, wenn Sie nur die diffuse Reflexion berücksichtigen (Intensität = 1)

color = color_of_point * color_of_light * dot(normal, -light_direction);

Dies ist jedoch für mich verwirrend. Zum Beispiel, wenn die Lichtrichtung parallel zur Normalen ist und wenn die Farbe des Punktes reines Rot (1,0,0) und die Farbe des Lichts reines Blau (0,0,1) ist, würde ich erwarten der Punkt, um eine Farbe von Violett zu haben - aber das Ergebnis wird schwarz sein.

Wenn ich einen vollständig weißen Punkt oder einen vollständig schwarzen Punkt habe, würde ich nicht intuitiv annehmen, dass das Ergebnis vollständig weiß (unabhängig von der hellen Farbe) oder vollständig schwarz ist.

Ich glaube, ich verstehe hier etwas grundlegend falsch. Kann jemand erklären?

TravisG
quelle

Antworten:

13

Ihre Beleuchtungsgleichung ist physikalisch korrekt. Im wirklichen Leben sieht man jedoch fast nie hochreine Farben. (Eine Ausnahme ist, wenn Laser beteiligt sind.) Das ist wahrscheinlich der Grund, warum Sie sich vorstellen, dass Rot * Blau = Violett - ein realistischeres Rot könnte etwa (1, 0,1, 0,1) und ein Blau (0,1, 0,1, 1) sein. Multiplizieren Sie diese und Sie erhalten (0,1, 0,01, 0,1), was in der Tat ein (dunkles) Violett ist.

Ebenso ist nichts perfekt schwarz. Sogar schwarzer Kunststoff, Farbe oder Stoff haben zumindest eine kleine Spiegelreflexion. Die Spiegelalbedo bei normaler Inzidenz liegt bei den meisten Materialien nicht unter etwa 2% und steigt bei streifendem Auftreten aufgrund des Fresnel-Effekts an. ( Superschwarz ist eine Ausnahme - ein spezielles Material, das bei normaler Inzidenz nur 0,4% widerspiegelt.)

Bei einem weißen Material hat das reflektierte Licht die Lichtfarbe und ist nicht vollständig weiß. Sie müssen hier jedoch aufpassen, wie Ihr Gehirn Ihnen einen Streich spielt: Es passt sich der Gesamtfarbe des Lichts um Sie herum an, sodass weiße Objekte selbst bei Beleuchtung mit farbigem Licht wahrnehmungsmäßig weiß aussehen. Aus diesem Grund haben Digitalkameras einen Weißabgleich - Fotos würden ohne diese Einstellung völlig falsch aussehen. (Dies funktioniert natürlich nur bis zu einem gewissen Punkt - beleuchten Sie einen Raum mit einem roten Laser und die Dinge sehen rot und nicht weiß aus.) Spiele simulieren diesen visuellen Anpassungsprozess jedoch im Allgemeinen nicht. Stattdessen haben sie nur helle Farben, die weniger gesättigt sind als in der Realität.

(Übrigens ein Nitpick: Ihre Beleuchtungsgleichung sollte saturate()um das Punktprodukt herum liegen, um zu vermeiden, dass auf der dunklen Seite eines Objekts negative Werte erzeugt werden.)

Nathan Reed
quelle
15

Wie zeigen Objekte Farbe?

Nun, ein 100% rotes Objekt sieht rot aus, weil es alle anderen Wellenlängen des Lichts (orange, gelb, grün ... Sie wissen, ein Regenbogen) absorbiert und nur rot reflektiert.

Was ist, wenn Sie reines blaues Licht auf eine reine rote Oberfläche scheinen lassen? Nun, es würde das blaue Licht absorbieren und reflektieren ... nichts. Daher schwarz.

Geben Sie hier die Bildbeschreibung ein

Das schreckliche Bild tut mir leid

Bobobobo
quelle
8
Das Bild ist nicht schrecklich :)
Orlp