Viewing/Projections I Week 3, Fri Jan 25

42
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2008 Tamara Munzner http://www.ugrad.cs.ubc.ca/~cs314/ Vjan2008 Viewing/Projections I Week 3, Fri Jan 25

description

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008. Viewing/Projections I Week 3, Fri Jan 25. Review: Camera Motion. rotate/translate/scale difficult to control arbitrary viewing position eye point, gaze/lookat direction, up vector. y. lookat. x. Pref. WCS. view. up. z. eye. Peye. y. - PowerPoint PPT Presentation

Transcript of Viewing/Projections I Week 3, Fri Jan 25

Page 1: Viewing/Projections I Week 3, Fri Jan 25

University of British ColumbiaCPSC 314 Computer Graphics

Jan-Apr 2008

Tamara Munzner

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008

Viewing/Projections I

Week 3, Fri Jan 25

Page 2: Viewing/Projections I Week 3, Fri Jan 25

2

Review: Camera Motion

• rotate/translate/scale difficult to control

• arbitrary viewing position• eye point, gaze/lookat direction, up vector

Peye

Pref

upview

eye

lookaty

z

xWCS

Page 3: Viewing/Projections I Week 3, Fri Jan 25

3

Review: World to View Coordinates

• translate eye to origin

• rotate view vector (lookat – eye) to w axis

• rotate around w to bring up into vw-plane

y

z

xWCS

v

u

VCS

Peyew

Pref

upview

eye

lookat

⎥⎥⎥⎥

⎢⎢⎢⎢

•−•−•−

=

1000

2 ew

ev

eu

Mzyx

zyx

zyx

www

vvv

uuu

vw

Page 4: Viewing/Projections I Week 3, Fri Jan 25

4

Projections I

Page 5: Viewing/Projections I Week 3, Fri Jan 25

5

Pinhole Camera

• ingredients• box, film, hole punch

• result• picture www.kodak.com

www.pinhole.org

www.debevec.org/Pinhole

Page 6: Viewing/Projections I Week 3, Fri Jan 25

6

Pinhole Camera

• theoretical perfect pinhole• light shining through tiny hole into dark space

yields upside-down picture

film plane

perfectpinhole

one rayof projection

Page 7: Viewing/Projections I Week 3, Fri Jan 25

7

Pinhole Camera

• non-zero sized hole• blur: rays hit multiple points on film plane

film plane

actualpinhole

multiple raysof projection

Page 8: Viewing/Projections I Week 3, Fri Jan 25

8

Real Cameras

• pinhole camera has small aperture (lens opening)• minimize blur

• problem: hard to get enough light to expose the film

• solution: lens• permits larger apertures• permits changing distance to film

plane without actually moving it• cost: limited depth of field where

image is in focus

apertureaperture

lenslensdepthdepth

ofoffieldfield

http://en.wikipedia.org/wiki/Image:DOF-ShallowDepthofField.jpg

Page 9: Viewing/Projections I Week 3, Fri Jan 25

9

Graphics Cameras

• real pinhole camera: image inverted

imageimageplaneplane

eyeeye pointpoint

computer graphics camera: convenient equivalent

imageimageplaneplane

eyeeye pointpoint

center ofcenter ofprojectionprojection

Page 10: Viewing/Projections I Week 3, Fri Jan 25

10

General Projection

• image plane need not be perpendicular to view plane

imageimageplaneplane

eyeeye pointpoint

imageimageplaneplane

eyeeye pointpoint

Page 11: Viewing/Projections I Week 3, Fri Jan 25

11

Perspective Projection

• our camera must model perspective

Page 12: Viewing/Projections I Week 3, Fri Jan 25

12

Perspective Projection

• our camera must model perspective

Page 13: Viewing/Projections I Week 3, Fri Jan 25

13

Projective Transformations

• planar geometric projections• planar: onto a plane

• geometric: using straight lines

• projections: 3D -> 2D

• aka projective mappings

• counterexamples?

Page 14: Viewing/Projections I Week 3, Fri Jan 25

14

Projective Transformations

• properties• lines mapped to lines and triangles to triangles• parallel lines do NOT remain parallel

• e.g. rails vanishing at infinity

• affine combinations are NOT preserved• e.g. center of a line does not map to center of

projected line (perspective foreshortening)

Page 15: Viewing/Projections I Week 3, Fri Jan 25

15

Perspective Projection

• project all geometry • through common center of projection (eye point)

• onto an image plane

xxzz xxzz

yy

xx

-z-z

Page 16: Viewing/Projections I Week 3, Fri Jan 25

16

Perspective Projection

how tall shouldthis bunny be?

projectionplane

center of projection(eye point)

