Nullebene LR - Universität Ulm

Werbung
Prof. Dr. Dirk Lebiedz
M. Sc. Mladjan Radic
Institut für Numerische Mathematik
Universität Ulm
WiMa-Praktikum II (Numerik)
Wintersemester 15/16
Projekt 2 - 3d-Bilder
I. Theorie verstehen
In diesem Projekt erzeugen wir 3d-Bilder, sodass bei Betrachtung des Bildes mit einer Rot-CyanBrille (RC-Brille) ein 3d-Effekt entsteht.
Wie im ersten Projekt ist eine 3d-Szene mit Position des linken und des rechten Auges gegeben. Weiter
definiert man sich eine Nullebene, welche sozusagen das Schaufenster darstellt, durch das man die Szene
betrachtet. Alle Objekte die sich von den Augen aus gesehen hinter der Nullebene befindet erscheinen
im 3d-Bild ’hinter dem Bildschirm’, alle Objekte die sich zwischen Nullebene und den Augen befinden
’kommen aus dem Bildschrim heraus’.
Funktionsweise der RC-Brille:
Um einen 3d Effekt zu erzeugen muss man die 3d-Szene für jedes Auge separat auf die Nullebene
projezieren (siehe Abbildung). Man erhält also zwei Bilder auf der Nullebene, eins für das linke Auge
und eins für das rechte Auge. Beide Bilder werden nun in RGB-Bilder konvertiert. Während wir für das
Nullebene
**
*
*
R
L
Bild des linken Auges nur den R-Farbton extrahieren extrahieren wir für das Bild des rechten Auges
den Cyan-Farbton (also GB-Farbton). Am Ende legen wir beide Bilder übereinander. Da das linke Auge
durch die Szene durch den roten Teil der RC-Brille sieht, wird der rote Farbton im resultierenden Bild
vom linken Auge nicht gesehen. Das rechte Auge betrachtet die Szene durch den Cyan Teil der Brille,
somit ist für das rechte Auge der Cyananteil im Bild nicht zu sehen. Beide Augen sehen also die Szene
aus verschiedenen Blickwinklen und es entsteht ein 3d-Effekt.
II. Aufgabenstellung
• Theorie-Aufgaben
(i) Berechnen Sie die Projektion eines Punktes vom Auge aus auf die gegebene Nullebene.
(ii) Geben Sie Transformationsmatrizen für Rotation um die Koordinatenachsen, Translation und
Skalierung an. Beachten Sie dabei, dass die Transformationsmatrizen in den 4 dimensionalen
Raum eingebettet werden, d.h. wir erhalten 4 × 4-Matrizen!
• Programmier-Aufgaben
(i) Schreiben Sie eine Funktion getMotion.m, die für einen gegebenen String
motion∈{’rotx’,’roty’,’rotz’,’zoom’} die entsprechende Transformationsmatrix
zurückgibt. Sie können die Funktion auch erweitern, sodass beliebige Transformationen
überlagert werden.
(ii) Schreiben Sie eine Funktion projection.m, die für eine gegebene Augenposition eye und
eine zur x-z-Ebene parallelen Ebene E die Projektion der Koordinaten coord auf die Ebene E
zurückgibt.
(iii) Schreiben Sie eine Funktion get3dframe, die zu gegebenem coord, eyeL, eyeR und box einen
Frame mit dem fertigen 3d-Bild zurückliefert. Verwenden Sie in der Funktion die MatlabRoutine getframe.
(iv) Modifizieren Sie Ihren Code, sodass auch eine komliziertere Figure mit einer komplizierteren
Bewegungen relaisiert wird und erzeugen Sie ein Video.
Herunterladen