Computer Graphics 3 - Transformations · View transformation We want to convert a vertex vg from...

Preview:

Citation preview

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)

Recommended