Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... ·...

38
U N I V E R S I T Ä T KOBLENZ · LANDAU (12) OpenGL-Pipeline Vorlesung „Computergraphik I“ S. Müller

Transcript of Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... ·...

Page 1: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU

(12) OpenGL-Pipeline

Vorlesung„Computergraphik I“

S. Müller

Page 2: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 2 -

Wiederholung I Was passiert, wenn

Kein gluLookAt verwendet wird?• Kamera ist im Urpsrung, Blick entlang der neg. z-Achse,

Rechtssystem, x-Achse zeigt nach rechts, y-Achse nach oben

Keine (orthographische oder perspektivische) Projektion gesetzt wird?

• Orthographische Projektion von (-1, 1) in alle drei Raumrichtungen

• ABER: keine Drehung von Rechts- nach Linkssystem, Normalen zeigen nach innen.

Page 3: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 3 -

Wiederholung II Perspektivische Projektion

Eigentlich ganz einfach gem. Strahlensatz

Gesuchte Division durch pz erreicht man mit homogenen Koordinaten durch abschließende Homogenisierung (Division durch homogene Koordinaten)

Pzy

y

pn

pp

='

yz

y ppnp ⋅='

view

pla

ne

n

yp'yp

0zp

xz

x ppnp ⋅='Analog:

1zyx

wwzwywx

Page 4: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 4 -

Wiederholung III Einfacher Ansatz: der

Tiefenwert geht verloren:

homogenisiert:

Daher: Abbildung durch

Nicht-lineare Skalierung der Tiefenwerte

Eigenschaften der Funktion: n wird auf n abgebildet f wird auf f abgebildet Die „vorderen“ z-Werte

bekommen größere Abstände, als die „hinteren“

Lässt sich durch homogene Koordinaten darstellen

Höhere z-Buffer-Genauigkeit bei vorderen Punkten

=

11'''

npnppnp

ppp

zy

zx

z

y

x

=

npppp

wppp

z

z

y

x

z

y

x

'''

zz pnffnp −+='

z_flickering.vcproj z_flickering2.vcproj

Page 5: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 5 -

Wiederholung IV Tiefenpuffer:

bei Ortho wird z-Wert eingetragen, bei perspekt. Transformation wird ~1/z eingetragen

OpenGL Kommandos glFrustum(GLdouble left, right, bottom, top, near, far) gluPerspective (GLdouble θ, aspect, near, far)

projection.exe

xz−

y

0 left right bottom

top

far

near

xz−

y

0

-far

-near

θh

w

Page 6: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 6 -

x

z

y

0

u

AC

yx

z

yx

z-f (r,t)

-n

(l,b)

(1,1,1)

(-1,-1,-1)

y x

z

Modell/Weltkoordinaten Kamerakoordinaten

View Frustum Kanonisches Volumen

pRTSTVMMMpMODELVIEWPROJECTION

MM

LRPERSPORTHO

⋅⋅⋅⋅⋅⋅⋅⋅⋅= →'

Page 7: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 7 -

Bsp.: Asymmetrisches Frustum Rendern eines Posters (z.B. 10000 x 10000 Pixel)

Bildschirmspeicher zu klein

Zerlegen in viele Teilbilder mit voller Auflösung Mit gluPerspective nicht möglich

x

y

0

glFrustum(GLdouble l, r, b, t, n, f);

Page 8: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 8 -

BeispielglClear (GL_COLOR_BUFFER_BIT);glColor3f (0.0, 0.0, 0.0);

glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho (-1.0,1.0, -1.0,1.0, 1.0,10.0);oderglFrustum(-1.0,1.0, -1.0,1.0, 1.0,10.0);

glMatrixMode(GL_MODELVIEW); glLoadIdentity();gluLookAt(0,0,1, 0,0,0, 0,1,0);

glTranslatef(0,0,tz);glRotatef(alpha, 1.0, 0.0, 0.0);glRotatef(beta, 0.0, 1.0, 0.0);glRotatef(gamma, 0.0, 0.0, 1.0);

glutWireTeapot(0.5);glFlush ();

pRTSTVMMMpMODELVIEWPROJECTION

MM

LRPERSPORTHO

⋅⋅⋅⋅⋅⋅⋅⋅⋅= →'

Page 9: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 9 -

Alternative: gluPerspective

xz

y

0

gluPerspective (GLdouble θ, aspect, near, far)

-far

-near

θ

hwaspect =

h

w

Nur symmetrisches Frustum

Page 10: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 10 -

Beispiel

projektion.c projection.exe

Page 11: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 11 -

Nate Robin

projection.exe

Page 12: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 12 -

Bsp.: Asymmetrisches Frustum Rendern eines Posters (z.B. 10000 x 10000 Pixel)

Bildschirmspeicher zu klein

Zerlegen in viele Teilbilder mit voller Auflösung Mit gluPerspective nicht möglich

x

y

0

glFrustum(GLdouble l, r, b, t, n, f);

proj_terrain.vcproj

Page 13: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU

Fraktales Terrain

Page 14: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 14 -

