Startseite Beispiele Screenshots Benutzerhandbuch Bluesky-Logo YouTube ☰
OghmaNano Simulation von organischen/Perowskit-Solarzellen, OFETs und OLEDs DOWNLOAD Quick Start guide

Wie funktioniert Raytracing in optischen Systemen?

1. Einleitung

OghmaNano showing 3D ray tracing through a Cooke Triplet lens
Vollständige 3D-Raytracing-Funktion in OghmaNano. Strahlen werden von einer Quelle ausgesendet, durch ein optisches System mit mehreren Elementen geleitet und auf einer Detektorebene aufgezeichnet.
Light bending by refraction at material interfaces
Die Brechung verändert die Richtung eines Lichtstrahls, wenn dieser von einem Material in ein anderes mit unterschiedlichem Brechungsindex übergeht. In einem vollständigen optischen System bestimmt die wiederholte Brechung an vielen Oberflächen das endgültige Bild und die Bildqualität.

Die Strahlenverfolgung in optischen Systemen beruht im Wesentlichen auf der wiederholten Anwendung geometrisch-optischer Gesetze in drei Dimensionen. Ein Strahl wird durch eine Position \(\mathbf{x}\), eine Richtung \(\mathbf{k}\), eine Wellenlänge \(\lambda\) und eine optische Leistung \(P\) definiert. Während er sich durch eine Szene bewegt, interagiert er mit Oberflächen durch Brechung, Reflexion, Absorption und Abschneidung.

An jeder Grenzfläche wird die Richtung des Lichtstrahls durch das Snellsche Gesetz bestimmt. In seiner skalaren Form:

\[ n_1 \sin(\theta_1) = n_2 \sin(\theta_2) \]

In praktischen Simulationen wird Raytracing in vollen drei Dimensionen durchgeführt. Dies erfordert eine Vektorformulierung, bei der die einfallende Richtung \(\mathbf{k}_i\), die Oberflächennormale \(\mathbf{n}\) und die ausgetretene Richtung \(\mathbf{k}_t\) explizit berechnet werden. Eine gängige Form ist:

\[ \mathbf{k}_t = \frac{n_1}{n_2}\mathbf{k}_i + \left(\frac{n_1}{n_2}\cos\theta_i - \cos\theta_t\right)\mathbf{n} \]

wobei \(\cos\theta_i = -\mathbf{k}_i \cdot \mathbf{n}\) und \(\cos\theta_t\) sich aus dem Snellschen Brechungsgesetz ergeben. Diese Operation wird an jeder Grenzfläche des Systems angewendet, wodurch es möglich wird, Lichtstrahlen durch beliebig komplexe Anordnungen von Linsen, Filmen und strukturierten Oberflächen zu verfolgen (siehe ?? und ??).

Zusätzlich zu Richtungsänderungen führt jede Wechselwirkung zu einer Umverteilung der optischen Leistung zwischen den reflektierten und transmittierten Strahlen. Dies wird durch die Fresnel-Gleichungen beschrieben. Für unpolarisiertes Licht lautet die kompakte Form:

\[ R = \left|\frac{n_1 \cos\theta_i - n_2 \cos\theta_t}{n_1 \cos\theta_i + n_2 \cos\theta_t}\right|^2, \quad T = 1 - R \]

Im Allgemeinen können polarisationsabhängige Koeffizienten \(R_s, R_p\) und \(T_s, T_p\) verwendet werden. Diese bestimmen, wie sich die optische Leistung an jeder Grenzfläche verteilt, und sind für die Vorhersage von Verlusten, Durchsatz und Effizienz unerlässlich.

2. Einfache, unoptimierte Raytracing-Methode

Im Prinzip ist die Strahlenverfolgung also recht einfach: Man verfolgt einen Strahl, findet den nächsten Schnittpunkt, wendet das Snellsche Gesetz und die Fresnel-Beziehungen an und setzt fort. Bei der Simulation realistischer optischer Systeme (z. B. OLEDs, Linsen oder die Lichtauskopplung aus Geräten) muss man jedoch oft Hunderttausende oder Millionen von Strahlen verfolgen. Die größten Kosten entstehen nicht durch die physikalischen Berechnungen, sondern durch das Suchproblem: die Bestimmung, welches Objekt ein Strahl zuerst schneidet.

