Sphärische Oberwellenbeleuchtung - was leistet sie?

8

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?

TravisG
quelle
Wenn du denkst, dass es etwas gibt, das du mit Antwort nicht magst, kann ich es vielleicht näher erläutern?
Konzept3d

Antworten:

10

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.

Nathan Reed
quelle
> 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 <Das verwirrt mich. Es scheint mir, dass Sie das Licht um einen Punkt (das ist Bestrahlungsstärke, nicht wahr?) Genauso gut mit einer normalen Intensitätsdarstellung darstellen können, und Sie benötigen auch weniger Speicher dafür, da selbst nur 2-Band-SH 4 verwendet Koeffizienten pro Farbe, während die Intensität insgesamt nur 3 beträgt.
TravisG
Nehmen wir ein konkretes Beispiel: Sind Sie zufällig mit dem in Cryengine 3 verwendeten Algorithmus für das Lichtausbreitungsvolumen vertraut? Ich frage mich, warum es nicht praktisch ist, die Beleuchtung im LPV genauso intensiv darzustellen.
TravisG
@TravisG Es ist nicht nur ein einzelner RGB-Intensitätswert, da unterschiedliche Lichtmengen aus unterschiedlichen Richtungen kommen. Die Idee ist, die Winkelverteilung des einfallenden Lichts darzustellen, nicht nur das Licht aus einer bestimmten Richtung oder den Durchschnitt über alle Richtungen. Überlegen Sie, ob Sie links ein grünes und rechts ein rotes Licht haben. Eine normal zugeordnete Oberfläche sollte grün reflektieren, wo die Normalen nach links zeigen, und rot, wo sie nach rechts zeigen. Eine einzelne RGB-Intensität kann diese Situation nicht darstellen, eine 2- oder 3-Band-SH-Basis jedoch.
Nathan Reed
@TravisG Ebenso wie bei LPV müssen Sie die Richtung verfolgen, in die sich das Licht ausbreitet. Es breitet sich nicht nur in alle Richtungen aus (es sei denn, es wird von Partikeln in der Luft oder dergleichen gestreut). es geht weiter in die Richtung, in die es ausgestrahlt wurde. Beispielsweise könnte ein Knoten im LPV rotes Licht enthalten, das nach rechts und grünes Licht nach links wandert. Jeder Knoten muss also die Winkelverteilung des durch ihn hindurchtretenden Lichts verfolgen.
Nathan Reed
3

Was ich noch nicht verstehe, ist, was dies erreichen soll?

Kurze Antwort, genauere physikalische Lichtberechnungen. (in Bezug auf einige Wechselwirkungseigenschaften der Lichtoberfläche).

Warum nicht alles mit dem diffusen BRDF auf normale Weise bewerten?

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.

Aber was sind die tatsächlichen Vorteile?

In der Computergrafik gibt es verschiedene BRDFs, die in zwei Hauptkategorien fallen:

  1. Basierend auf physikalischer Theorie.
  2. Entwickelt für eine bestimmte Klasse von Oberflächentypen und wird normalerweise beim Echtzeit-Rendering verwendet.

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

  • 7.5 BRDF-Theorie.
  • Über sphärische Harmonische überarbeiten Sie 7.7.2 Darstellungen für gemessene BRDFs.
concept3d
quelle
Danke für die Antwort, aber es fehlt ein bisschen, wonach ich suche. Soweit ich weiß, können Sie jede Funktion f (x) mit sphärischen Harmonischen approximieren, und aus irgendeinem Grund entscheiden sich die Leute, Teile eines Beleuchtungsmodells mit sphärischen Harmonischen zu approximieren (was genau von der Anwendung abhängt, aber z. B. der lambertsche diffuse Term ist etwas dass ich oft begegnet bin). Ich frage mich, warum das so ist. Es scheint mir, dass sphärische Harmonische nur eine verlustbehaftete Darstellung sind, die dieselben Daten darstellt, aber nicht einmal einen Speichervorteil hat.
TravisG
Nun, das hängt davon ab, womit Sie es vergleichen. Wenn Sie es mit einem analytischen Modell vergleichen, ist es aufwändiger und teurer. Das Analysemodell berücksichtigt jedoch nicht die lokale Umgebung. Heutzutage sehe ich jedoch meistens Leute, die Würfelkarten verwenden. Sie erzielen ähnliche Ergebnisse und bieten eine bessere Hardwareunterstützung.
drxzcl