Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 9 » Prüfungsprotokoll für CG - Februar 2014   (Übersicht)

Prüfungsprotokoll für CG - Februar 2014

Prüfer: Prof. Stamminger
Dauer: 25 min
ECTS: 7.5
Atmosphäre: freundlich, recht entspannt. Anfangsnervosität wurde durch den wirklich netten Anfang beseitigt.

Phong Lighting

Frage war einfach nur „Erklären Sie mal“, ich habe dann eben die 3 verschiedenen Terme erklärt, dass es nicht physikalisch korrekt ist etc. Bei diffus wurde nochmal extra nachgefragt, von welchem Winkel man den Cosinus braucht und bei spekular war (letztendlich) die ganze Formel nötig. I_spec erklären können!

Dann kam noch die Distanz Formeln für Punktlichtquellen dran (phyiskalisch 1/ ||p - x||^2, im Model aber anders).

Torrance-Sparrow

Grundlagen erklären → microfacetten mit idealer Reflektion, GDF - jeweils erklären was es bedeutet, aber keine Formeln oder so.

Und wenn Sie jetzt einen eigene Lighting Methode erfinden würden, in welchen Shader würden Sie die dann packen? Wieso? Was machen die Shader?

Shading

Welche Möglichkeiten gibt es, wenn wir annehmen dass rasterisiert wurde, die Pixelfarbe zu bestimmen? - Flat, Gouraud und Phong-Shading erklären, ich habe auch gleich die Probleme dazu genannt.

Dann zu Normaleninterpolation: aber ein Dreieck ist doch etwas flaches, wieso muss man da die Vertex-Normalen interpolieren? - Antwort: Dreieck ist schon flach, aber gesamtes Objekt ja nicht, in die Vertexnormalen gehen ja die Normalen von mehreren Dreiecken ein, es haben also normalerweise nicht alle Vertexnormals die gleiche Richtung → Interpolation.

Texturen

Wenn wir zusätzlich noch eine Textur anwenden wollen, was brauchen wir dann als erstes? - Texturkoordinaten. Wie bekommt man die? [0 - 1], an Vertices setzen, Rest interpolieren. Welche Interpolation ? Perspektivisch. Warum? - mit Skizze erklärt, siehe Schachbrettbilder im Skrit. Nochmal zusätzliche Skizze (auch wie im Skript), dass Mittelpunkt eben nicht auf Mittelpunkt landet.

Eigenschaften einer perspektivischen Interpolation? Linien auf Linien, aber Segmente nicht unbedingt auf Segmente. Parallelität nicht erhalten, endliche Punkte können auf Unendlich abgebildet werden. - „Erklären Sie das doch mal noch genauer“ - Division durch z, „falscher“ Teil der Linie wird geclippt usw. Punkt der auf einer z-Linie mit Kamera liegt wird nach Unendlich abgebildet. (Siehe Ende von „Viewing“ im Skript.)

Wie löst man das Problem? Clippen mit homogenen Koordinaten.

Clipping

„Clipping gegen Edges ist langweilig, spannend wird es erst wenn wir ein Polygon haben. Was muss man dann machen?“ (Er malt Skizze von Rechteck gegen das geclippt werden soll. Die linke obere Ecke des Rechtecks ist in einem Dreieck, das geclippt werden soll.) - Input stream von vertices (erster = letzter), daraus Line segments bilden, dann diese gegen die einzelnen Kanten des Rechtecks (nacheinander!) clippen.

Ray-Tracing

Allgemeine Idee erklären. Unterschied zu Rasterisierung. Wie bekommt man Ray? - p(t) = e + t(s - e). Wie findet man s? Pixelzentrum. Wie bekommt man überhaupt die Bildebene? Ebenengleichung (nx - d = 0). Kreuzprodukt up-vector mit gaze-direction vector „und dann nochmal“. (Hier habe ich glaube ich ein bisschen was anderes erklärt als er haben wollte, er hat dann aber auch gemeint das seine Frage doof war).

Ich hatte anfangs erwähnt, dass man mehrere Rays durch ein Pixel schickt. Warum? Farbe hängt nicht nur vom Pixelzentrum ab, sondern von Umgebung auch. Wo ist das besonders wichtig? Objektgrenzen…

Ray-Triangle Intersection. Wie macht man das? Gleichung mit baryzentrischen Koordinaten, auflösen, 3 Unbekannte t, beta, gamma. „Dann haben wir Schnittpunkt mit Ebene, aber wir wissen doch noch nicht ob er wirklich im Dreieck ist“. Dafür muss gelten dass t, beta, gamma > 0 und beta + gamma ⇐ 1.

Wenn wir jetzt hier Phong-Lighting anwenden wollen, wo bekommen wir dann die Normalen her (Vertex Normals sind gegeben) → Interpolation mit baryzentrischen Koordinaten. „Warum ist das so gut?“ → die haben wir ja schon (beta und gamma, alpha dann einfach 1 - beta - gamma. Brauchen wir hier nicht auch wieder perspektivische Interpolation? Nein, hier sind wir schon in World Coordinates.