transformations iii week 2, fri jan 19

38
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner http://www.ugrad.cs.ubc.ca/~cs314/Vj an2007 Transformations III Week 2, Fri Jan 19

Upload: becca

Post on 25-Feb-2016

41 views

Category:

Documents


1 download

DESCRIPTION

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2007. Transformations III Week 2, Fri Jan 19. Readings for Jan 15-22. FCG Chap 6 Transformation Matrices except 6.1.6, 6.3.1 FCG Sect 13.3 Scene Graphs RB Chap Viewing Viewing and Modeling Transforms until Viewing Transformations - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Transformations III Week 2, Fri Jan 19

University of British ColumbiaCPSC 314 Computer Graphics

Jan-Apr 2007

Tamara Munzner

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2007

Transformations III

Week 2, Fri Jan 19

Page 2: Transformations III Week 2, Fri Jan 19

2

Readings for Jan 15-22• FCG Chap 6 Transformation Matrices

• except 6.1.6, 6.3.1• FCG Sect 13.3 Scene Graphs • RB Chap Viewing

• Viewing and Modeling Transforms until Viewing Transformations

• Examples of Composing Several Transformations through Building an Articulated Robot Arm

• RB Appendix Homogeneous Coordinates and Transformation Matrices

• until Perspective Projection• RB Chap Display Lists

Page 3: Transformations III Week 2, Fri Jan 19

3

News• reminder: office hours today after class in

011 lab• reminder: course newsgroup is

ubc.courses.cpsc.414

Page 4: Transformations III Week 2, Fri Jan 19

4

Review: Shear, Reflection• shear along x axis

• push points to right in proportion to height

• reflect across x axis• mirror

x

y

x

y

00

101

yxsh

yx x

00

1001

yx

yx

x x

Page 5: Transformations III Week 2, Fri Jan 19

5

Review: 2D Transformations

''

yx

byax

ba

yx

yx

yx

cossinsincos

''

yx

ba

yx

00

''

scaling matrix rotation matrix

''

yx

yx

dcba

translation multiplication matrix??

vector addition

