computer graphics 3 - transformations · view transformation we want to convert a vertex vg from...
TRANSCRIPT
Computer Graphics 3 - Transformations
Tom Thorne
Slides courtesy of Taku Komurawww.inf.ed.ac.uk/teaching/courses/cg
Overview
Homogeneous transformations
I 2D transformationsI 3D transformations
View transformation
Placing objects
I Having prepared objects, they need to be placed in theenvironment
I This involves knowing the vertex coordinates of the object inthe global coordinate system
I Object vertex coordinates are only defined locally
Transformations
The coordinates of the vertices of the object and translated, rotatedand scaled to place them in the global coordinate system.
Translation
x,y
x',y'
Ax
Õ
y
Õ
B
=
Ax
y
B
+
Ad
x
d
y
B
Scaling
x,y
x',y'
Ax
Õ
y
Õ
B
=
As
x
00 s
y
B Ax
y
B
Rotation
x,y
x',y'
Ax
Õ
y
Õ
B
=
Acos ◊ ≠ sin ◊sin ◊ cos ◊
B Ax
y
B
RotationColumns of the matrix correspond to the new x and y axes aftertransformationA
x
Õ
y
Õ
B
=
Acos ◊ ≠ sin ◊sin ◊ cos ◊
B Ax
y
B
(1,0)cos θ
(0,1)
sin θ
-sin θ
cos θθ
θ
Operations
TranslationA
x
Õ
y
Õ
B
=
Ax
y
B
+
Ad
x
d
y
B
ScalingA
x
Õ
y
Õ
B
=
As
x
00 s
y
B Ax
y
B
RotationA
x
Õ
y
Õ
B
=
Acos ◊ ≠ sin ◊sin ◊ cos ◊
B Ax
y
B
Unfortunately these aren’t all the same operation!
Homogeneous coordinatesExtend the coordinate system with a mapping back to 2D:Q
cax
y
w
R
db =
Ax/w
y/w
B
Then:
Translation
Q
cax
Õ
y
Õ
1
R
db =
Q
ca1 0 d
x
0 1 d
y
0 0 1
R
db
Q
cax
y
1
R
db
Scaling
Q
cax
Õ
y
Õ
1
R
db =
Q
cas
x
0 00 s
y
00 0 1
R
db
Q
cax
y
1
R
db
Rotation
Q
cax
Õ
y
Õ
1
R
db =
Q
cacos ◊ ≠ sin ◊ 0sin ◊ cos ◊ 0
0 0 1
R
db
Q
cax
y
1
R
db
Combining transformations
• With a set of transformation matrices T, R, S, apply transformations with respect to global coordinate system: order them right to left
• E.g. Rotation R, then scaling S, then translation T, would be TSR
• Can combine these matrices into a single matrix by applying matrix multiplication.
• Note there is only one way to apply matrix multiplication, and it is not commutative (i.e. TSR!=RST)
Combining transformations
v1 = M0v0v2 = M1v1
»v2 = M1M0v0 v2
v0
Sequentially multiply the matrices
I Remember that matrix operations are not commutative
Example 1
Example 1
Example 2
A common matrix
Rotation followed by translation isoften used, this is worthremembering:
Q
cacos ◊ ≠ sin ◊ d
x
sin ◊ cos ◊ d
y
0 0 1
R
db v2
v0
Transforming between coordinate systems
• Positioning objects (defined in a local coordinate system) in a scene
• Finding coordinates of a point with respect to a specific origin and x/y axes (calculating camera coordinates of objects)
Transformation between coordinate systems
We can interpret the transformation matrix as converting thecoordinates of vertices between di�erent coordinate systems.
v
g
= Mv
l
v
l
= M
≠1v
g
vgv l
v l
Example
I What is the position of X
G
in coordinate system L?I What is the position of X
L
in coordinate system G?
M =
Q
ca
1Ô2
1Ô2 2
≠ 1Ô2
1Ô2 2
0 0 1
R
db
M
≠1 =
Q
ca
1Ô2 ≠ 1Ô
2 01Ô2
1Ô2 ≠2
Ô2
0 0 1
R
db
G xLx (1,1)(1,2)
G
L
Example
What is the position of X
G
in coordinate systemL?Q
ca
1Ô2 ≠ 1Ô
2 01Ô2
1Ô2 ≠2
Ô2
0 0 1
R
db
Q
ca121
R
db =
Q
ca≠ 1Ô
2≠ 1Ô
21
R
db
What is the position of X
L
in coordinate systemG?Q
ca
1Ô2
1Ô2 2
≠ 1Ô2
1Ô2 2
0 0 1
R
db
Q
ca111
R
db =
Q
ca2 +
Ô2
21
R
db
G xLx (1,1)(1,2)
G
L
Transformation between coordinate systems
We can generalize the idea to multiple coordinate systems ratherthan local and global:
v
i
= M
iΩj
v
j
v
j
= M
jΩi
v
i
= M
≠1iΩj
v
i
If we have multiple coordinate systems a, b, c and d , along withtransformations M
aΩb
, M
bΩc
, M
cΩd
. . .
Multiple coordinate systemsWhat is the position of V
d
with respect to coordinate system c?
a
b
c
d
vd
Multiple coordinate systemsWhat is the position of V
d
with respect to coordinate system c?
Iv
c
= M
cΩd
v
d
a
b
c
d
vdvc
Multiple coordinate systemsWhat is the position of V
d
with respect to coordinate system b?
Iv
c
= M
cΩd
v
d
Iv
b
= M
bΩc
v
c
= M
bΩc
M
cΩd
v
d
a
b
c
d
vd
vb
Multiple coordinate systemsWhat is the position of V
d
with respect to coordinate system a?
Iv
c
= M
cΩd
v
d
Iv
b
= M
bΩc
v
c
= M
bΩc
M
cΩd
v
d
Iv
a
= M
aΩb
v
b
= M
aΩb
M
bΩc
M
cΩd
v
d
a
b
c
d
vd
va
Combining transformations
• Less common: special case where we want to apply the transformations in our matrices with respect to the local coordinate system as it moves. Matrices are ordered from left to right.
• E.g. a car driving forwards, turning and then driving forwards again. The second transformation forwards should be along the local y axis of the car, not of the global coordinate system. Apply matrices as TRU
• This is equivalent to performing U then R then T in the global coordinate system - just an easier way of constructing it.
R
T
U
Order of multiplication
Example - driving a carSitting in a car with the mirror 0.4m to your right, you
I drive 5m forwardsI turn 30 degrees rightI drive 2m forwards
Where is the side mirror relative to its original position?
Example - driving a car
The transformation matrix of driving forwards 5m is:
T1 =
Q
ca1 0 00 1 50 0 1
R
db
The transformation matrix of turning 30 degrees to the right is:
R =
Q
ca≠
Ô3
212 0
≠12
Ô3
2 00 0 1
R
db
The transformation matrix of driving forwards 2m is:
T2 =
Q
ca1 0 00 1 20 0 1
R
db
Solution
x
Õ = T1RT2x =
Q
ca1 0 00 1 50 0 1
R
db
Q
ca≠
Ô3
212 0
≠12
Ô3
2 00 0 1
R
db
Q
ca1 0 00 1 20 0 1
R
db
Q
ca0.401
R
db
x
Õ =
Q
ca0.656.53
1
R
db
3D translation
Very simple to extend 2D case to 3D:
Q
ccca
x
Õ
y
Õ
z
Õ
1
R
dddb =
Q
ccca
1 0 0 d
x
0 1 0 d
y
0 0 1 d
z
0 0 0 1
R
dddb
Q
ccca
x
y
z
1
R
dddb
3D scaling
Very simple to extend 2D case to 3D:
Q
ccca
x
Õ
y
Õ
z
Õ
1
R
dddb =
Q
ccca
s
x
0 0 00 s
y
0 00 0 s
z
00 0 0 1
R
dddb
Q
ccca
x
y
z
1
R
dddb
3D rotation - X axis
Q
ccca
x
Õ
y
Õ
z
Õ
1
R
dddb =
Q
ccca
1 0 0 00 cos ◊ ≠ sin ◊ 00 sin ◊ cos ◊ 00 0 0 1
R
dddb
Q
ccca
x
y
z
1
R
dddb
3D rotation - arbitrary axis
u
Q
ccca
x
Õ
y
Õ
z
Õ
1
R
dddb =
Q
ccca
u
2x
+ c(1 ≠ u
2x
) u
x
u
y
(1 ≠ c) ≠ u
z
s u
z
u
x
(1 ≠ c) + u
y
s 0u
x
u
y
(1 ≠ c) + u
z
s u
2y
+ c(1 ≠ u
2y
) u
y
u
z
(1 ≠ c) ≠ u
x
s 0u
z
u
x
(1 ≠ c) ≠ u
y
s u
y
u
z
(1 ≠ c) + u
x
s u
2z
+ c(1 ≠ u
2z
) 00 0 0 1
R
dddb
Q
ccca
x
y
z
1
R
dddb
c = cos ◊, s = sin ◊
Transforming vertex normalsTransforming vertex normals, we need to take care to ensure theyremain perpendicular to the surface.Tangent vectors remain tangent to the surface after transformation.For tangent vector t and normal vector n transformed by scaling S:
n=(1,1)n'=(2,1)t=(-1,1) t'=(-2,1)
S =
Q
ca2 0 00 1 00 0 1
R
db n
Õ = Sn, t
Õ = St.
Transforming vertex normalsTransforming vertex normals, we need to take care to ensure theyremain perpendicular to the surface.Tangent vectors remain tangent to the surface after transformation.For any tangent vector t and normal vector n transformed by M:
n · t = 0n
T (M≠1M)t = 0
(nT
M
≠1)(Mt) = 0
Therefore n
T
M
≠1 is perpendicular to the transformed Mt for any t.So the desired normal vector is:n
Õ = (M≠1)T
n Shirley 6.2.2
View transformation
I Transform to coordinatesystem of camera
I Use the orientation andtranslation of camera fromthe origin of the worldcoordinate system
vg
g
c
Mg<-c
View transformation
We want to convert a vertex v
g
from the global coordinate systemto a vertex in the camera coordinate system v
c
. We can do thisusing the camera to world transformation matrix M
gΩc
.
v
g
= M
gΩc
v
c
v
c
= M
≠1gΩc
v
g
= M
cΩg
v
g
vg
g
c
Mg<-c
Example
• Camera at (2,2), rotated 45 degrees clockwise
• We want to know the coordinates of P in the camera coordinate system i.e. starting from (2,2), what combination of the new x axis and y axis are needed?
2,2P
4,1
Example
• Rotation then translation
R =
0
@1p2
1p2
0
� 1p2
1p2
0
0 0 1
1
A
T =
0
@1 0 20 1 20 0 1
1
A
TR =
0
@1 0 20 1 20 0 1
1
A
0
@1p2
1p2
0
� 1p2
1p2
0
0 0 1
1
A =
0
@1p2
1p2
2
� 1p2
1p2
2
0 0 1
1
A
2,2P
4,1R T
Example
• To find P with respect to the new x and y axes:
Ml!g = TR =
0
@1p2
1p2
2
� 1p2
1p2
2
0 0 1
1
A
Mg!l = M�1l!g = (TR)�1 =
0
B@
1p2
� 1p2
21p2
1p2
�2p2
0 0 1
1
CA
2,2P
P 0 = Mg!lP =
0
B@
1p2
� 1p2
21p2
1p2
�2p2
0 0 1
1
CA
0
@411
1
A =
0
@2 + 3p
21p21
1
A
Summary
I Three kinds of transformation - translation, rotation and scalingI In homogeneous coordinates, transformations can be
represented by matrix multiplicationI After transforming objects to world coordinates, transform to
coordinate system of the camera for viewing
References
Recommended reading:
I Shirley, Chapter 6.1 to 6.1.5 inclusive, 6.2 to 6.5 inclusive
Extra reference materials:
I Foley, Chapter 5 (Geometrical Transformations)