Skip to main content


Zutaten: Zucker, Kakaomasse (50%), Milchzucker, Weizenmehl, Vollmilchpulver, Magermilchpulver, Butterreinfett, Sahnepulver, Butter (1,4%)
Kann Spuren von Analysis und Geometrie enthalten.

beitrag_II_07_weihnachten-titel_02

Homogene Koordinaten für Kameramodelle

Max kommt zu Rike ins Loft. Er hat das Glas erneut mitgebracht. Max hat es 3D-modelliert und eine schöne Textur draufgelegt und gerendert. Jetzt will er unbedingt ein weihnachtliches, künstlerisches Bild vor Schwarz haben, aber es klappt nicht. Seine Fotos von dem Glas bleiben schwarz, sein Rendering sieht unrealistisch aus. Nun fragt er Rike um Rat.

Max Hi, Rike, wie geht es Dir?

Rike Hi, Max, bald Weihnachten? Ich freue mich, endlich mal wieder bei meiner Familie zu sein. Bisschen freie Zeit, Zeit für neue Ideen...

Max Ich habe hier wieder das Glas. Mit Videokameras kenne ich mich gut aus, aber solche transparente Sachen! Es lässt sich nicht real und nicht virtuell fotografieren, immer bleibt das Bild dunkel. Ich finde Transparenz ziemlich unpraktisch!

Rike Hey, Max, das kriegen wir hin! Zuerst fotografieren wir es. Mit Fotoapparat und Licht. Das Licht muß auf das Glas fallen, damit es schöne Reflexionen und Brechungen gibt. Im Dunkeln macht das keinen Spaß.

Max Richtig!

Rike Im Virtuellen mußt Du ebenfalls Licht benutzen und auf das Glas richten. Dann gibt es verschiedene Möglichkeiten der Ansicht. Zum Beispiel kannst Du eine Kamera wählen, die eine parallele Perspektive hat. Dann sind die Projektionen auf die Kamera recht einfach. Parallele Linien des Glases bleiben parallel, rechte Winkel bleiben bei der Abbildung unverändert.

Max Ok, ist ja klar.

Rike Stimmt. Wir empfinden aber das fotografierte Bild als natürlich. Da haben wir eine Zentralperspektive zur Kamera hin. Die CG-Leute haben sich geeinigt und in die Mitte der Kamera den Nullpunkt gesetzt. In Richtung der “Welt” geht die positive z-Richtung. Außerdem brauchen wir noch eine Fläche für den Kamerasensor. Wenn Du dann renderst, musst Du angeben, wie groß Dein Bild wird, dann wird diese Fläche in die Pixel zerlegt, die Du brauchst, also diskretisiert. Das Rendering berechnet dann für jeden Pixel, was darauf abgebildet wird.

Camera Space

Zuerst braucht man aber geeignete Koordinaten im 3D-Raum: Du hast hier oft mit Strahlen zu tun, die zur Kamera hin gehen. Deshalb wurde der sogenannte Camera Space gefunden:

II_07_koordinaten_arnold_02_02
Das Koordinatensystem für den Camera Space. Die Kamera blickt in die positive z-Richtung.

Hier wird gern ein linkshändiges Korrdinatensystem verwendet. Die Kamera liegt im Koordinatenursprung (0,\;0,\;0). Den Sensor legen wir bei z\;=\;1 oder, wenn Dich das irritiert, zu z\;=\;-1 mit dem gespiegelten Bild.

II_07_koordinaten_arnold_06_02
Camera Space

Homogene Koordinaten

Wegen der vielen Strahlen werden die Koordinaten gern so geschrieben:

(\frac{x}{w},\;\frac{y}{w},\;\frac{z}{w})\; \longleftrightarrow\; (x,\;y,\;z,\;w),

w \;\neq \;0.

Max Ach, 4-dimensional?

Rike Das sieht nur so aus, w beschreibt so eine Art von Skalierungsfaktor auf dem Strahl, auf dem der Punkt P=(x,\;y,\;z,\;1) liegt. (x,\;y,\;z,\;w) nennt man homogene Koordinaten.

II_07_koordinaten_arnold_07_04
Homogene Koordinaten

