Nach meinem Verständnis werden manchmal sphärische Harmonische verwendet, um bestimmte Aspekte der Beleuchtung zu approximieren (abhängig von der Anwendung).
Zum Beispiel scheint es, als könnten Sie die diffuse Lichtursache durch eine gerichtete Lichtquelle auf einem Oberflächenpunkt oder Teilen davon approximieren, indem Sie die SH-Koeffizienten für alle Bänder berechnen, die Sie (für jede gewünschte Genauigkeit) in der Richtung verwenden der Oberflächennormalen und Skalieren mit allem, was Sie zum Skalieren benötigen (z. B. helle Intensität, Punkt (n, l) usw.)
Was ich noch nicht verstehe, ist, was dies erreichen soll. Was sind die tatsächlichen Vorteile dieser Vorgehensweise im Gegensatz zur normalen Bewertung des diffusen BRDF? Speichern Sie Berechnungen irgendwo? Enthält die SH-Darstellung einige zusätzliche Informationen, die Sie aus den skalaren Ergebnissen der normalen Bewertung nicht herausholen können?
quelle
Antworten:
Der Grund für die Verwendung sphärischer Harmonischer besteht darin, die Verteilung des einfallenden Lichts um einen Punkt zu approximieren - normalerweise indirektes Licht, das von einem globalen Beleuchtungsalgorithmus berechnet wird. Dann wird der BRDF auch mit sphärischen Harmonischen approximiert, um eine effiziente Berechnung des vom Betrachter gesehenen ausgehenden Lichts zu ermöglichen, indem das Punktprodukt der SH-Koeffizienten des einfallenden Lichts mit den BRDF-SH-Koeffizienten genommen wird. Dies nähert sich der Faltung des einfallenden Lichts mit dem BRDF an, wie in der Rendering-Gleichung zu sehen ist.
Wenn Sie nur Licht von Punktquellen empfangen möchten, benötigen Sie SH nicht. Punktlichter werden genauer gehandhabt, indem nur das BRDF direkt ausgewertet wird. Wenn Sie eine feste Umgebung (Himmel usw.) haben, von der Sie Licht empfangen möchten, können Sie offline vorgefaltete Cubemaps offline generieren ( z. B. mit CubeMapGen ), mit denen die Faltung der Umgebungskarte ziemlich gut angenähert werden kann die BRDF. Auch hier ist SH nicht erforderlich.
SH ist wirklich nützlich, wenn Sie eine komplexe Szene haben und indirekte Beleuchtung wünschen, dh Bounce-Beleuchtung. In diesem Fall variiert die Lichtverteilung von Ort zu Ort. Grundsätzlich hat jeder einzelne Punkt in der Szene je nach Umgebung eine andere Beleuchtungsumgebung. In der Praxis wird die Beleuchtung an diskreten Punkten mithilfe eines globalen Beleuchtungsalgorithmus abgetastet. Es gibt viele Möglichkeiten, dies zu tun - Sie können beispielsweise die Beleuchtung an jedem Scheitelpunkt der Oberflächen oder an jedem Texel einer Lichtkarte testen. Oder erstellen Sie eine volumetrische Darstellung mithilfe eines Gitters oder eines Tetraedernetzes .
Der Punkt ist, dass es eine große Anzahl von Punkten gibt, an denen die Beleuchtung abgetastet wird. Daher benötigen wir eine flexible, aber sehr kompakte Darstellung der Beleuchtung um einen Punkt, um zu vermeiden, dass zu viel Speicher verbraucht wird. SH füllt diese Rolle gut aus. Es hat auch die praktische Eigenschaft, dass es gut mit Interpolation funktioniert, dh die SH-Koeffizienten können von einem Abtastpunkt zum anderen interpoliert werden und die Beleuchtung dazwischen verhält sich angemessen. Und da es die gesamte Winkelverteilung des einfallenden Lichts erfasst, nicht nur das Licht aus einer Richtung, können Sie es mit einer normal abgebildeten Oberfläche verwenden und ziemlich gute Ergebnisse erzielen.
Es sollte jedoch beachtet werden, dass SH wirklich nur für diffuse Beleuchtung nützlich ist. Wenn Sie keine wirklich verrückte Anzahl von SH-Koeffizienten verwenden, wird die Winkelverteilung des einfallenden Lichts zu stark verwischt. Für eine hochwertige spiegelnde indirekte Beleuchtung ist etwas anderes erforderlich, z. B. parallaxenkorrigierte Cubemaps und / oder Raytracing des Bildschirmraums.
quelle
Kurze Antwort, genauere physikalische Lichtberechnungen. (in Bezug auf einige Wechselwirkungseigenschaften der Lichtoberfläche).
Leider liegt das Problem in der Definition des normalen Weges . Das "normale" Phong-Reflexionsmodell wurde vor langer Zeit von der Echtzeit-Rendering-Community von Anfang an angenommen und war aufgrund seiner Einfachheit, die es für die Verwendung von Echtzeit-Rendering geeignet macht, de facto der Standard .
Das Problem ist jedoch , dass die Wechselwirkung zwischen Licht und Material im wirklichen Leben so kompliziert ist, dass sie nicht von einem einzelnen BRDF modelliert werden kann.
BRDFs sind eine Abstraktion dessen, wie die eigentliche Lichtinteraktion stattfinden soll. Phong ist nur eine von vielen anderen, die den Vorteil der Einfachheit hat.
In der Computergrafik gibt es verschiedene BRDFs, die in zwei Hauptkategorien fallen:
In Bezug auf die zweite Kategorie versucht jedes BRDF, bestimmte Eigenschaften durch Wechselwirkung mit der leichten Oberfläche zu erreichen. Das einfachste mögliche BRDF ist Lambertian, das versucht, die Streuung unter der Oberfläche zu modellieren, und häufig in Computergrafiken verwendet wird. Der konstante Reflexionswert eines Lambertian BRDF wird üblicherweise als diffuse Farbe bezeichnet.
In Echtzeit-Computergrafiken werden BRDFs normalerweise manuell ausgewählt und ihre Parameter so eingestellt, dass ein gewünschtes Aussehen erzielt wird (z. B. Verwendung von Phong mit bestimmten Werten zum Modellieren einer Kunststoff- oder Chromoberfläche).
Andererseits werden BRDFs manchmal direkt von der gewünschten Oberfläche aus gemessen (und nicht durch eine mathematische Gleichung dargestellt). Dies gibt uns physikalisch genauere Daten über die Oberfläche, die sonst nur schwer analytisch zu erreichen sind.
Eine Methode zum Anpassen dieser erfassten Daten besteht darin, ein analytisches BRDF auszuwählen und diese Daten darin anzupassen. Sphärische Harmonische ist nur eine Technik, mit der diese gemessenen Größen dargestellt und in ein analytisches BRDF-Modell eingepasst werden.
Die beste Ressource für die BRDF-Theorie ist das Echtzeit-Rendering
quelle