Besseres Terrain: Diamond-Square Bisheriges Terrain: Höhen wurden beliebig und zufällig

ausgewählt mit einem sehr „groben“ Resultat Besser Diamond-Square (Midpoint-Displacement)

Basis: Quadrat mit Seitenlänge 2n+1.

Start: In den Ecken einen Wert aus dem Zufallsbereich festlegen

Diamond-Step:Höhenwerte der Ecken mitteln, Zufallswert aufaddieren und Wert dann im Mittelpunkt eintragen.

Page 15: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 15 -

Diamond-Square II

Square-Step:In der Mitte der Strecke zwischen den Eckpunkten jeweils einen Wert eintragen, der sich aus demMittel der beiden benachbarten Eckpunkten und einem Zufallswert (aus dem selben Bereich, wie beim Diamond-Step) zusammensetzt.

Rekursion:Für die vier entstandenen Teilquadrate werden der Diamond- und der Square-Step wiederholt, wobei der Zufallsbereich mit steigender Rekursionstiefe sinkt.

Ende der Rekursion:Sind alle (2n+1)2 Werte eingetragen, terminiertder Algorithmus.

Page 16: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 16 -

Beispiel

terrain.vcxproj

Page 17: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 17 -

Typisches Problem: Patches/Meshes Unterteilung der Oberfläche

der graphischen Primitive in Patches/Meshes/Netze

Ineffizient, für jedes Patch alle 4 Eckpunkte abzuspeichern Punkt wird mehrfach an die

Graphik-HW übertragen Punkt wird mehrfach

transformierta b

c d

Dieser Punkt würde 4mal transformiert mit jeweils dem gleichen Ergebnis

Page 18: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 18 -

Effiziente Lösung in OpenGL

1.

2.

3.

4.

5.

6.

GL_TRIANGLE_STRIP

2.

1.

4.

3.

6.

5.

GL_QUAD_STRIP

1.

2.3.

4.

5.

GL_TRIANGLE_FAN

verbundene Primitive

glBegin(GL_TRIANGLE_STRIP); glVertex3fv …; glEnd();

Page 19: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU

Kamerasteuerung (Kugelgeometrie)

Page 20: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 20 -

Kugel: Polarkoordinaten

z

P

x

y

0 ϕ

θ r

P

x

y

0

z

=

z

y

x

Kart

PPP

P .

( )πθ ,0∈ ( )πϕ 2,0∈ ( )∞∈ ,0r

=r

Ppolar ϕθ

(ganze Kugel…)

Page 21: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 21 -

Umrechnung

θ r

P

x

y

z

0

θsin⋅r

θcos⋅rϕ

P

x

y

z

0

ϕθ sinsin ⋅⋅r ϕθ cossin ⋅⋅r

⋅⋅⋅

⋅⋅=

ϕθθ

ϕθ

sinsincos

cossin

rr

r

PPP

z

y

x

Page 22: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 22 -

Kugel zeichnenglBegin(GL_POINTS);for ( i=0; i < npoints; i++) for ( j=0; j < npoints; j++) { theta = PI * i/npoints; phi = 2*PI * j/npoints; glVertex3f( r*sin(theta)*cos(phi), r*cos(theta), r*sin(theta)*sin(phi)); } glEnd();

Sphere.c

Page 23: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 23 -

Kamerasteuerung Virtueller Trackball

Gut geeignet zur Betrachtung eines Objekts

Der Centerpoint liegt im Mittelpunkt des Objekts

Die Bewegung der Maus steuert den Augpunkt auf einer Kugel um das Objekt (Umrechnung der xy-Werte in Polatkoordinaten)

Durch Mausklick kann man näher an das Objekt heran oder weiter weg navigieren (Veränderung von Radius r)

Flugmodus Gut geeignet zur Navigation

durch eine Szene Die Bewegung der Maus

steuert den Centerpoint auf einer (Halb-)kugel um das Objekt

Der Augpunkt wird anschließend in Richtung der Blickrichtung verschoben

Die Skalierung der Blickrichtung (Geschwindigkeit) kann z.B. wieder durch Mausklick erhöht/verringert werden.

Page 24: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 24 -

Virtueller Trackball

u

A0

00

1−b

1−h

θ

ϕ

Bei gedrückter Maustaste:Umsetzung der (relativen) Position der Maus in θ, ϕ - Werte

⋅⋅⋅

⋅⋅=

ϕθθ

ϕθ

sinsincos

cossin

rr

r

AAA

z

y

x

Cursor-Taste:Verändern von „r“

Page 25: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 25 -

Flugmodus

u

AC

v

00

1−b

1−h

θ

ϕ

Bei gedrückter Maustaste:Umsetzung der (relativen) Position der Maus in θ, ϕ - Werte

⋅=

ϕθθ

ϕθ

sinsincos

cossin

z

y

x

vvv

⋅+

=

z

y

x

z

y

x

z

y

x

vvv

speedAAA

AAA

