Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 9 » cg_75ects-2014-02   (Übersicht)

Prüfungsprotokoll für CG 2014 - 7.5 ECTS:

Prüfer: Prof. Stamminger
Beisitzer: Henry Schäfer
Dauer: 30min 7.5 ECTS
Ergebnis: 1.0

Anmerkungen: Ziemlich lockere, lustige Stimmung, wirklich eine angehnehme Prüfung. Prof. Stamminger hat alle Fragen gestellt. Im Großen und Ganzen lief die Prüfung etwas anders als die bisherigen Protokolle vermuten lassen. Es kamen etwas andere Themen dran und es wurde etwas mehr Wert auf Transfer und Verständnisfragen gelegt (dazu später mehr). Vllt. lag das aber auch daran, dass ich am Anfang erstmal gleich alles runtergerattert habe.

Ich glaube sie hätten mich gern öfters malen gesehen, Prof. Stamminger hat mir auch einige male etwas vorgemalt.

Formeln sind nicht unbedingt nötig (am besten auch dann sagen wenn man eine Formel nicht parat hat, aber gleich erklären was die Idee ist / wie man darauf kommt). Als ich Snells Law hinschreiben wollte kam die Aussage: „Das kann man sich dann auch im Internet suchen“.

Vorbereitung: Gesamtlernzeit war ein bisschen mehr als eine Woche. Ich hab mit Skriptlesen angefangen und im ersten Durchlauf nur Zusammenhänge aber keine Details angeschaut. Dann später habe ich mir die Algorithmen genauer angeschaut. Leider ist das Skript an einigen Stellen nicht ganz verständlich, was den Prozess ziemlich erschwert. Bei CG bietet es sich an sich erst mit den Vorlesungsaufzeichnungen vorzubereiten. Parallel daszu sollte man die Folien lesen. Danach sollte man nochmal über die Folien gehen bis man alles gut nachvollziehen kann.

Zudem habe ich mich mit den Altprotokollen vorbereitet. Es hat sich wirklich ausgezahlt Dinge auch verstanden zu haben (ich hab mich in der Prüfung teilweise über mich selbst gewundert).


Phong Lighting
Hier sollte ich erstmal Phong Lighting und die dem PhongLighting zu Grunde liegenden Konzepte erklären (also was sagt Specular Light aus und wie wird es berechnet). Ich hab hier immer gleich alles anhand Beispielen im Raum erklärt (Diffuses Lighting - Blatt Papier, streut in alle Richtungen egal vom Blickwinkel). Dann sollte ich den Spekulären Term erklären mit Zeichnung erklären. Ich hab gleich noch die Herleitung des reflektieren Strahls mit hingemacht und dann den entsprechenden Winkel erklärt. Zudem sollte ich noch den Exponenten n_gloss erklären. Der Halfway-Vektor wurde nicht gefragt.

Ich dachte und hoffte an der Stelle, dass ich mit Lighting eig. schon durch bin, aber dann wurde gefragt, was man denn jetzt mit der Distanz zur Lichtquelle macht. Hier hab ich erklärt, dass Standardphong von unendlich weit entfernten Lichtquellen ausgeht. Ich wurde daraufhin prompt mit einer Frage nach Punktlichtquellen belohnt. Dazu hab ich dann erklärt wie es pysikalisch aussieht (quadratischer Abfall), dann dass es aber unrealistisch aussieht und dass man deswegen parametrisierte Polynome zweiten Grades nimmt (ist eine kleine Folie zwischen Phong und Torrance-Cook im Skript, da steckt auch keine Magie dahinter, man sollte es mal gesehen haben).

Torrance-Cook-Modell
Torrance-Cook-Modell erklären, also die einzelnen Terme D, F, G (Distribution, Fresnel und Geometry Term, wobei mir der letzte nicht eingefallen ist). Für den Geometry Term hat er mir dann eine Zeichnung einer sehr rauen Oberfläche hingemalt. Daran hab ich mich dann wieder erinnert und weitererklärt. Hier waren keine allzu genauen Erklärungen sondern nur Konzepte gefragt.

Bump Mapping
Kurz erklären, was Bumpmapping ist und wozu es gebraucht wird.

