Fakultät Informatik

Raytracer für den PGDP-Wettbewerb

Manuel Eberl

Bilder

+
+
+
+
+

Video

Neu implementierte Features

Laden/Speichern

  • Import von Szenenbeschreibungen in ge-GZIP-ten XML-Dateien
  • Speichern von Bildern als PNG, JPG und BMP
  • Generieren von Filmen, Export als MPEG4 (nur Linux, benötigt mencoder, übler Hack)

Geometrie

  • Transformation von Objekten mit 4-dimensionalen Matrizen (Translation, Rotation, Skalierung usw.)
  • Polygone, Kreise, Dreiecks-Meshes (Models)
  • Quadriken der allgemeinen Form xAx+Lx+C=0 wobei A 3x3-Matrix, L 3-dimensionaler Vektor, C reelle Zahl (Beispiele: Hyperboloide, Paraboloide, Ellipsoide, parabolische und hyperbolische Zylinder, mit Gleichungsparser)
  • CSG (Constructive Solid Geometry) mit allen Primitiven und Quadriken (Vereinigung, Schnitt, Differenz)
  • MD2- und OFF-Model-Files können in Models geladen werden (MD2 mit Skins, Vertexnormalen mit Interpolation, Keyframes)
  • Skyboxen (Hintergrundobjekte, 6 Materialien werden ähnlich wie bei einer normalen Box gesetzt, das Rendern erfolgt hier aber über Cube-Mapping, siehe Skybox-Video)

Materialeigenschaften

  • Verschiedene Beleuchtungsmodelle
    • Blinn-Phong
    • Phong
    • Cook-Torrance mit Näherung des Fresnelterms nach Schlick, 1994
  • Transparenz über Alphakanal der Farbe (per Textur oder für das gesamte Material einheitlich)
  • Brechung nach Snellius

Texturen

  • Texturen für alle Objekte (außer Quadriken)
  • mehrere Texturierungsarten für Kugel, Zylinder, Kegel, Kreis (kartesisch, Winkel, gestreckt, gemischt)
  • bilineares Filtering für Rastergrafik-Texturen
  • Texturen mit Alphakanal (Alphamapping)
  • Prozedurale Texturen durch Perlin Noise (Holz, Marmor, mit variablen Parametern) und einige andere (Schachbrettmuster, farbige Kacheln)

Shader
Beeinflussen beliebiger Koordinaten, Normalen, Texturkoordinaten, Farbe usw. bei jedem Schnitt mit dem zugeordneten Objekt
Sonstiges:

  • Octrees für Objekte
  • Beschleunigung durch wichtigkeitsbasiertes Rendering (Importance Sampling, bei geringer Wichtigkeit eines Samples werden Näherungen/einfachere Verfahren benutzt, z.B. bei Schatten)
  • Supersampling für Antialiasing
  • HDRR (mehr oder weniger - Farben sind intern immer Tripel aus IEEE 754-Doubles, es wäre nur eine leichte Anpassung der Render-Prozedur nötig, um HDRR-Bilder zu erstellen)
  • Distributed Raytracing bei Schattenermittlung für weiche Schatten

Beispiele mit Bildern

+

Gerendert mit weichen Schatten und Blinn-Phong-Lighting
Links: Mit Rotationsmatrix gedrehter, reflektierender Zylinder
Vorne mitte: Utah-Teapot (als OFF-Modell) mit glänzender Oberfläche
Rechts: Zylinder mit prozeduraler Marmor-Textur
Hinten mitte: Leicht reflektierende, blaue Kugel mit Wobbly-Normals-Shader
Im Hintergrund: Wand mit Ziegeltextur aus JPG-Datei, bilineare Filterung

+
+
+

Bild 1: Testszene gerendert ohne zusätzliche Features (sichtbares Aliasing am Rand des Deckels der Teekanne)
Bild 2: Gleiche Szene zusätzlich mit 4-fachem Multisampling-Antialising
Bild 3: Gleiche Szene zusätzlich mit weichen Schatten durch Distributed Raytracing

+
+
+
+

Jeweils mit gleichen Materialeigenschaften:
Bild 1: Blinn-Phong-Lighting
Bild 2: Phong-Lighting
Bild 3: Cook-Torrance-Lighting mit Photon Mapping
Bild 4: Visualisierung der Photon Map aus Bild 3

+
+
+
+

Bild 1: Lichtbrechung durch eine Kugel aus Glas (Brechungsindex 1,2)
Bild 2: Wasseroberfläche mit Wellenshader, nur Reflexion an der Wasseroberfläche
Bild 3: Gleiche Szene, nur Brechung an der Wasseroberfläche
Bild 4: Gleiche Szene, Brechung und Reflexion an der Wasseroberfläche

+
+

 Quadriken mit Wobbly-Normals-Shader. im Bereich von -2,3<x,y<2,3 und -2<z<2.
Bild 1: 5x²-5z²-y=0
Bild 2: x²+y²-z²-1=0

+
+
+
+
+
+

Demonstration von CSG-Operationen ( Constructive Solid Geometry)
Gerendert wurden jeweils eine rote und eine blaue Kugel mit verschiedenen CSG-Operationen
Bild 1: Vereinigung (Union)
Bild 2: Differenz "Rot minus Blau"
Bild 3: Differenz "Blau minus Rot"
Bild 4: Schnittmenge der Kugeln
Bild 5: CSG-Box mit prozeduraler Holztextur (Würfel minus zwei horizontal liegende Quader)
Bild 6: Komplexes CSG-Objekt (siehe  Wikipedia)

+
+

Verschiedene Texturierungsarten
Bild 1: Bei Kugel und Zylinder: Direktes Mapping der kartesischen Koordinaten auf Texturkoordinaten
Bild 2: Bei Kugel: Kugelkoordinaten als Texturkoordinaten; beim Zylindermantel: Zylinderkoordinaten als Texturkoordinaten; beim Zylinderdeckel: Streckung der Koordinaten um den Mittelpunkt auf die quadratische Textur
Beim Kegel beide Male Verwendung von y-Koordinate und Winkel als Texturkoordinaten

+
+
+
+
+

Verschiedene 3D-Models im MD2-Format

 

News

Matthias Niessner, our new Professor from Stanford University, offers a number of interesting topics for  master theses.

 

PhD positions on   Computational Fabrication and 3D Printing and  Photorealistic Rendering for Deep Learning and Online Reconstruction are available at the Computer Graphics & Visualization group.