'''

Cursor-Taste:Verändern von „speed“

camera.vcproj

Page 26: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU

Viewport

Page 27: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 27 -

(1,1,1)

x

zy

(-1,-1,-1)

x

y

z

(1,1,1)

(-1,-1,-1)

Viewport-Transformation

Transformation des kanonischen Volumens Transformation der xy-Koordinaten aus (-1,1) in die

Bildschirm- (genauer „Window“-) koordinaten, z.B. (0,599)x(0,599)

Transformation der z-Koordinaten aus (-1,1) in den Bereich (0,1) für z-Buffer

Page 28: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 28 -

Viewport Transformation (xy-Werte)

x

y

00 breite

höhez.B. Fenster der Größe 600x600 Pixel

1

1

-1

x

z

y

-1 1

-1

Page 29: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 29 -

(0;0)

(0;h-1)

(b-1;0)

(b-1;h-1)

x

yBildschirmkoordinatensystem

Ein Bildschirmfenster der Höhe h und der Breite b hat Pixelkoordinaten in x-Richtung von 0 bis b-1; in y-Richtung von 0 bis h-1

Die Pixelkoordinaten sind die Mittelpunkte der quadratischen Pixel mit Kantenlänge 1

x = -0.5 x = b-0.5

y = -0.5

y = h-0.5

Page 30: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 30 -

Bildschirmkoord.system OpenGL Offset des Pixelmittelpunktes

um 0.5

(0.5;0.5)

(0.5;h-0.5)

(b-0.5;0.5)

(b-0.5;h-0.5)

x

y

0 x = b

y = h

Page 31: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 31 -

Viewport in OpenGL

1

1

-1

x

y

-1 b/2

h/2

-h/2

x

y

-b/2

22'22'

hphpbpbp

yy

xx

+⋅=+⋅=

0 bxp'1−=xp 1=xp

x

y

0 b

h

Page 32: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 32 -

Viewport Es ist wichtig, wie die Pixel nachher bei der

Rasterisierung angesprochen werden Bei OpenGL:

Das gesamte Clip-Volumen wird auf den darstellbaren Fensterbereich abgebildet

Verwendet man Anti-Aliasing durch Subpixelstrukturen, so kommen keine „zusätzlichen“ Regionen dazu, die bereits weg-geclippt sind.

OpenGL

22'22'

hphpbpbp

yy

xx

+⋅=+⋅=

Page 33: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 33 -

Viewport: Allgemein Angaben in

Fensterkoordinaten OpenGL-Kommando

glViewport( GLint x, y, b, h); (x, y)

(0,0)

h

b

( )121' +⋅= zz pp

z1

-1

z2

0

z1

0

yhphpxbpbp

Viewport

yy

xx

++⋅=++⋅=

22'22'

:

Page 34: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 34 -

Beispiel

Viewport.c Viewport.exe

Page 35: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 35 -

OpenGL glViewport GLUT übernimmt die Anpassung, solange keine

Reshape-Funktion gesetzt ist wirkt nur auf Geometrie, nicht auf Pixeloperationen wie

glClear(); Lösung: Scissor Test

Wirkt wie glViewport(), aber auf Pixelebene

glScissor( GLint x, y, width, height );

Aktivierung über glEnable(GL_SCISSOR_TEST);

Page 36: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 36 -

Aktivieren / Inaktivieren Viele Features müssen explizit aktiviert werden

glEnable( GLenum feature );

zum Inaktivieren dient dann glDisable( GLenum feature );

der Zustand kann abgefragt werden mittelsglIsEnabled( GLenum feature );

die Konstanten können nicht verodert werden

Page 37: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 37 -

Typisches Programmvoid display(){

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); ...glutSwapBuffers();

}

void reshape( int w, int h){

glViewport( 0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45, (float)w/h, 1.0, 20.0);

glMatrixMode(GL_MODELVIEW);glLoadIdentity();

}

void init(){

glClearColor( 0.0, 0.0, 0.0, 0.0);glEnable( GL_DEPTH_TEST);

}

void main( int argc, char **argv){

glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH);glutInitWindowSize(600,600);glutCreateWindow(„...");

glutIdleFunc(idle);glutSpecialFunc(special);glutMouseFunc(mouse);glutMotionFunc(motion);glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutDisplayFunc(display);init();glutMainLoop();

}

Page 38: Photometrische und Radiometrische Grundlagencg/ws1213/cg1/vorlesung/12_ogl... · Viewport-Transformation Transformation des kanonischen Volumens Transformation der xy-Koordinaten

U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 38 -

OpenGL Rendering Pipeline

pRTSTVpMODELVIEWM

⋅⋅⋅⋅⋅⋅='

''' pMMMpPROJECTIONM

LRPERSPORTHO

⋅⋅⋅= →

Division durch homogene Koordinate

Kamera im Ursprung, Blickrichtung entlang der negativen z-Achse (Rechtssystem)

Linkssystem: z-Achse nicht-linear skaliert, kanonisches Volumen vor perspekt. Division

Kanonisches Volumen

Bildschirm- bzw. Fensterkoordinaten

Viewport-Transformation

12

34