Ray Tracing
Hier sollte ich erstmal erklären. Ich hab weit ausgeholt, und damit angefangen wie Licht und menschliches Sehen in der Realität funktionieren. Außerdem habe ich erklärt, warum Photon Mapping und Forward Raytracing zu rechenintensiv sind und sich nicht lohnen. Auf Raytracing habe ich dann über Raycasting übergeleitet. Dazu habe ich erklärt wie man die Strahlen aufstellt und dann die verschiedenen Tests erklärt. An der Stelle habe ich noch kurz den Schnittpunkttest zwischen Strahl und Kugel erklären sollen. Ich wusste die Formel nicht genau und hab das auch so gesagt. Ich habe allerdings auch gleich erklärt, wie man den Test herleiten kann und dass man über den Diskriminantentest schnell testen kann ob es einen, zwei oder keinen Schnittpunkt mit der Kugel gibt. Außerdem habe ich noch die Secondary Rays, also Shadow, Refraction und Reflection erklärt. Dazu dann bei Refraction Snells Law ganz kurz. Außerdem wurde noch nach dem Fresnel Term gefragt. Hier hab ich gesagt, dass Licht abhängig vom Winkel teilweise gespiegelt und gebrochen wird, und wie man daraus dann die Farbe bestimmt.

Später wurde dann nochmal kurz gefragt, wie man jetzt eine nicht perfekt spiegelnde Oberfläche mit Raytracing darstellen kann. (Dazu steht was im letzten Foliensatz, den ich glücklicherweise kurz überflogen hatte). Man schickt dazu an einem Punkt mehrere Strahlen los und gewichtet dann Abhängig vom Winkel den Beitrag den die reflektierten Farben zur Farbe am Schnittpunkt haben.

Ray Tracing - Suchraum
Überleitung mit: Welches Problem hat jetzt das Raytracing, gesucht war natürlich die Geschwindigkeit, es müssen soviele Strahlen wie Pixel berechnet werden. Die Lösung ist es den Suchraum einzuteilen, also Unit Space Partitioning, Octrees und KD-Bäume. Ich sollte die einzelnen Verfahren aufzeichnen und erklären. Außerdem sollte ich die Vor- und Nachteile, die Traversion und die Konstruktion der Bäume erklären. Bei den KD-Bäumen sollte ich dann zusätzlich die Schnittpunktsuche erklären (wichtig rekursiv). Hier hab ich ein bisschen geschludert, aber hab dann wohl mit Tips das gesagt / gemalt, was gehört werden wollte :D. Dann musste ich noch erklären, wie man das in hinsicht auf die Rekursion implementiert. Hier wollte er hören, dass man die eigentliche Rekursion auf einen Worklistalgorithmus mit Schleife umbauen sollte, weil Rekursion auf Graphikkarten teuer / schlecht möglich ist.

Raytracing vs. Rasterisierung
Hier war ich echt baff. Es wurde übergeleitet mit: Welchen Aufwand hat das jetzt mit den Kd-Bäumen? Ich hab mit irgendwas logarithmisches geantwortet. Darauf wurde dann noch der Aufwand der Rasterisierung gefragt. Hier hab ich erst gesagt kubisch wegen Matrix-Matrix-Multiplikationen. Ich wurde dann darauf hingewiesen, dass die Matrizen ja sehr leer sind. Richtig war dann eben O(n).

Die Frage die dann kam war etwas fies: „Raytracing Leute sagen wegen der Aufwände immer, dass sich Raytracing bei vielen Polygonen ja eher lohnen müsse, als Rasterisierung, was vergessen sie dabei?“. Ich hab dann ewig überlegt und kam dann mit einiger Hilfe darauf, dass die erheblichen Kosten für Raytracing im Aufbau des Baums liegen.

Aliasing
Dann wurde nach Aliasing-Effekten beim Raytracing gefragt. Hier hab ich erklärt, dass man über die einzelnen Pixel die Szene abtastet, dadurch entstehen Probleme bei Texturen, Objekträndern oder bei weit entfernten / kleinen Dreiecken. Es wurde noch gefragt was man dagegen tun kann, hier ist mir als Stichwort „Supersampling“ eingefallen, wobei ich das mal irgendwo anders und nicht in der Vorlesung aufgeschnappt hab. Anschließend wurde noch über generelle Antialiasing-Probleme mit Texturen gesprochen. Also das Ganze kurz erklärt, u.a. wann das Problem Auftritt (Pixel Bild gleich groß Pixel Textur). Als Gegenmaßnahme MipMapping erklärt (halbe Frequenz und kurz noch Abtasttheorem).

Uuuund dann wars auch schon rum.