matrix multiplicationmatrix multiplication

),( ba(x,y)

(x′,y′)

Page 6: Transformations III Week 2, Fri Jan 19

6

Review: Linear Transformations• linear transformations are combinations of

• shear• scale• rotate• reflect

• properties of linear transformations• satisifes T(sx+ty) = s T(x) + t T(y)• origin maps to origin• lines map to lines• parallel lines remain parallel• ratios are preserved• closed under composition

yx

dcba

yx''

dycxybyaxx

''

Page 7: Transformations III Week 2, Fri Jan 19

7

Correction: Composing Transformations• scaling

• rotation

11

1221

21

sysysxsx

SSso scales multiplyso scales multiply

11

)21cos()21sin()21sin()21cos(

12

RRso rotations addso rotations add

Page 8: Transformations III Week 2, Fri Jan 19

8

Review: 3D Homog Transformations• use 4x4 matrices for 3D transformations

111

11

1'''

zyx

cba

zyxtranslate(a,b,c)translate(a,b,c)

11cossinsincos

1

1'''

zyx

zyx

),(Rotate x

111'''

zyx

cb

a

zyx

scale(a,b,c)scale(a,b,c)

1

cossin1sincos

),(Rotate y

11

cossinsincos

),(Rotate z

Page 9: Transformations III Week 2, Fri Jan 19

9

Review: Affine Transformations• affine transforms are combinations of

• linear transformations• translations

• properties of affine transformations• origin does not necessarily map to origin• lines map to lines• parallel lines remain parallel• ratios are preserved• closed under composition

wyx

fedcba

wyx

100''

Page 10: Transformations III Week 2, Fri Jan 19

10

More: Composing Transformations

Ta Tb = Tb Ta, but Ra Rb != Rb Ra and Ta Rb != Rb Ta Ta Tb = Tb Ta, but Ra Rb != Rb Ra and Ta Rb != Rb Ta • rotations around different axes do not commute

Page 11: Transformations III Week 2, Fri Jan 19

11

p'TRpReview: Composing Transformations

• which direction to read? • right to left

• interpret operations wrt fixed coordinates • moving object

• left to right• interpret operations wrt local coordinates • changing coordinate system• OpenGL updates current matrix with postmultiply

• glTranslatef(2,3,0);• glRotatef(-90,0,0,1);• glVertexf(1,1,1);

• specify vector last, in final coordinate system• first matrix to affect it is specified second-to-last

OpenGL pipeline ordering!

Page 12: Transformations III Week 2, Fri Jan 19

12

(2,1)(1,1)

(1,1)

changing coordinate system

moving objecttranslate by (-1,0)

Interpreting Transformations

• same relative position between object and basis vectors

intuitive?

OpenGL

Page 13: Transformations III Week 2, Fri Jan 19

13

Matrix Composition• matrices are convenient, efficient way to represent

series of transformations• general purpose representation• hardware matrix multiply• matrix multiplication is associative

• p′ = (T*(R*(S*p)))• p′ = (T*R*S)*p

• procedure• correctly order your matrices!• multiply matrices together• result is one matrix, multiply vertices by this matrix • all vertices easily transformed with one matrix multiply

Page 14: Transformations III Week 2, Fri Jan 19

14

Rotation About a Point: Moving Object

FFWW

translate p translate p to originto origin

p(x,y)

rotate about rotate about p by :p by :

rotate aboutrotate aboutoriginorigin

translate p translate p backback

T(x,y,z)R(z,)T( x, y, z)

Page 15: Transformations III Week 2, Fri Jan 19

15

Rotation: Changing Coordinate Systems• same example: rotation around arbitrary

center

Page 16: Transformations III Week 2, Fri Jan 19

16

Rotation: Changing Coordinate Systems• rotation around arbitrary center

• step 1: translate coordinate system to rotation center

Page 17: Transformations III Week 2, Fri Jan 19

17

Rotation: Changing Coordinate Systems• rotation around arbitrary center

• step 2: perform rotation

Page 18: Transformations III Week 2, Fri Jan 19

18

Rotation: Changing Coordinate Systems• rotation around arbitrary center

• step 3: back to original coordinate system

Page 19: Transformations III Week 2, Fri Jan 19

19

General Transform Composition• transformation of geometry into coordinate

system where operation becomes simpler• typically translate to origin

• perform operation

• transform geometry back to original coordinate system

Page 20: Transformations III Week 2, Fri Jan 19

20

Rotation About an Arbitrary Axis• axis defined by two points• translate point to the origin• rotate to align axis with z-axis (or x or y)• perform rotation• undo aligning rotations• undo translation

Page 21: Transformations III Week 2, Fri Jan 19

Arbitrary Rotation

• problem: • given two orthonormal coordinate systems XYZ and UVW • find transformation from one to the other

• answer: • transformation matrix R whose columns are U,V,W:

R ux vx wx

uy vy wy

uz vz wz

Y Z

X

W

V

U

Page 22: Transformations III Week 2, Fri Jan 19

22

Arbitrary Rotation• why?

• similarly R(Y) = V & R(Z) = W

R(X)ux vx wx

uy vy wy

uz vz wz

100

(ux,uy,uz)

U

Page 23: Transformations III Week 2, Fri Jan 19

23

Transformation Hierarchies

Page 24: Transformations III Week 2, Fri Jan 19

24

Transformation Hierarchies• scene may have a hierarchy of coordinate

systems• stores matrix at each level with incremental

transform from parent’s coordinate system

• scene graph roadroad

stripe1stripe1 stripe2stripe2 ...... car1car1 car2car2 ......

w1w1 w3w3w2w2 w4w4

Page 25: Transformations III Week 2, Fri Jan 19

25

Transformation Hierarchy Example 1

torsotorso

headheadRUarmRUarm

RLarmRLarm

RhandRhand

RUlegRUleg

RLlegRLleg

RfootRfoot

LUarmLUarm

LLarmLLarm

LhandLhand

LUlegLUleg

LLlegLLleg

LfootLfoot

worldworld

trans(0.30,0,0) rot(z, )trans(0.30,0,0) rot(z, )

Page 26: Transformations III Week 2, Fri Jan 19

26

Transformation Hierarchies• hierarchies don’t fall apart when changed• transforms apply to graph nodes beneath

Page 27: Transformations III Week 2, Fri Jan 19

27

Demo: Brown Applets

http://www.cs.brown.edu/exploratories/http://www.cs.brown.edu/exploratories/freeSoftware/catalogs/scenegraphs.htmlfreeSoftware/catalogs/scenegraphs.html

Page 28: Transformations III Week 2, Fri Jan 19

28

Transformation Hierarchy Example 2• draw same 3D data with different

transformations: instancing

Page 29: Transformations III Week 2, Fri Jan 19

29

Matrix Stacks• challenge of avoiding unnecessary

computation• using inverse to return to origin• computing incremental T1 -> T2

Object coordinatesObject coordinates

World coordinatesWorld coordinates

TT11(x)(x) TT22(x)(x)TT33(x)(x)

Page 30: Transformations III Week 2, Fri Jan 19

30

Matrix Stacks

glPushMatrix()glPushMatrix()

glPopMatrix()glPopMatrix()AA

BB

CC

AA

BB

CC

AA

BB

CC

CC

glScale3f(2,2,2)glScale3f(2,2,2)

D = C scale(2,2,2) trans(1,0,0)D = C scale(2,2,2) trans(1,0,0)

AA

BB

CC

DD

DrawSquare()DrawSquare()glTranslate3f(1,0,0)glTranslate3f(1,0,0)

DrawSquare()DrawSquare()

glPushMatrix()glPushMatrix()

glPopMatrix()glPopMatrix()

Page 31: Transformations III Week 2, Fri Jan 19

31

Modularization• drawing a scaled square

• push/pop ensures no coord system changevoid drawBlock(float k) {void drawBlock(float k) { glPushMatrix();glPushMatrix();

glScalef(k,k,k);glScalef(k,k,k); glBegin(GL_LINE_LOOP);glBegin(GL_LINE_LOOP); glVertex3f(0,0,0);glVertex3f(0,0,0); glVertex3f(1,0,0);glVertex3f(1,0,0); glVertex3f(1,1,0);glVertex3f(1,1,0); glVertex3f(0,1,0);glVertex3f(0,1,0); glEnd();glEnd();

glPopMatrix();glPopMatrix();}}

Page 32: Transformations III Week 2, Fri Jan 19

32

Matrix Stacks• advantages

• no need to compute inverse matrices all the time• modularize changes to pipeline state• avoids incremental changes to coordinate systems

• accumulation of numerical errors• practical issues

• in graphics hardware, depth of matrix stacks is limited

• (typically 16 for model/view and about 4 for projective matrix)

Page 33: Transformations III Week 2, Fri Jan 19

33

Transformation Hierarchy Example 3

FFWW

FFhh

FFhh

glLoadIdentity();glLoadIdentity();glTranslatef(4,1,0);glTranslatef(4,1,0);glPushMatrix();glPushMatrix();glRotatef(45,0,0,1);glRotatef(45,0,0,1);glTranslatef(0,2,0);glTranslatef(0,2,0);glScalef(2,1,1);glScalef(2,1,1);glTranslate(1,0,0);glTranslate(1,0,0);glPopMatrix();glPopMatrix();

FF11

FF hh

FF hh

FF hh

FF hh

FFhh

Page 34: Transformations III Week 2, Fri Jan 19

34

Transformation Hierarchy Example 4

4

15 3

2

xx

yy

glTranslate3f(x,y,0);glTranslate3f(x,y,0);glRotatef( ,0,0,1);glRotatef( ,0,0,1);DrawBody();DrawBody();glPushMatrix();glPushMatrix(); glTranslate3f(0,7,0);glTranslate3f(0,7,0); DrawHead();DrawHead();glPopMatrix();glPopMatrix();glPushMatrix();glPushMatrix(); glTranslate(2.5,5.5,0);glTranslate(2.5,5.5,0); glRotatef( ,0,0,1);glRotatef( ,0,0,1); DrawUArm();DrawUArm(); glTranslate(0,-3.5,0);glTranslate(0,-3.5,0); glRotatef( ,0,0,1);glRotatef( ,0,0,1); DrawLArm();DrawLArm();glPopMatrix();glPopMatrix();... (draw other arm)... (draw other arm)

1

2

3

Page 35: Transformations III Week 2, Fri Jan 19

35

Hierarchical Modelling• advantages

• define object once, instantiate multiple copies• transformation parameters often good control knobs• maintain structural constraints if well-designed

• limitations• expressivity: not always the best controls• can’t do closed kinematic chains

• keep hand on hip• can’t do other constraints

• collision detection• self-intersection• walk through walls

Page 36: Transformations III Week 2, Fri Jan 19

36

Single Parameter: Simple

• parameters as functions of other params• clock: control all hands with seconds s m = s/60, h=m/60, theta_s = (2 pi s) / 60,theta_m = (2 pi m) / 60, theta_h = (2 pi h) / 60

Page 37: Transformations III Week 2, Fri Jan 19

37

Single Parameter: Complex

• mechanisms not easily expressible with affine transforms

http://www.flying-pig.co.ukhttp://www.flying-pig.co.uk

Page 38: Transformations III Week 2, Fri Jan 19

38

Single Parameter: Complex

• mechanisms not easily expressible with affine transforms

http://www.flying-pig.co.uk/mechanisms/pages/irregular.htmlhttp://www.flying-pig.co.uk/mechanisms/pages/irregular.html