Review: Camera Motion Review: World to View Coordinates CPSC 314 - - PowerPoint PPT Presentation

review camera motion review world to view coordinates
SMART_READER_LITE
LIVE PREVIEW

Review: Camera Motion Review: World to View Coordinates CPSC 314 - - PowerPoint PPT Presentation

University of British Columbia Review: Camera Motion Review: World to View Coordinates CPSC 314 Computer Graphics rotate/translate/scale difficult to control translate eye to origin Jan-Apr 2008 arbitrary viewing position


slide-1
SLIDE 1

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

2

Review: Camera Motion

  • rotate/translate/scale difficult to control
  • arbitrary viewing position
  • eye point, gaze/lookat direction, up vector

Peye Pref up view eye lookat y z x WCS

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 x WCS v u VCS Peye w Pref up view eye lookat

  • =

1 2 e w e v e u M

z y x z y x z y x

w w w v v v u u u v w

4

Projections I

5

Pinhole Camera

  • ingredients
  • box, film, hole punch
  • result
  • picture
www.kodak.com www.pinhole.org www.debevec.org/Pinhole 6

Pinhole Camera

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

yields upside-down picture

film plane perfect pinhole

  • ne ray
  • f projection
7

Pinhole Camera

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

film plane actual pinhole multiple rays

  • f projection
8

Real Cameras

  • pinhole camera has small aperture (lens
  • pening)
  • 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 aperture aperture lens lens depth depth

  • f
  • f
field field http://en.wikipedia.org/wiki/Image:DOF-ShallowDepthofField.jpg 9

Graphics Cameras

  • real pinhole camera: image inverted
image image plane plane eye eye point point  computer graphics camera: convenient equivalent image image plane plane eye eye point point center of center of projection projection 10

General Projection

  • image plane need not be perpendicular to

view plane

image image plane plane eye eye point point image image plane plane eye eye point point 11

Perspective Projection

  • our camera must model perspective
12

Perspective Projection

  • our camera must model perspective
13

Projective Transformations

  • planar geometric projections
  • planar: onto a plane
  • geometric: using straight lines
  • projections: 3D -> 2D
  • aka projective mappings
  • counterexamples?
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)

15

Perspective Projection

  • project all geometry
  • through common center of projection (eye point)
  • onto an image plane

x x z z x x z z y y x x

  • z
  • z
16

Perspective Projection

how tall should this bunny be? projection plane center of projection (eye point)

slide-2
SLIDE 2 17

Basic Perspective Projection

similar triangles similar triangles z z P(x,y,z) P(x,y,z) P( P(x x’ ’, ,y y’ ’, ,z z’ ’) ) z z’ ’= =d d y y

  • nonuniform foreshortening
  • not affine

but but

y' d = y z y'= y d z x' d = x z x'= x d z z'= d

18

Perspective Projection

  • desired result for a point [x, y, z, 1]T projected
  • nto the view plane:
  • what could a matrix look like to do this?

d z d z y z d y y d z x z d x x z y d y z x d x = =

  • =

=

  • =

= = ' , ' , ' ' , '

19

Simple Perspective Projection Matrix

  • d

d z y d z x / /

20

Simple Perspective Projection Matrix

  • d

d z y d z x / / is homogenized version of where w = z/d

  • d

z z y x /

21

Simple Perspective Projection Matrix

  • =
  • 1

1 1 1 1 / z y x d d z z y x

  • d

d z y d z x / / is homogenized version of where w = z/d

  • d

z z y x /

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
23

Moving COP to Infinity

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

Orthographic Camera Projection

  • camera’s back plane

parallel to lens

  • infinite focal length
  • no perspective

convergence

  • just throw away z values
  • =
  • y

x z y x

p p p
  • =
  • 1

1 1 1 1 z y x z y x

p p p

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

x x

  • z
  • z

x x Frustum Frustum

Parallelepiped Parallelepiped

26

