Linse 2.0

Jappadappadoo…

jetzt habe ich es geschafft. Für meine DA ist nun die Fresnel’sche Reflexion auf die Linse adaptiert. Anhand des Brechungswinkels wird nun entschieden, wieviel Licht reflektiert und wieviel transmittiert wird. Die Transformation erfolgt dann ganz normal mithilfe des Snellius’schen Brechungsgesetzes. Passend dazu habe ich auch die Reflexion und Brechung am Rand der Linse implementiert.

Das ganze habe ich in einem generischen Linsenmodell umgesetzt, so dass ich jetzt beliebige Linsen bauen kann. Einfach nur die beiden Radien der Linsenoberflächen und die z-Koordinaten der Schnittpunkte mit der optischen Achse angeben – fertig.

Zudem habe ich jetzt die Möglichkeit die Reflexionsfarbe und die Transmissionsfarbe anzugeben, so dass ich „beschichtete“ und farbige Linsen simulieren kann.

Ich hab mal ein einfaches Bild angehängt.

Jens

Glaslinsen

PBRT für Visual Studio 2008

Da ich für meine Diplomarbeit den Raytracer PBRT „Physically Based Rendering: From Theory to Implementation“ (http://www.pbrt.org) einsetze, dabei aber das Visual Studio 2008 verwenden möchte, habe ich mir die Arbeit gemacht und die Bibliotheken für zlib und openexr mit Visual Studio 2008 unter Vista neu übersetzt. Anschließend habe ich ein neues Projekt in Visual Studio angelegt und die PBRT-Sourcen der Version 1.03 eingearbeitet. Die Bibliotheken und das Projekt mit den Sourcen könnt ihr hier herunterladen: /download/pbrt.zip

Installation

  1. CygWin installieren. Dabei zusätzlich zur Standardinstallation aus dem Abschnitt „Development“ die Pakete flex und bison auswählen.
  2. Das Paket in einem beliebigen Projektverzeichnis auspacken.
  3. Das Unterprojekt core Übersetzen. Dabei wird ein Fehler auftreten, der durch die aktuelle Version von flex verursacht wird. Hier einfach die Zeile
    b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
    … in die Zeile
    b->yy_is_interactive = 0;
    … korrigieren. Anschließend kann das Projekt komplett übersetzt werden.
    HINWEIS: Paralleles Übersetzen führt in aller Regel zu Fehlern, daalle Subprojekte in das gleiche Verzeichnis schreiben und dabei in die gleiche Progammdatenbank nutzen. Einfach in den Einstellungen das parallele Übersetzen auf einen Prozess beschränken und das Problem ist weg.
  4. Solution öffnen und übersetzen.

Ausführen

Im Verzeichnis pbrt/win32 befinden sich zwei Batch-Dateien, die eine Kommandozeile öffnen, bei welcher der PATH und der PBRT_SEARCHPATH auf das Release bzw. Debug-Verzeichnis verweisen.

Nach dem öffnen der Konsole wechselt man nun einfach in das Verzeichnis mit der Szenenbeschreibung und ruft pbrt.exe <scene>.pbrt auf.

Viel Spaß

Update (25.01.2009):
In der letzten ZIP-Datei bzw. im Projekt fehlte noch der Spot als Lichtquelle – habe ich wohl vergessen. Mit dem aktuellen Paket, das jetzt zum Download zur Verfügung steht, war ich jedoch in der Lage alle dem Buch beiliegenden Beispielszenen zu rendern.

Update (27.02.2009):
Habe das Problem mit Punkt 3 (s.o.) in den Griff bekommen. Die aktualisierte Version steht jetzt zum Download zur Verfügung.

Meine DA

Da ich jetzt endlich mit meiner Diplomarbeit anfange, möchte ich euch ein bisschen über das, was ich gerade treibe, berichten. Der Arbeitstitel lautet:

Nachbildung objektivinduzierter Seiteneffekte für die virtuelle Fotografie

Damit will ich in meiner Diplomarbeit ein bisschen die Effekte nachbilden, die Hersteller von Kameras und Objektiven seit jeher eleminieren wollen. Als erstes Kernthema habe ich mir die chromatische Aberration herausgegriffen.

lens1

Um die CA abbilden zu können musste ich in einem ersten Schritt eine Linse nachbilden. Der erste Prototyp besteht lediglich aus zwei impliziten Kugelfunktionen. Damit lässt sich der Schnittpunkt eines Strahls mit der Linse direkt berechnen. Zur Kontrolle habe ich die Linse zunächst vor die klassische Lochkamera „gehalten“.

lens2

Im zweiten Schritt habe ich die Lochkamera eliminiert und die Strahlen ausgehend vom Film auf die Kreisscheibe der Linse zufällig verteilt. Da die Linse einen größeren Durchmesser als der Film hat und keine Blende existiert, ist der Bereich der Fokussierung sehr klein.

lens3

Im dritten Schritt kam dann zum Prototyp der erste Ansatz der chromatischen Aberration hinzu. Dazu habe ich den Strahl so modifiziert, dass er nur noch Träger des roten, blauen oder grünen Anteils der endgültigen Farbe war. Den drein unterschiedlichen Farbkomponten habe ich dann (zugegebenermaßen zu sehr) unterschiedliche Brechungsindizes verpasst. Das Ergebnis hab mich ehrlich gesagt nicht so umgehauen – aber genau hier soll ja das Potential für die Dipolmarbeit stecken.

Sobald ich wieder neue Bilder habe, melde ich mich.

Jens