lecture 5 - mcgill cimlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized...

39
lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates - planes and normals in projective space - Assignment 1 (python and pyopengl)

Upload: others

Post on 21-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

lecture 5

- projective transformation- normalized view volume- GL_PROJECTION matrix- clip coordinates- normalized device coordinates

- planes and normals in projective space- Assignment 1 (python and pyopengl)

Page 2: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Recall last lecture: view volume (view frustum)

gluPerspective( y, x / y , near, far)

glFrustrum( left, right, bottom, top, near, far)

Page 3: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Recall last lecture: projection

f = -near

Page 4: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

But that is not what glFrustrum and gluPerspective do.

Why not ? What do they do?

You might think.....

Page 5: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

The problem with projection:

If we discard the z information, then we don't know whichobjects are in front of which.

Page 6: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Projective Transformation

projection plane (near)

Page 7: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Projective Transformation

Page 8: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Objects that are further away look smaller.

Page 9: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

How to define a projective transformation that does this?

Previously, we considered projection :

But a projection matrix is not invertible(3rd and 4th rows are linearly dependent)

Page 10: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Projective Transformation

z = -near z = - far

Page 11: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

We choose and to satisfy desired mapillustrated on previous slide.

where

Page 12: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

In Appendix to lecture notes, I derive (easy) :

where

Page 13: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 14: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 15: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Where do various regions map to ?

Page 16: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 17: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 18: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 19: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 20: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Curious ! The JKL flipping is analogous to aMobius strip.

Page 21: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Why is the above detail important ?

We decide whether or not points lie in the view volumeusing projective space representation.

To make these decisions correctly, we need to be carefulabout inequalities and signs.

More about this later...

Page 22: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Another (surprisingly) important detail:

OpenGL uses the 2nd matrix above, not the first.Why ?

Page 23: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Soon we will see why this is desirable.

Page 24: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

"Normalized view volume"

?

See next slide

Page 25: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Map to normalized view volume

1) translate (left, bottom, -near) to (0,0,0)2.) rescale x, y, z so volume is 2 x 2 x 2 and flip z axis (into left handed coordinates !)3.) translate so volume is centered at origin

Page 26: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

(w x, w y, w z, w)

is in the

normalized view volume if :

w > 0 (Recall a few slides ago)

- w <= w x <= w

- w <= w y <= w

- w <= w z <= w

Page 27: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Putting in all together ...

Page 28: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 29: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

"Clip Coordinates"Object Coordinates

Page 30: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

"ClipCoordinates"

ObjectCoordinates "Normalized

Device Coordinates"

"Perspective Division"In OpenGL, this happens after clipping (next lecture)

Page 31: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 32: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 33: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 34: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

The surface normal of a plane (triangle) does notnecessarily get mapped to the surface normal of themapped plane (triangle).

Why not ? (Space is deformed, and so right anglesare not preserved.)

Page 35: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 36: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 37: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates
Page 38: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

except inspecialsituations

Page 39: lecture 5 - McGill CIMlanger/557/5-slides.pdf · lecture 5 - projective transformation - normalized view volume - GL_PROJECTION matrix - clip coordinates - normalized device coordinates

Announcements

Today is ADD/DROP deadlinehttp://www.mcgill.ca/importantdates/key-dates

For the Assignments, we will use PyOpenGL (Python). It isalready installed on the lab computers.

Fahim (T.A.) has posted instructions for you to install it onyour computer:http://cim.mcgill.ca/~fmannan/comp557/Python%20and%20PyOpenGL%20Installation.html

If you need help with the installation, see him (or help eachother -- please use the discussion board).

We will try to get the assignment out Thursday as originallyplanned.