general projection perspective projection perspective ...tmm/courses/314/vjan2007/... · ¥parallel...
TRANSCRIPT
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
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
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);