In einer diskretisierten Szene werden Oberflächen üblicherweise als Dreiecksnetze dargestellt. Eine einfache Implementierung würde einen Strahl mit jedem Dreieck in der Szene auf Schnittpunkte prüfen. Für einen Strahl \(\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}\) und ein Dreieck, das durch die Eckpunkte \(\mathbf{v}_0, \mathbf{v}_1, \mathbf{v}_2\) definiert ist, kann der Schnittpunkt in baryzentrischer Form dargestellt werden:

\[ \mathbf{o} + t\mathbf{d} = \mathbf{v}_0 + u(\mathbf{v}_1 - \mathbf{v}_0) + v(\mathbf{v}_2 - \mathbf{v}_0), \quad u,v \ge 0,\; u+v \le 1 \]

Die Berechnung von \(t,u,v\) (z. B. mithilfe des Möller-Trumbore-Algorithmus) ergibt, ob der Strahl das Dreieck schneidet. Eine einfache, systematische Suche benötigt \(\mathcal{O}(N)\) Rechenschritte pro Strahl für \(N\) Dreiecke, was schnell zu einem unvertretbar hohen Rechenaufwand führt.

3. Schnellere Raytracing-Technologie

Bounding volume hierarchy (BVH) showing a ray intersecting bounding boxes before testing individual triangles
Eine hierarchische Struktur von umschließenden Volumina (BVH) beschleunigt das Raytracing, indem sie die Geometrie in verschachtelten Boxen einschließt. Zuerst wird ein Strahl auf große umschließende Boxen geprüft; erst wenn eine Box getroffen wird, geht der Algorithmus zu kleineren Boxen über und prüft schließlich einzelne Dreiecke. Ganze Bereiche der Szene können übersprungen werden, wenn ihre umschließenden Boxen nicht von dem Strahl durchdrungen werden.

Um dieses Problem zu lösen, wird die Szene mithilfe von räumlichen Beschleunigungsstrukturen wie hierarchischen Begrenzungsraumstrukturen (BVH) in Bereiche unterteilt. Die Geometrie wird rekursiv in achsenparallele Begrenzungsboxen (AABBs) unterteilt, wodurch eine Baumstruktur entsteht. Jeder Knoten enthält ein Begrenzungsvolumen, das eine Teilmenge von Dreiecken umschließt. Die Strahlabfrage erfolgt dann hierarchisch: Zuerst wird die Begrenzungsbox durchdrungen, und nur wenn dies der Fall ist, wird zu den untergeordneten Knoten übergegangen.

Dadurch wird die Komplexität von Schnittpunktprüfungen in der Praxis von \(\mathcal{O}(N)\) auf \(\mathcal{O}(\log N)\) reduziert, was die Simulationsgeschwindigkeit erheblich erhöht. Eine schematische Darstellung der BVH-Struktur ist in ?? dargestellt.

Zu den zusätzlichen Optimierungen gehören die parallele Verarbeitung auf mehreren CPU-Kernen, die frühzeitige Ablehnung von Dreiecken, die sich hinter dem Strahl befinden, und die Gruppierung von Wellenlängen. Dennoch bleibt das Kernproblem ein Suchproblem: die effiziente Identifizierung der ersten Oberfläche, auf die ein Strahl trifft.

4. Was bedeutet das für Sie als Nutzer? (Das heißt: Wie kann ich meine Simulation schneller ausführen lassen?)

Bei der Definition einer optischen Szene wird die Leistung stark von der Anzahl der geometrischen Grundelemente beeinflusst. Es sollte angestrebt werden, die Anzahl der Dreiecke zu minimieren, ohne dabei die physikalische Genauigkeit zu beeinträchtigen. Beispielsweise sollten bei der Importierung von CAD-Modellen unnötige Details (z. B. Schrauben, Gewinde, feine mechanische Elemente) entfernt werden.

Jedes zusätzliche Dreieck erhöht die Rechenkosten für die Berechnung der Schnittpunkte von Lichtstrahlen mit der Geometrie. Diese Kosten steigen noch weiter, wenn mehrere Wellenlängen oder große Lichtstrahlbündel simuliert werden. Im Gegensatz zu herkömmlichen CAD-Arbeitsabläufen erfordert daher eine effiziente optische Modellierung eine sorgfältig vereinfachte Geometrie, die nur die optisch relevanten Merkmale erfasst.

Zusammenfassend lässt sich sagen, dass die Strahlenverfolgung in optischen Systemen aus Folgendem besteht: der wiederholten Anwendung des Snellschen Gesetzes in 3D, der Fresnel-Reflexion und -Transmission sowie einer effizienten Suche innerhalb der Geometrie der Szene. Zusammen bilden diese Elemente die Grundlage für die physikalisch basierte optische Simulation in OghmaNano.