Page 17: Viewing/Projections I Week 3, Fri Jan 25

17

Basic Perspective Projection

similar trianglessimilar triangles

zz

P(x,y,z)P(x,y,z)

P(x’,y’,z’)P(x’,y’,z’)

z’=dz’=d

yy

• nonuniform foreshortening• not affine

butbut€

y'

d=

y

z→ y '=

y ⋅dz

x'

d=

x

z→ x '=

x ⋅dz

z'= d

Page 18: Viewing/Projections I Week 3, Fri Jan 25

18

Perspective Projection

• desired result for a point [x, y, z, 1]T projected onto the view plane:

• what could a matrix look like to do this?

dzdz

y

z

dyy

dz

x

z

dxx

z

y

d

y

z

x

d

x

==⋅

==⋅

=

==

',','

',

'

Page 19: Viewing/Projections I Week 3, Fri Jan 25

19

Simple Perspective Projection Matrix

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

d

dz

y

dz

x

/

/

Page 20: Viewing/Projections I Week 3, Fri Jan 25

20

Simple Perspective Projection Matrix

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

d

dz

y

dz

x

/

/ is homogenized version of

where w = z/d ⎥⎥⎥⎥

⎢⎢⎢⎢

dz

z

y

x

/

Page 21: Viewing/Projections I Week 3, Fri Jan 25

21

Simple Perspective Projection Matrix

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

10100

0100

0010

0001

/

z

y

x

ddz

z

y

x⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

d

dz

y

dz

x

/

/ is homogenized version of

where w = z/d ⎥⎥⎥⎥

⎢⎢⎢⎢

dz

z

y

x

/

Page 22: Viewing/Projections I Week 3, Fri Jan 25

22

Perspective Projection

• expressible with 4x4 homogeneous matrix• use previously untouched bottom row

• perspective projection is irreversible• many 3D points can be mapped to same

(x, y, d) on the projection plane

• no way to retrieve the unique z values

Page 23: Viewing/Projections I Week 3, Fri Jan 25

23

Moving COP to Infinity

• as COP moves away, lines approach parallel• when COP at infinity, orthographic view

Page 24: Viewing/Projections I Week 3, Fri Jan 25

24

Orthographic Camera Projection

• camera’s back plane parallel to lens

• infinite focal length

• no perspective convergence

• just throw away z values

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

0

y

x

z

y

x

p

p

p

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

11000

0000

0010

0001

1

z

y

x

z

y

x

p

p

p

Page 25: Viewing/Projections I Week 3, Fri Jan 25

25

Perspective to Orthographic

• transformation of space• center of projection moves to infinity

• view volume transformed • from frustum (truncated pyramid) to

parallelepiped (box)

-z-z

xx

-z-z

xx

FrustumFrustum ParallelepipedParallelepiped

Page 26: Viewing/Projections I Week 3, Fri Jan 25

26

View Volumes

• specifies field-of-view, used for clipping

• restricts domain of z stored for visibility test

z

perspective view volumeperspective view volume orthographic view volumeorthographic view volume

x=left

x=right

y=top

y=bottom z=-near z=-farxVCS x

z

VCS

yy

x=lefty=top

x=right

z=-far

z=-neary=bottom

Page 27: Viewing/Projections I Week 3, Fri Jan 25

27

Canonical View Volumes

• standardized viewing volume representation

perspective orthographic orthogonal parallel

x or y

-z

1

-1

-1frontplane

backplane

x or y

-zfrontplane

backplane

x or y = +/- z

Page 28: Viewing/Projections I Week 3, Fri Jan 25

28

Why Canonical View Volumes?

• permits standardization• clipping

• easier to determine if an arbitrary point is enclosed in volume with canonical view volume vs. clipping to six arbitrary planes

• rendering• projection and rasterization algorithms can be

reused

Page 29: Viewing/Projections I Week 3, Fri Jan 25

29

Normalized Device Coordinates

• convention• viewing frustum mapped to specific

parallelepiped• Normalized Device Coordinates (NDC)• same as clipping coords

• only objects inside the parallelepiped get rendered

• which parallelepiped? • depends on rendering system

Page 30: Viewing/Projections I Week 3, Fri Jan 25

30

Normalized Device Coordinates

left/right x =+/- 1, top/bottom y =+/- 1, near/far z =+/- 1

-z-z

xx

FrustumFrustum

z=-nz=-n z=-fz=-f

rightright

leftleft zz

xx

x= -1x= -1z=1z=1

x=1x=1

Camera coordinatesCamera coordinates NDCNDC

z= -1z= -1

Page 31: Viewing/Projections I Week 3, Fri Jan 25

31

Understanding Z

• z axis flip changes coord system handedness• RHS before projection (eye/view coords)

