ViewingViewing
Doug James’ CG Slides, Rich Riesenfeld’s CG Slides,
Shirley, Fundamentals of Computer Graphics, Chap 7
Wen-Chieh (Steve) Lin
Institute of Multimedia Engineering
ILE5014 Computer Graphics 10F 2
Getting Geometry on the ScreenGetting Geometry on the Screen
Given geometry in the world coordinate system, how do we get it to the display?
• Transform to camera coordinate system
• Transform (warp) into canonical view volume
• Clip
• Project to display coordinates
• Rasterize
ILE5014 Computer Graphics 10F 3
Vertex Transformation PipelineVertex Transformation Pipeline
ILE5014 Computer Graphics 10F 4
Vertex Transformation PipelineVertex Transformation Pipeline
glMatrixMode(GL_MODELVIEW)
glMatrixMode(GL_PROJECTION)
glViewport(…)
ILE5014 Computer Graphics 10F 5
OpenGL Transformation OverviewOpenGL Transformation Overview
glMatrixMode(GL_MODELVIEW)
gluLookAt(…)
glMatrixMode(GL_PROJECTION)
glFrustrum(…)
gluPerspective(…)
glOrtho(…)
glViewport(x,y,width,height)
ILE5014 Computer Graphics 10F 6
Viewing and ProjectionViewing and Projection
• Our eyes collapse 3-D world to 2-D retinal image (brain then has to reconstruct 3D)
• In CG, this process occurs by projection
• Projection has two parts:
– Viewing transformations: camera position and direction
– Perspective/orthographic transformation: reduces 3-D to 2-D
• Use homogeneous transformations
ILE5014 Computer Graphics 10F 7
Pinhole OpticsPinhole Optics
• Stand at point P, and look through the hole—anything within the cone is visible, and nothing else is
• Reduce the hole to a point - the cone becomes a ray
• Pin hole is the focal point, eye point or center of
projection
P
F
ILE5014 Computer Graphics 10F 8
Perspective Projection of a PointPerspective Projection of a Point
• View plane or image plane - a plane behind the
pinhole on which the image is formed
– sees anything on the line (ray) through the pinhole F
– a point W projects along the ray through F to appear at I (intersection of WF with image plane)
F
Image
WorldI
W
ILE5014 Computer Graphics 10F 9
Image FormationImage Formation
• Projecting a shape– project each point onto the image plane– lines are projected by projecting end points only
F
Image
World
F
Image
World
I
W
Note: Since we don't want the image to be inverted, from now on we'll put F behind the image plane.
Note: Since we don't want the image to be inverted, from now on we'll put F behind the image plane.
Camera lens
ILE5014 Computer Graphics 10F 10
Orthographic ProjectionOrthographic Projection
• When the focal point is at infinity the rays are parallel and orthogonal to the image plane
• When xy-plane is the image plane (x,y,z) -> (x,y,0) front orthographic view
Image
World
F
ILE5014 Computer Graphics 10F 11
Multiview Orthographic ProjectionMultiview Orthographic Projection
• Good model for CAD and architecture. No perspective effects.
front
sidetop
ILE5014 Computer Graphics 10F 12
Assume view transformation is doneAssume view transformation is done
• Let’s start with a simple case where the camera is put at the origin, and looks along the negative z-axis!
• Simple “canonical” views:
orthographic projection perspective projection
ILE5014 Computer Graphics 10F 13
Orthographic Viewing CubeOrthographic Viewing Cube
• (l,b,n) = (left, bottom, near)
• (r,t,f) = (right, top, far)
ILE5014 Computer Graphics 10F 14
Orthographic ProjectionOrthographic Projection
• Map orthographic viewing cube to the canonical view volume
• 3D window transformation
• [l, r] x [b, t] x [f, n] [-1, 1]x[-1, 1]x[-1,1]
ILE5014 Computer Graphics 10F 15
Orthographic Projection (cont.)Orthographic Projection (cont.)
• 3D window transform (last class)
• [l, r] x [b, t] x [f, n] [-1, 1]x[-1, 1]x[-1,1]
• zcanonical is ignored
110002
100
2010
2001
1000
02
00
002
0
0002
1
z
y
x
fn
tb
rl
fn
bt
lr
z
y
x
canonical
canonical
canonical
ILE5014 Computer Graphics 10F 16
Map Image Plane to Screen Map Image Plane to Screen
(1,1)
(-1,-1)
x
y
Image Plane Screen
x
y
y
x
(nx, ny)
ILE5014 Computer Graphics 10F 17
Map Image Plane to Screen Map Image Plane to Screen
• If y-axis of screen coord. points downward
• [-1,1] x [-1, 1] [-0.5, nx-0.5] x [ny-0.5, -0.5]
1100
010
001
100
02
0
002
1002
110
2
101
canonical
canonicaly
x
y
x
pixel
pixel
pixel
y
xn
n
n
n
z
y
x
reflectionscaletranslation
ILE5014 Computer Graphics 10F 18
Orthographic Projection MatrixOrthographic Projection Matrix
• Put everything together
10002
100
2010
2001
1000
02
00
002
0
0002
1000
01002
10
20
2
100
2
fn
tb
rl
fn
bt
lr
nn
nn
yy
xx
oM
11
z
y
x
z
y
x
canonical
pixel
pixel
oM
ILE5014 Computer Graphics 10F 19
Arbitrary Viewing PositionArbitrary Viewing Position
• What if we want the camera somewhere other than the canonical location?
• Alternative #1: derive a general projection matrix. (hard)
• Alternative #2: transform the world so that the camera is in canonical position and orientation (much simpler)
ILE5014 Computer Graphics 10F 20
Camera Control ValuesCamera Control Values
• All we need is a single translation and angle-axis rotation (orientation), but...
• Good animation requires good camera control--we need better control knobs
• Translation knob - move to the lookfrom point
• Orientation can be specified in several ways:
– specify camera rotations
– specify a lookat point (solve for camera rotations)
ILE5014 Computer Graphics 10F 21
A Popular View Specification ApproachA Popular View Specification Approach
• Focal length, image size/shape and clipping planes are in the perspective transformation
• In addition:
– lookfrom: where the focal point (camera) is
– lookat:the world point to be centered in the image
• Also specify camera orientation about the lookfrom-lookfat axis
ILE5014 Computer Graphics 10F 22
Implementing lookat/lookfrom/vup viewing schemeImplementing lookat/lookfrom/vup viewing scheme
• Translate by lookfrom, bring focal point to origin
• Rotate lookfrom - lookat to the z-axis with matrix R:
– w = (lookfrom-lookat) (normalized) and z = [0,0,1]
– rotation axis: a = (w × z)/|w × z|
– rotation angle: cosθ = w•z and sinθ = |w × z|
• Rotate about z-axis to get vup parallel to the y-axis
ILE5014 Computer Graphics 10F 23
It's not so complicated…It's not so complicated…
Translate LOOKFROM to the origin
Multiply by the projection matrix and everything will be in the canonical camera position
Rotate the view vector(lookfrom - lookat) ontothe z-axis.
Rotate about z to bring vup to y-axis
START HEREw
lookfrom
vup
x
y
z
y
x
x
x
y
y
z
z
z
ILE5014 Computer Graphics 10F 24
Translate Camera Frame Translate Camera Frame
• Let e=(ex, ey, ez) be the “lookfrom” position
Translate LOOKFROM to the origin
START HEREw
lookfrom
vup
x
y
z
xy
z
0000
100
010
001
z
y
x
e
e
e
tM
ILE5014 Computer Graphics 10F 25
Rotate Camera Frame Rotate Camera Frame
• You can derive these two rotation matrices based on what you learned in the last class
Translate LOOKFROM to the origin
Rotate the view vector(lookat -lookfrom) ontothe z-axis.
Rotate about z to bring vup to y-axis
x
y
z
yx
x
y
z
z
ILE5014 Computer Graphics 10F 26
Rotate Camera Frame (cont.)Rotate Camera Frame (cont.)
• Alternatively, we can view these two rotations as a single rotation that aligns u-v-w-axes to x-y-z-axes!
xy
zw
v Rux Rvy Rwz
wvu
wvu
wvu
zzz
yyy
xxx
R
100
010
001
www
vvv
uuu
wvu
wvu
wvu
zyx
zyx
zyx
zzz
yyy
xxx1
Rw: lookat – lookfromv: view up directionu = v x w
wvu
wvu
wvu
zzz
yyy
xxx
wvu
wvu
wvu
zzz
yyy
xxx
ILE5014 Computer Graphics 10F 28
Recall Global vs. Local Coordinate…Recall Global vs. Local Coordinate…
• x, y, u, v, o, e are all vectors in global systemyxop pppp yxyx ),(
vuep pppp vuvu ),(
11
0
0
100
10
01
1p
p
e
e
p
p
v
u
y
x
y
x
vu
1100
10
01
1001p
p
e
eT
T
p
p
y
x
y
x
v
u
v
u
In global coord. (xp,yp) In local coord. (up,vp)
ILE5014 Computer Graphics 10F 29
Think about 3D case ….Think about 3D case ….
• Given two coordinate frames, how do you represent a vector specified in one frame in the other frame?
e
u
v
w
X
Y
Z
P
11p
p
p
p
p
p
w
v
u
z
y
x
11p
p
p
p
p
p
z
y
x
w
v
u
?
?
ILE5014 Computer Graphics 10F 30
Viewing TransformationViewing Transformation
• Put translation and rotation together
10001000
100
010
001
1000
0
0
0
ewww
evvv
euuu
e
e
e
www
vvv
uuu
v zzyx
yzyx
xzyx
z
y
x
zyx
zyx
zyx
tRMM
11p
p
p
p
p
p
z
y
x
w
v
u
vM
world coordinatelocal coordinate
e
u
v
w
X
Y
Z
P
ILE5014 Computer Graphics 10F 31
Orthographic Projection SummaryOrthographic Projection Summary
Given 3D geometry (a set of points a)
• Compute view transformation Mv
• Compute orthographic projection Mo
• Compute M = MoMv
• For each point ai, compute p = Mai
10002
100
2010
2001
1000
02
00
002
0
0002
1000
01002
10
20
2
100
2
fn
tb
rl
fn
bt
lr
nn
nn
yy
xx
oM
ILE5014 Computer Graphics 10F 32
A Simple Perspective CameraA Simple Perspective Camera
• Canonical case:– camera looks along the z-axis (toward negative z-axis)
– focal point is the origin
– image plane is parallel to the xy-plane at distance d
– We call d the focal length, mainly for historical reasons
Image plane
Center of projection
ILE5014 Computer Graphics 10F 33
Geometry Eq. for Perspective ProjectionGeometry Eq. for Perspective Projection
• Diagram shows y-coordinate, x-coordinate is similar
• Point (x,y,z) projects to
view
pla
nee g
z
y
ys
d
yz
dys
),,( dyz
dx
z
d
e: eye positiong: gaze direction
ILE5014 Computer Graphics 10F 34
Perspective Projection MatrixPerspective Projection Matrix
• Projection using homogeneous coordinates:
– transform (x,y,z) to
• 2-D image point:– discard third coordinate
– apply viewport transformation to obtain physical pixel coordinates
),,( dyz
dx
z
d
z
dz
dy
dx
z
y
x
d
d
d
10100
000
000
000
),,( dyz
dx
z
d
Divide by 4th coordinate(the “w” coordinate)
ILE5014 Computer Graphics 10F 35
View VolumeView Volume
• Pyramid in space defined by focal point and window in the image plane (assume window mapped to viewport)
• Defines visible region of space
• Pyramid edges are clipping planes
ILE5014 Computer Graphics 10F 36
View FrustumView Frustum
• Truncated pyramid with near and far clipping planes
– Why far plane? Allows z to be scaled to a limited fixed-point value (z-buffering)
– Why near plane? Prevent points behind the camera being seen
ILE5014 Computer Graphics 10F 37
Why Canonical View Volume?Why Canonical View Volume?
• Rather than derive a different projection matrix for each type of projection, we can convert all projections to orthogonal projections with the default view volume
• This strategy allows us to use standard transformations in the pipeline and makes for efficient clipping
ILE5014 Computer Graphics 10F 39
Taking Clipping into Account Taking Clipping into Account
• After the view transformation, a simple projection and viewport transformation can generate screen coordinate.
• However, projecting all vertices are usually unnecessary.
• Clipping with 3D volume.
• Associating projection with clipping and view volume normalization.
ILE5014 Computer Graphics 10F 40
Normalizing the Viewing FrustumNormalizing the Viewing Frustum
• Solution: transform frustum to a cube before clipping
• Converts perspective frustum to orthographic frustum• This is yet another homogeneous transform!
ILE5014 Computer Graphics 10F 41
Map Perspective View Volume to Orthographic View Volume Map Perspective View Volume to Orthographic View Volume
• We already know how to map orthographic view volume to canonical view volume
• Set view plane at the near plane
ILE5014 Computer Graphics 10F 42
Map Perspective View Volume to Orthographic View VolumeMap Perspective View Volume to Orthographic View Volume
• Map [x,y,n] to [x, y, n]
• Map [xf/n,yf/n,f] to [x, y, f]
01
00
00
0010
0001
n
fn
fnpM
ILE5014 Computer Graphics 10F 43
Projection Matrix is not uniqueProjection Matrix is not unique
• Mp is not unique
11
'
'
'
z
y
x
h
h
hz
hy
hx
z
y
x
pp MM
0100
00
000
000
01
00
00
0010
0001
nffn
n
n
n
fn
fnnn pp MM
ILE5014 Computer Graphics 10F 44
Properties of Perspective TransformProperties of Perspective Transform
• Lines and planes are preserved
• Parallel lines (not parallel to the projection plan) won’t be parallel after transform
– vanishing point: parallel lines intersect at the vanishing point
vanishing point
ILE5014 Computer Graphics 10F 45
Orthographic Projection SummaryOrthographic Projection Summary
Given 3D geometry (a set of points a)
• Compute view transformation Mv
• Compute orthographic projection Mo
• Compute M = MoMv
• For each point ai, compute p = Mai
10002
100
2010
2001
1000
02
00
002
0
0002
1000
01002
10
20
2
100
2
fn
tb
rl
fn
bt
lr
nn
nn
yy
xx
oM
ILE5014 Computer Graphics 10F 46
Perspective Projection SummaryPerspective Projection Summary
Given 3D geometry (a set of points a)
• Compute view transformation Mv
• Map perspective to orthographic Mp
• Compute orthographic projection Mo
• Compute M = MoMpMv
• For each point ai, compute p = Mai