Orthographische Kamera

Max Ok, ist ja praktisch.

Rike Mit diesen homogenen Korrdinaten geht die parallele Projektion recht einfach:

II_07_koordinaten_arnold_08_04
Parallele Projektion

Ein Punkt (x,\;y,\;z,\;1) wird auf (x,\;y,\;1,\;1) abgebildet:

P=(x,\;y,\;z,\;1)\; \longrightarrow \;P^{\prime}= (x,\;y,\;1,\;1)

Max Was, nur die z-Komponente wird 1 gesetzt?

Rike Ja, das ist schon alles.

Perspektivische Kamera

Bei der perspektivischen Kamera hat man einen Öffnungswinkel \alpha für das Objektiv und eine perspektivische Ansicht. Es wird noch der Nah- und Fernbereich eingeführt.

II_07_koordinaten_arnold_10_04
Perspektivische Projektion, n ist der Abstand für den Nahbereich, f ist der für den Fernbereich, es ist 0 \;\le\; n\; \le\; z \le\; f.

Max Ja, das macht Sinn, im Nahbereich braucht man ein Makroobjektiv und bildet anders ab.

Rike Okay, wenn man also festlegt, wie nah und wie fern die Kamera abbildet, dann ist die Abbildung linear und kann mit einer 4 x 4-Matrix geschrieben werden:

A (x,\;y,\;z,\;1) \;=\; (x,\;y,\;\frac{f}{z-n}\,\;(z-n),\;z)

\;\sim\;(\frac{x}{z},\;\frac{y}{z}, \frac{f}{z-n}\,\cdot\;\frac{z-n}{z})

II_07_formel_matrix_A_1

Max Hmmm, warum wird das nicht auf z=1 abgebildet?

Rike In dem Physically Based Rendering-Modell lässt man einen Nahbereich zu. Das heißt, dass die Kamera zwar im Nullpunkt sitzt, aber erst ab

z=n

fotografiert. Wie im echten Leben, die Objektive funktionieren noch nicht ganz nah an der Kamera. Wenn Du

n=0

setzt, bekommst Du

z=0.

Max Okay, weißt Du auch, wie die virtuellen Kameras im Nahbereich, also bei

z \approx n

funktionieren? Ist das auch linear? Es sieht immer alles so rund aus?

Fisheye

Rike Beim Fisheye zum Beispiel, da wird hauptsächlich im Nahbereich gerechnet, jeder Punkt P wird auf einen Halbkreis mit dem Radius r oder auf eine andere gekrümmte Fläche abgebildet.

II_07_koordinaten_arnold_09_03
Fisheye-Projektion

Auch das ist nicht schwer:

P=(x,\;y,\;z,\;1)\; \longrightarrow\; P^{\prime}\;=\; (x,\;y,\; z,\; r)

Das kann man auch mit einer Matrix schreiben:

A P \;=\; P^{\prime},

II_07_formel_matrix_A_2

Max Okay, verstehe. Das gibt immer kreisförmige Bilder.

Rike Stimmt.

Max Jetzt lass uns das mal rendern. Sag mal, kann ich denn nicht wie eine Fliege mit einer virtuellen Kamera in das Glas hineinfliegen und von innen nach draußen schaun?

Rike Ja klar! Eine Fliege hat einen weiten Blickwinkel, aus Linien werden Kurven...

glas_vr_black_orthog_camera1_phys_mat_b_16
Orthogonale Projektion
glas_vr_black_camera2_60_grad_phys_mat_b_16
Perspektivische Kamera mit einem Öffnungswinkel von \alpha \;=\; 33^{\circ}\;\sim\;60 mm-Objektiv.

 

glas_fisheye_phys_mat_b_17
Fisheye-Blick aus dem Glas heraus, mit einem Öffnungswinkel von \alpha \;=\;155^{\circ} \sim 4 mm-Objektiv.

***

Übungsaufgaben

  1. Wie sieht die Matrix für die orthogonale Projektion im Camera Space mit homogenen Koordinaten aus?
  2. Ist die Abbildung linear?

Lösungen

  1. II_07_formel_matrix_A_3
  2. Ja