• LHS after projection (clip, norm device coords)

x

z

VCS

yx=left

y=top

x=right

z=-far

z=-neary=bottom

x

z

NDCS

y

(-1,-1,-1)

(1,1,1)

Page 32: Viewing/Projections I Week 3, Fri Jan 25

32

Understanding Z

near, far always positive in OpenGL calls

glOrtho(left,right,bot,top,near,far);glOrtho(left,right,bot,top,near,far); glFrustum(left,right,bot,top,near,far);glFrustum(left,right,bot,top,near,far); glPerspective(fovy,aspect,near,far);glPerspective(fovy,aspect,near,far);

orthographic view volumeorthographic view volume

x

z

VCS

yx=left

y=top

x=right

z=-far

z=-neary=bottom

perspective view volumeperspective view volume

x=left

x=right

y=top

y=bottom z=-near z=-farxVCS

y

Page 33: Viewing/Projections I Week 3, Fri Jan 25

33

Understanding Z

• why near and far plane?• near plane:

• avoid singularity (division by zero, or very small numbers)

• far plane:• store depth in fixed-point representation

(integer), thus have to have fixed range of values (0…1)

• avoid/reduce numerical precision artifacts for distant objects

Page 34: Viewing/Projections I Week 3, Fri Jan 25

34

Orthographic Derivation

• scale, translate, reflect for new coord sys

x

z

VCS

yx=left

y=top

x=right

z=-far

z=-neary=bottom

x

z

NDCS

y

(-1,-1,-1)

(1,1,1)

Page 35: Viewing/Projections I Week 3, Fri Jan 25

35

Orthographic Derivation

• scale, translate, reflect for new coord sys

x

z

VCS

yx=left

y=top

x=right

z=-far

z=-neary=bottom

x

z

NDCS

y

(-1,-1,-1)

(1,1,1)

byay +⋅='1'

1'

−=→==→=

ybotyytopy

Page 36: Viewing/Projections I Week 3, Fri Jan 25

36

Orthographic Derivation

• scale, translate, reflect for new coord sys

byay +⋅='1'

1'

−=→==→=

ybotyytopy

bottop

bottopb

bottop

topbottopb

bottop

topb

btopbottop

−−−

=

−⋅−−

=

−⋅

−=

+−

=

2)(

21

21

bbota

btopa

+⋅=−+⋅=

11

bottopa

topbota

topabota

botatopa

botabtopab

−=

+−=⋅−−⋅−=−−

⋅−−=⋅−⋅−−=⋅−=

2)(2

)()1(111

1,1

Page 37: Viewing/Projections I Week 3, Fri Jan 25

37

Orthographic Derivation

• scale, translate, reflect for new coord sys

x

z

VCS

yx=left

y=top

x=right

z=-far

z=-neary=bottom

byay +⋅='1'

1'

−=→==→=

ybotyytopy

bottop

bottopb

bottopa

−+

−=

−=

2

same idea for right/left, far/near same idea for right/left, far/near

Page 38: Viewing/Projections I Week 3, Fri Jan 25

38

Orthographic Derivation

• scale, translate, reflect for new coord sys

P

nearfar

nearfar

nearfar

bottop

bottop

bottop

leftright

leftright

leftright

P

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−+

−−−

−+

−−

−+

−−

=

1000

200

02

0

002

'

Page 39: Viewing/Projections I Week 3, Fri Jan 25

39

Orthographic Derivation

• scale, translate, reflect for new coord sys

P

nearfar

nearfar

nearfar

bottop

bottop

bottop

leftright

leftright

leftright

P

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−+

−−−

−+

−−

−+

−−

=

1000

200

02

0

002

'

Page 40: Viewing/Projections I Week 3, Fri Jan 25

40

Orthographic Derivation

• scale, translate, reflect for new coord sys

P

nearfar

nearfar

nearfar

bottop

bottop

bottop

leftright

leftright

leftright

P

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−+

−−−

−+

−−

−+

−−

=

1000

200

02

0

002

'

Page 41: Viewing/Projections I Week 3, Fri Jan 25

41

Orthographic Derivation

• scale, translate, reflect for new coord sys

P

nearfar

nearfar

nearfar

bottop

bottop

bottop

leftright

leftright

leftright

P

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢

−+

−−−

−+

−−

−+

−−

=

1000

200

02

0

002

'

Page 42: Viewing/Projections I Week 3, Fri Jan 25

42

Orthographic OpenGL

glMatrixMode(GL_PROJECTION);glMatrixMode(GL_PROJECTION);glLoadIdentity();glLoadIdentity();glOrtho(left,right,bot,top,near,far);glOrtho(left,right,bot,top,near,far);