Tutorial 3. Viewing Transformations - Dynamic Graphics Projectpatrick/csc418/notes/tutorial3.pdf ·...

4
CSC 418/2504 – Computer Graphics, Fall 2003 Tutorial 3. Viewing Transformations 1. Viewing and Modeling Transformation – modelview matrix Derivation to express points in world coordinates (WCS) in terms of camera (VCS) defined by: o an eye point P eye o a reference point P ref o an up vector V up unit vectors of VCS (call them i, j, k if you prefer) P eye - P ref n = --------------- | P eye - P ref | V up × n u = ----------- | V up × n | v = n × u intuition

Transcript of Tutorial 3. Viewing Transformations - Dynamic Graphics Projectpatrick/csc418/notes/tutorial3.pdf ·...

CSC 418/2504 – Computer Graphics, Fall 2003

Tutorial 3. Viewing Transformations

1. Viewing and Modeling Transformation – modelview matrix

Derivation

• to express points in world coordinates (WCS) in terms of camera (VCS)

• defined by:

o an eye point Peye

o a reference point Pref

o an up vector Vup

• unit vectors of VCS (call them i, j, k if you prefer)

• Peye - Pref• n = ---------------

• | Peye - Pref |• • Vup × n• u = -----------• | Vup × n |

• • v = n × u

• intuition

o suppose Peye is fixed

o to pan the camera (like shaking your head left and right)

§ move Pref "horizontally"

§ corresponds to rotating the VCS along the y axis

o to tilt the camera (like nodding your head up and down)

§ move Pref "vertically"

§ corresponds to rotating the VCS along the x axis

o to rock the camera (like tilting your head left and right)

§ let Peye - Pref be the normal vector of a plane A

§ change Vup so that its projection onto A "rotates" left and right

§ corresponds to rotating the VCS along the z axis

o Vup represents a general "upwardness" for the camera

• view matrix

o first express camera in terms of world:o [ 1 0 0 Peye,x ] [ ux vx nx 0 ]o Mcam = [ 0 1 0 Peye,y ] [ uy vy ny 0 ]o [ 0 0 1 Peye,z ] [ uz vz nz 0 ]o [ 0 0 0 1 ] [ 0 0 0 1 ]

o then invert Mcam to express world in terms of camera:o [ ux uy uz 0 ] [ 1 0 0 -Peye,x ]o Mcam

-1 = [ vx vy vz 0 ] [ 0 1 0 -Peye,y ]o [ nx ny nz 0 ] [ 0 0 1 -Peye,z ]o [ 0 0 0 1 ] [ 0 0 0 1 ]

• so PVCS = Mcam-1 PWCS

OpenGL

• performs these calculations internally with a call to gluLookAt()

• code:glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(Peye,x, Peye,y, Peye,z, Pref,x, Pref,y, Pref,z, Vup,x, Vup,y, Vup,z );

Example

• scene with camera at (4,4,4), pointed at (0,1,4), with up vector (0,1,0)

• (4,4,4) - (0,1,4) (4,3,0)• n = --------------------- = ----------- = (4/5,3/5,0)

• | (4,4,4) - (0,1,4) | | (4,3,0) |• • (0,1,0) × (4/5,3/5,0) (0,0,-4/5)• u = ------------------------- = -------------- = (0,0,-1)• | (0,1,0) × (4/5,3/5,0) | | (0,0,-4/5) |• • v = (4/5,3/5,0) × (0,0,-1) = (-3/5,4/5,0)• • [ 0 0 -1 0 ] [ 1 0 0 -4 ] [ 0 0 -1 4 ]• Mcam

-1 = [ -3/5 4/5 0 0 ] [ 0 1 0 -4 ] = [ -3/5 4/5 0 -4/5 ]• [ 4/5 3/5 0 0 ] [ 0 0 1 -4 ] [ 4/5 3/5 0 -28/5 ]• [ 0 0 0 1 ] [ 0 0 0 1 ] [ 0 0 0 1 ]

• check

• [ 4 ] [ 0 ] [ 4 ] [ 1 ]• Mcam

-1 [ 4 ] = [ 0 ], Mcam-1 [ 4 ] = [ 0 ]

• [ 4 ] [ 0 ] [ 3 ] [ 0 ]• [ 1 ] [ 1 ] [ 1 ] [ 1 ]

2. Projection Transformation – projection matrix

Derivation

• maps points in VCS to NDCS

• see Hill, lecture notes for derivationo [ x ] [ 1 0 0 0 ] [ x ]o [ y ] = [ 0 1 0 0 ] [ y ]o [ z ] [ 0 0 1 0 ] [ z ]o [ -z/d ] [ 0 0 -1/d 0 ] [ 1 ]

OpenGL

• code for perspective projection:

• glMatrixMode(GL_PROJECTION);• glLoadIdentity();• • gluPerspective(fovy, aspect, near, far);• or• glFrustum(left, right, bottom, top, near, far);

• gluPerspective()

o fovy

§ field of view in the y-direction, centered about y = 0

§ in degrees

o aspect

§ aspect ratio that determines the field of view in the x direction

§ ratio of x (width) to y (height)

o near

§ in camera coordinates

§ close to 0 (but not 0)

o far

§ in camera coordinates

• glFrustum()

o left, right, bottom, top, near, far

§ specifies the clipping planes of the view volume explicitly

§ in camera coordinates