Hinführung

Anmerkungen

  • Wir rechnen hier in 2D, das ganze läuft aber analog in 3D ab.
  • Für das einfachere Rechnen ist die Sehrichtung entlang der positiven y-Achse (statt in 3D entlang der negativen z-Achse).

Homogene Koordinaten

Ausgangslage sind Punkte im Eyespace. Die Idee: Wie jede Transformation lässt sich Perspektivische Projektion auch durch eine Matrix ausdrücken. In homogener Schreibweise sieht eine Matrix so aus:

Wegfall der linearen und Translationsmatrix

Wir können uns erschließen:

  1. Wir sind im Eyespace schon passend skaliert / orientiert
  2. Wir sind auch passend positioniert

Damit ist der Effekt von soweit:

Dehomogenisiert wäre das dann:

Homogene Werte

Wir sehen, wir haben eine Division. Zur Erinnerung an unsere Mission: und sollen kleiner werden, wenn die Entfernung größer wird. Wie machen wir das? Indem wir durch die Entfernung teilen. Das haben wir genau hier erreicht.

Weiter können wir uns erschließen:

  1. ist eine konstante Skalierung, unabhängig der Position. Das brauchen wir nicht.
  1. bezieht sich auf den -Wert, dementsprechend würden Dinge kleiner werden, je weiter oben sie sind. So funktioniert die Realität nicht, dinge werden nicht kleiner, je weiter oben sie sind.
  1. Dementsprechend bleibt nur übrig, was sich genau auf , also die Distanz zur Kamera bezieht. muss also definiert sein, wir nehmen der Einfachheit halber mal .

Übrig bleibt die Matrix:

Erhaltung der Tiefenwerte

Dehomogenisiert wäre der Effekt soweit dann:

Problem damit: Bei der Transformation geht die Tiefe (-Achsenwerte) verloren. Deswegen könnten wir dann nicht mehr entscheiden, ob ein Vertex vor oder hinter einem anderen liegt. Lösung: Man kann die Tiefe erhalten, indem man setzt:

Wenn man jetzt nämlich einen Punkt transformiert:

Sieht man, dass nicht mehr konstant ist, sondern eine monoton steigende Funktion. Das ist wichtig, denn monoton steigende Funktionen behalten die Ordnung bei. Das heißt, Dinge, die bisher näher als andere waren, sind nach der Transformation immer noch näher als andere. Zwar sind die Werte nicht mehr linear, aber sie reichen trotzdem um zu bestimmen, welche Dinge vor anderen sind.

Es bleibt also die Transformationsmatrix:

Beispiel

Gegeben sind folgende Punkte im Eyespace:

Die transformierten Punkte sind dann:

3D

Die Projektion in 3D läuft analog ab, mit der Änderung dass wir jetzt in die negative -Achse schauen. Hinzu kommt die Transformation in den NDC:

Dementsprechend verläuft die Transformation wie folgt:

Auch hier beziehen wir die Z-Achse wieder mit ein, sodass sie in Sichtrichtung (negatives z) monoton steigend ist.