View
227
Download
0
Tags:
Embed Size (px)
Citation preview
Computer GraphicsComputer GraphicsCS630CS630
Computer GraphicsComputer GraphicsCS630CS630
Lecture 3 – Transformation And Lecture 3 – Transformation And Coordinate SystemsCoordinate Systems
2
What is a Transformation?
• Maps points (x, y) in one coordinate system to points (x', y') in another coordinate system
x' = ax + by + c
y' = dx + ey + f
3
Transformations• Simple transformation
– Translation– Rotation– Scaling
4
Transformations• Deformable transformations
– Shearing– Tapering– Twisting– Etc..
• Issues– Can be combined– Are these operations invertible?
5
Transformations• Why use transformations?
– Position objects in a scene (modeling)– Change the shape of objects– Create multiple copies of objects– Projection for virtual cameras– Animations
6
Classes of Transformation
• Rigid-Body/ Euclidean transformation
• Similarity Transforms• Linear Transforms• Affine Transforms• Projective Transforms
7
Rigid-Body / Euclidean Transforms
• Preserves distances• Preserves angles
TranslationRotation
Rigid / Euclidean
Identity
8
How are Transforms Represented?
x' = ax + by + c
y' = dx + ey + f
x'
y'
a b
d e
c
f=
x
y+
p' = M p + t
9
Translation
z
y
x
z
y
x
t
t
t
= +
z
y
x
tttT zyx ),,(
z
y
x
z
y
x
t
t
t
= +
'
'
'
z
y
x
10
Properties of Translation
v=v)0,0,0(T
=v),,(),,( zyxzyx tttTsssT
=
=v),,(1zyx tttT
v),,(),,( zyxzyx tttTsssT v),,(),,( zyxzyx sssTtttT
v),,( zzyyxx tststsT
v),,( zyx tttT
11
Scaling
zs
ys
xs
z
y
x
z
y
x
'
'
'
z
y
x
zyx
s
s
s
sssS
00
00
00
),,(
Uniform scaling iff zyx sss
12
Rotations (2D)
sin
cos
ry
rx
cos)sin(sin)cos('
sin)sin(cos)cos('
rry
rrx
)sin('
)cos('
ry
rx
cossinsincos)sin(
sinsincoscos)cos(
cossin'
sincos'
yxy
yxx
yx,
',' yx
x
y
13
Rotations 2D• So in matrix notation
y
x
y
x
cossin
sincos'
'
14
Rotations (3D)
100
0cossin
0sincos
)(
cos0sin
010
sin0cos
)(
cossin0
sincos0
001
)(
z
y
x
R
R
R
15
Properties of RotationsIRa )0(
)()()()( aaaa RRRR
)()()( aaa RRR
)()()(1 Taaa RRR
)()()()( abba RRRR order matters!
16
Combining Translation & Rotation
)1,1(T
)45( R
)45( R
)1,1(T
17
Combining Translation & Rotation
Tvv'
RTR
TR
R
vv
vv
vv
''
)(''
'''
vv R'
TR
T
vv
vv
''
'''
18
Homogeneous Coordinates
• Add an extra dimension• in 2D, we use 3 x 3 matrices• In 3D, we use 4 x 4 matrices
• Each point has an extra value, w
x'
y'
z'
w'
=
x
y
z
w
a
e
i
m
b
f
j
n
c
g
k
o
d
h
l
p
p' = M p
19
Homogeneous Coordinates
• Most of the time w = 1, and we can ignore it
x'
y'
z'
1
=
x
y
z
1
a
e
i
0
b
f
j
0
c
g
k
0
d
h
l
1
20
Homogeneous Coordinates
z
y
x
w
Z
Y
X
can be represented as
wherew
Zz
w
Yy
w
Xx ,,
21
Translation Revisited
11000
100
010
001
),,(z
y
x
t
t
t
z
y
x
tttTz
y
x
zyx
22
Rotation & Scaling Revisited
11000
000
000
000
),,(z
y
x
s
s
s
z
y
x
sssSz
y
x
zyx
11000
0cossin0
0sincos0
0001
)(z
y
x
z
y
x
Rx
23
Combining Transformations
vv
vvvv
vvv
vv
M
TRSTRT
RSR
S
'''
''''''
'''
'
where TRSM
24
Transforming Tangents
t
qp
qp
qpt
qpt
M
M
MM
)(
'''
25
Transforming Normals
nnn
nn
nn
tntn
tn
tn
tn
TT
T
TT
TT
T
T
T
MM
M
M
M
M
11'
'
'
'
0'
0''
0
26
Surface Normal• Surface Normal: unit vector that is locally
perpendicular to the surface
27
Why is the Normal important?
• It's used for shading — makes things look 3D!
object color only Diffuse Shading
28
Visualization of Surface Normal
± x = Red± y = Green± z = Blue
29
How do we transform normals?
Object SpaceWorld Space
nOS
nWS
30
Transform the Normal like the Ray?
• translation?• rotation?• isotropic scale?• scale?• reflection?• shear?• perspective?
31
More Normal Visualizations
Incorrect Normal Transformation Correct Normal Transformation
32
Transforming Normals
nnn
nn
nn
tntn
tn
tn
tn
TT
T
TT
TT
T
T
T
MM
M
M
M
M
11'
'
'
'
0'
0''
0
33
Rotations about an arbitrary axis
Rotate by around a unit axis r
r
34
An Alternative View• We can view the rotation around an
arbitrary axis as a set of simpler steps
• We know how to rotate and translate around the world coordinate system
• Can we use this knowledge to perform the rotation?
35
Rotation about an arbitrary axis
• Translate the space so that the origin of the unit vector is on the world origin
• Rotate such that the extremity of the vector now lies in the xz plane (x-axis rotation)
• Rotate such that the point lies in the z-axis (y-axis rotation)
• Perform the rotation around the z-axis• Undo the previous transformations
36
Rotation about an arbitrary axis
• Step 1Rotate x-axis
x
y
z
(a,b,c)
x
(a’,b’,c’)
37
Closer Look at Y-Z Plane
• Need to rotate degrees around the x-axis
y
z
38
Equations for
||)1,0,0(||||),,0(||
)1,0,0(),,0()cos(
||),,0(||||)1,0,0(||
||),,0()1,0,0(||)sin(
cb
cb
cb
cb
39
Rotation about the Y-axis
• Using the same analysis as before, we need to rotate degrees around the Y-axis
y
z
x
(a’,b’,c’)=Rx () (a,b,c)T
40
Equations for
||)1,0,0(||||)',','(||
)1,0,0()',','()cos(
||)',','(||||)1,0,0(||
||)',','()1,0,0(||)sin(
cba
cba
cba
cba
41
Rotation about the Z-axis
• Now, it is aligned with the Z-axis, thus we can simply rotate degrees around the Z-axis.
• Then undo all the transformations we just did
42
Equation summary
c
b
a
TRRRRRT
c
b
a
rot xyzyxaxis )()()()()(
'
'
'
)( 111
43
Deformations
Transformations that do not preserve shape Non-uniform scaling Shearing Tapering Twisting Bending
44
Shearing
11000
01
01
01
1
'
'
'
z
y
x
ss
ss
ss
z
y
x
zyzx
yzyx
xzxy
0
0
0
1
zyzx
yzyx
xz
xy
ss
ss
s
s
x
y
x
y
45
Tapering
11000
0)(00
00)(0
0001
1
'
'
'
z
y
x
xf
xf
z
y
x
46
Twisting
11000
0))(cos(0))(sin(
0010
0))(sin(0))(cos(
1
'
'
'
z
y
x
yy
yy
z
y
x
47
Bending
11000
0)()(0
0)()(0
0001
1
'
'
'
z
y
x
ykyh
ygyf
z
y
x
48
Quick Recap• Computer Graphics is using a
computer to generate an image from a representation.
Model Imagecomputer
49
Modeling• What we have been studying so
far is the mathematics behind the creation and manipulation of the 3D representation of the object.
Model Imagecomputer
50
What have we seen so far?
• Basic representations (point, vector)• Basic operations on points and vectors
(dot product, cross products, etc.)• Transformation – manipulative
operators on the basic representation (translate, rotate, deformations) – 4x4 matrices to “encode” all these.
51
Why do we need this?• In order to generate a picture from
a model, we need to be able to not only specify a model (representation) but also manipulate the model in order to create more interesting images.
52
Overview• The next set of slides will deal with
the other half of the process. • From a model, how do we
generate an image
Model Imagecomputer
53
Scene Description
Scene
LightsCamera ObjectsMaterialsBackground
54
Graphics Pipeline
55
Graphics Pipeline
• Modeling transforms orient the models within a common coordinate frame (world space)
56
Graphics Pipeline
57
Graphics Pipeline
• Maps world space to eye space
• Viewing position is transformed to origin & direction is oriented along some axis (usually z)
58
Graphics Pipeline
• Transform to Normalized Device Coordinates (NDC)
• Portions of the object outside the view volume (view frustum) are removed
59
Graphics Pipeline
• The objects are projected to the 2D image place (screen space)
60
Graphics Pipeline
61
Graphics Pipeline
• Z-buffer - Each pixel remembers the closest object (depth buffer)
62
Graphics Pipeline• Almost every step in the graphics
pipeline involves a change of coordinate system. Transformations are central to understanding 3D computer graphics.
63
IntuitivelyObjectSpace
WorldSpace
CameraSpace +Projection+NDC
Rasterization
64
Coordinate Systems Object coordinates World coordinates Camera coordinates Normalized device coordinates Window coordinates
65
Object CoordinatesConvenient place to model the
object
O
66
World CoordinatesCommon
coordinates for the scene
O
O
W
TSRM wo
67
Positioning Synthetic Camera
What are our “degrees of freedom” in camera positioning?To achieve effective visual simulation, we want:1) the eye point to be in proximity of modeled scene2) the view to be directed toward region of interest, and3) the image plane to have a reasonable “twist”
68
Eye Coordinates
Eyepoint at originu axis toward “right” of image planev axis toward “top” of image planeview direction along negative n axis
69
Transformation to Eye Coordinates
Our task: construct the transformation M that re-expresses world coordinates in the viewer frame
70
Machinery: Changing Orthobases
Suppose you are given an orthobasis u, v, nWhat is the action of the matrix M withrows u, v, and n as below?
71
Applying M to u, v, n
Two equally valid interpretations, depending on reference frame:1: Think of uvn basis as a rigid object in a fixed world spaceThen M “rotates” uvn basis into xyz basis2: Think of a fixed axis triad, with “labels” from xyz spaceThen M “reexpresses” an xyz point p in uvn coords!It is this second interpretation that we use todayto “relabel” world-space geometry with eye space coordinates
72
Positioning Synthetic Camera
Given eyepoint e, basis ˆu, ˆv, ˆnDeduce M that expresses world in eye coordinates:Overlay origins, then change bases:
73
Positioning Synthetic Camera
Check: does M re-express world geometry in eye coordinates?
74
Positioning Synthetic Camera
Camera specification must include:World-space eye position eWorld-space “lookat direction” -n
Are e and -n enough to determine the camera DOFs (degrees of freedom)?
75
Positioning Synthetic Camera
Are e and -n enough to determine the camera DOFs?No. Note that we were not given u and v!(Why not simply require the user to specify them?)
We must also determine u and v, i.e., camera “twist” about n.Typically done by specification of a world-space “up vector”provided by user interface, e.g., using gluLookat(e, c, up)“Twist” constraint: Align v with world up vector (How?)
76
Positioning Synthetic Camera
77
Where are we?
78
What is Projection?
Any operation that reduces dimension (e.g., 3D to 2D)
Orthographic ProjectionPerspective Projection
79
Orthographic Projection• focal point at infinity • rays are parallel and orthogonal to the image
plane
Image
World
F
F
Image
World
I
W
80
Comparison
81
Simple Perspective Camera
• camera looks along z-axis• focal point is the origin• image plane is parallel to xy-plane at
distance d• d is call focal length
82
Similar TrianglesY
Z
[0, d][0, 0]
[Y, Z]
[(d/Z)Y, d]
• Similar situation with x-coordinate• Similar Triangles:
point [x,y,z] projects to [(d/z)x, (d/z)y, d]
83
Projection Matrix Projection using homogeneous coordinates:
– transform [x, y, z] to [(d/z)x, (d/z)y, d]
•2-D image point:•discard third coordinate•apply viewport transformation to
obtain physical pixel coordinates
d 0 0 0
0 d 0 0
0 0 d 0
0 0 1 0
x
y
z
1
dx dy dz z d
zx
d
zy d
Divide by 4th coordinate
(the “w” coordinate)
84
Perspective Projection
85
Perspective Projection
z = 0 not allowed (what happens to points on plane z = 0?)Operation well-defined for all other points
86
Perspective Projection
Matrix formulation using “homogeneous 4-vectors”:
Finally, recover projected point using homogenous convention:Divide by 4th element to convert 4-vector to 3-vector:
87
Camera CoordinatesCoordinate system with the camera
in a convenient pose
1000
nr
vr
ur
zyx
zyx
zyx
cw nnn
vvv
uuu
Mu
v
n
x
y
z
88
View Volume and Normalized Device
Coordinates
89
Normalized Device Coordinates
Device independent coordinatesVisible coordinate usually range from:
11
11
11
z
y
x
90
Perspective ProjectionTaking the camera coordinates to
NDC
z
x
near
91
Perspective Projection
z
x
near'p
p
z
xnearx
z
x
near
x
'
'
92
Perspective Projection + NDC
0100
200
02
0
002
nearfar
nearfar
nearfar
nearfarbottomtop
bottomtop
bottomtop
nearleftright
leftright
leftright
near
M pc
93
Window CoordinatesAdjusting the NDC to fit the window
),( 00 yx is the lower left of the window
94
Window CoordinatesAdjusting the NDC to fit the window
0
0
2)1(
2)1(
yheight
yy
xwidth
xx
ndw
ndw
),( 00 yx is the lower left of the window
width
height
95
Window Coordinates
1000
01002
02
0
200
2
0
0
_
heighty
height
widthx
width
M pw
96
Summary : Object Coordinate to Device
Coordinate• Take your representation (points) and transform it
from Object Space to World Space (Mwo)• Take your World Space point and transform it to
Camera Space (Mcw)• Perform the remapping and projection onto the
image plane in Normalized Device Coordinates (Mw_p Mpc)
• Perform this set of transformations on each point of the polygonal object (M= Mw_pMpcMcwMwo)