Transcript
Page 1: General Projection Perspective Projection Perspective ...tmm/courses/314/Vjan2007/... · ¥parallel lines do NOT remain parallel ¥e.g. rails vanishing at infinity ¥affine combinations

University of British ColumbiaCPSC 314 Computer Graphics

Jan-Apr 2007

Tamara Munzner

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

Viewing/Projections II

Week 4, Mon Jan 29

2

News

• TA coverage in lab to answer questions• Mon 2-3:30

• Wed 2-3:30

• Thu 12:30-2

• easy way to read newsgroup• http://thecube.ca/webnews/newsgroups.php

• can post too if you create account

3

Reading for Today and Next Lecture

• FCG Chapter 7 Viewing

• FCG Section 6.3.1 Windowing Transforms

• RB rest of Chap Viewing

• RB rest of App Homogeneous Coords

4

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

5

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

6

Review: Moving Camera or World?

• two equivalent operations• move camera one way vs. move world other way

• example• initial OpenGL camera: at origin, looking along -z axis

• create a unit square parallel to camera at z = -10

• translate in z by 3 possible in two ways• camera moves to z = -3

• Note OpenGL models viewing in left-hand coordinates

• camera stays put, but world moves to -7

• resulting image same either way• possible difference: are lights specified in world or view

coordinates?7

Projections I

8

Pinhole Camera

• ingredients• box, film, hole punch

• result• picture www.kodak.com

www.pinhole.org

www.debevec.org/Pinhole

9

Pinhole Camera

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

yields upside-down picture

film plane

perfectpinhole

one rayof projection

10

Pinhole Camera

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

film plane

actualpinhole

multiple raysof projection

11

Real Cameras

• pinhole camera has smallaperture (lens opening)• minimize blur

• problem: hard to get enough lightto expose the film

• solution: lens• permits larger apertures

• permits changing distance to filmplane without actually moving it

• cost: limited depth of field whereimage is in focus

apertureaperture

lenslensdepthdepth

ofoffieldfield

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

Graphics Cameras

• real pinhole camera: image inverted

imageimageplaneplane

eyeeye point point

ν computer graphics camera: convenient equivalent

imageimageplaneplane

eyeeye point point

center ofcenter ofprojectionprojection

13

General Projection

• image plane need not be perpendicular to view plane

imageimageplaneplane

eyeeye point point

imageimageplaneplane

eyeeye point point

14

Perspective Projection

• our camera must model perspective

15

Perspective Projection

• our camera must model perspective

16

Perspective Projections

• classified by vanishing points

one-pointone-pointperspectiveperspective

two-pointtwo-pointperspectiveperspective three-pointthree-point

perspectiveperspective

Page 2: General Projection Perspective Projection Perspective ...tmm/courses/314/Vjan2007/... · ¥parallel lines do NOT remain parallel ¥e.g. rails vanishing at infinity ¥affine combinations

17

Projective Transformations

• planar geometric projections• planar: onto a plane

• geometric: using straight lines

• projections: 3D -> 2D

• aka projective mappings

• counterexamples?

18

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)

19

Perspective Projection

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

• onto an image plane

xxzz xxzz

yy

xx

-z-z

20

Perspective Projection

how tall shouldthis bunny be?

projectionplane

center of projection(eye point)

21

Basic Perspective Projection

similar trianglessimilar triangles

→=z

y

d

y'

z

dyy

⋅='

zz

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

P(P(xx’’,y,y’’,,zz’’))

zz’’=d=d

yy

z

dxx

⋅='

• nonuniform foreshortening• not affine

dz ='butbut→=z

x

d

x'

22

Perspective Projection

• desired result for a point [x, y, z, 1]T projectedonto 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

==⋅

==⋅

=

==

',','

',

'

23

Simple Perspective Projection Matrix

d

dz

y

dz

x

/

/

24

Simple Perspective Projection Matrix

d

dz

y

dz

x

/

/ is homogenized version of

where w = z/d

dz

z

y

x

/

25

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

/

26

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

27

Moving COP to Infinity

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

28

Orthographic Camera Projection

• camera’s back planeparallel to lens

• infinite focal length

• no perspectiveconvergence

• 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

29

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

30

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

31

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

32

Why Canonical View Volumes?

• permits standardization• clipping

• easier to determine if an arbitrary point isenclosed in volume with canonical viewvolume vs. clipping to six arbitrary planes

• rendering• projection and rasterization algorithms can be

reused

Page 3: General Projection Perspective Projection Perspective ...tmm/courses/314/Vjan2007/... · ¥parallel lines do NOT remain parallel ¥e.g. rails vanishing at infinity ¥affine combinations

33

Normalized Device Coordinates

• convention• viewing frustum mapped to specific

parallelepiped• Normalized Device Coordinates (NDC)

• same as clipping coords

• only objects inside the parallelepiped getrendered

• which parallelepiped?• depends on rendering system

34

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

leftleftzz

xx

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

x=1x=1

Camera coordinatesCamera coordinates NDCNDC

z= -1z= -1

35

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)

36

Understanding Z

near, far always positive in OpenGL calls

glOrthoglOrtho(left,right,(left,right,botbot,top,near,far);,top,near,far); glFrustum glFrustum(left,right,(left,right,botbot,top,near,far);,top,near,far); glPerspective glPerspective((fovyfovy,aspect,near,far);,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

37

Understanding Z

• why near and far plane?• near plane:

• avoid singularity (division by zero, or verysmall numbers)

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

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

• avoid/reduce numerical precision artifacts fordistant objects

38

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)

39

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'

−=→=

=→=

yboty

ytopy

40

Orthographic Derivation

• scale, translate, reflect for new coord sys

byay +⋅='1'

1'

−=→=

=→=

yboty

ytopy

bottop

bottopb

bottop

topbottopb

bottop

topb

btopbottop

−−=

⋅−−=

⋅−=

+−

=

2)(

21

21

bbota

btopa

+⋅=−

+⋅=

1

1

bottopa

topbota

topabota

botatopa

botabtopab

−=

+−=

⋅−−⋅−=−−

⋅−−=⋅−

⋅−−=⋅−=

2

)(2

)()1(1

11

1,1

41

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'

−=→=

=→=

yboty

ytopy

bottop

bottopb

bottopa

+−=

−=

2

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

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

'

43

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

'

44

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

'

45

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

'

46

Orthographic OpenGL

glMatrixModeglMatrixMode(GL_PROJECTION);(GL_PROJECTION);glLoadIdentityglLoadIdentity();();glOrthoglOrtho(left,right,(left,right,botbot,top,near,far);,top,near,far);


Top Related