View Volumes

  • specifies field-of-view, used for clipping
  • restricts domain of z stored for visibility test

z perspective view volume perspective view volume

  • rthographic view volume
  • rthographic view volume

x=left x=right y=top y=bottom z=-near z=-far x VCS x z VCS y y x=left y=top x=right z=-far z=-near y=bottom

27

Canonical View Volumes

  • standardized viewing volume representation

perspective

  • rthographic
  • rthogonal

parallel

x or y

  • z

1

  • 1
  • 1

front plane back plane x or y

  • z

front plane back plane x or y = +/- z

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

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
30

Normalized Device Coordinates

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

  • z
  • z

x x Frustum Frustum z=-n z=-n z=-f z=-f

right right left left

z z x x x= -1 x= -1 z=1 z=1 x=1 x=1 Camera coordinates Camera coordinates NDC NDC z= -1 z= -1

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

y x=left y=top x=right z=-far z=-near y=bottom x z

NDCS

y

(-1,-1,-1) (1,1,1)

32

Understanding Z

near, far always positive in OpenGL calls

glOrtho glOrtho(left,right, (left,right,bot bot,top,near,far); ,top,near,far); glFrustum glFrustum(left,right, (left,right,bot bot,top,near,far); ,top,near,far); glPerspective glPerspective( (fovy fovy,aspect,near,far); ,aspect,near,far);
  • rthographic view volume
  • rthographic view volume

x z VCS y x=left y=top x=right z=-far z=-near y=bottom perspective view volume perspective view volume x=left x=right y=top y=bottom z=-near z=-far x VCS y

slide-3
SLIDE 3 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

34

Orthographic Derivation

  • scale, translate, reflect for new coord sys

x z

VCS

y x=left y=top x=right z=-far z=-near y=bottom x z

NDCS

y

(-1,-1,-1) (1,1,1)

35

Orthographic Derivation

  • scale, translate, reflect for new coord sys

x z

VCS

y x=left y=top x=right z=-far z=-near y=bottom x z

NDCS

y

(-1,-1,-1) (1,1,1)

b y a y +

  • =

' 1 ' 1 '

  • =
  • =

=

  • =

y bot y y top y

36

Orthographic Derivation

  • scale, translate, reflect for new coord sys

b y a y +

  • =

' 1 ' 1 '

  • =
  • =

=

  • =

y bot y y top y

bot top bot top b bot top top bot top b bot top top b b top bot top

  • =
  • =
  • =

+

  • =

2 ) ( 2 1 2 1

b bot a b top a +

  • =
  • +
  • =

1 1

bot top a top bot a top a bot a bot a top a bot a b top a b

  • =

+

  • =
  • =
  • =
  • =
  • =

2 ) ( 2 ) ( ) 1 ( 1 1 1 1 , 1

37

Orthographic Derivation

  • scale, translate, reflect for new coord sys

x z

VCS

y x=left y=top x=right z=-far z=-near y=bottom

b y a y +

  • =

' 1 ' 1 '

  • =
  • =

=

  • =

y bot y y top y bot top bot top b bot top a

  • +
  • =
  • =

2

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

38

Orthographic Derivation

  • scale, translate, reflect for new coord sys

P near far near far near far bot top bot top bot top left right left right left right P

  • +
  • +
  • +
  • =

1 2 2 2 '

39

Orthographic Derivation

  • scale, translate, reflect for new coord sys

P near far near far near far bot top bot top bot top left right left right left right P

  • +
  • +
  • +
  • =

1 2 2 2 '

40

Orthographic Derivation

  • scale, translate, reflect for new coord sys

P near far near far near far bot top bot top bot top left right left right left right P

  • +
  • +
  • +
  • =

1 2 2 2 '

41

Orthographic Derivation

  • scale, translate, reflect for new coord sys

P near far near far near far bot top bot top bot top left right left right left right P

  • +
  • +
  • +
  • =

1 2 2 2 '

42

Orthographic OpenGL

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