1 Modeling Transformations 2D Transformations 3D Transformations OpenGL Transformation

Preview:

Citation preview

1

Modeling Transformations

2D Transformations3D TransformationsOpenGL Transformation

2

2D-Transformations

Basic TransformationsHomogeneous coordinate systemComposition of transformations

3

Translation – 2D

(4,5) (7,5)

Y

XBefore Translation

1

*

100

10

01

1

y

x

d

d

y

x

TPPd

dT

y

xP

y

xP

y

x

y

x

Form sHomogeniou

x’ = x + dx y’ = y + dy

(7,1) (10,1)

X

Y

Translation by (3,-4)

4

Scaling – 2D

(4,5) (7,5)

Y

X(2,5/4) (7/2,5/4)

X

Y

Before Scaling Scaling by (1/2, 1/4)

y

x

y

x

y

x

sy

sx

y

x

s

s

PPS

ysy

xsx

*

**

0

0

*

*

*

Types of Scaling:

Differential ( sx != sy )Uniform ( sx = sy )

1

*

100

00

00

1

y

x

s

s

y

x

x

x

Form sHomogeniou

Rotation – 2D

sin

cos

r

rv

rota

ted

cossinsincos

sinsincoscos

rry

rrx expand

cossin

sincos

sin

cos

yxy

yxx

ry

rx

but

original

sin

cos

r

rv

6

Rotation – 2D

(5,2) (9,2)

Y

X

(2.1,4.9)

(4.9,7.8)

X

YBefore Rotation Rotation of 45 deg. w.r.t. origin

1

*

100

0cossin

0sincos

1

Form sHomogeniou

y

x

y

x

cos*sin*

sin*cos**

cossin

sincos

*

yx

yx

y

x

PPR

yyx

xyx

cos*sin*

sin*cos*

7

Mirror Reflection

100

010

001

axis-Xabout Reflection

xM

yyxx

100

010

001

axis-Yabout Reflection

yM

yyxx

(1,1)

(1,-1)

Y

X

(-1,1) (1,1)

X

Y

8

Shearing Transformation

100

01

01

100

01

001

100

010

01

b

a

SHbSH

a

SH xyyx

unit cubeSheared in X

directionSheared in Y

directionSheared in both X

and Y direction

9

Inverse 2D - Transformations

y-y

x-x

),(-(sx,sy)

(-θ-(θ

(-dx,-dy)-

(dx,dy)

MM

MM

SS

RR

TT

sysx

1

1

1

)1)

1

:RefMirror

: Sclaing

: Rotation

:nTranslaito

11

10

Homogeneous Co-ordinates

Translation, scaling and rotation are expressed (non-homogeneously) as:– translation: P = P + T– Scale: P = S · P– Rotate: P = R · P

Composition is difficult to express, since translation not expressed as a matrix multiplication

Homogeneous coordinates allow all three to be expressed homogeneously, using multiplication by 3 matrices

W is 1 for affine transformations in graphics

11

Homogeneous Co-ordinates

P2d is a projection of Ph onto the w = 1 plane

So an infinite number of points correspond to : they constitute the whole line (tx, ty, tw)

x

y

w Ph(x,y,w)

P2d(x,y,1)

w=1

12

Classification of Transformations

1. Rigid-body Transformation Preserves parallelism of lines Preserves angle and length e.g. any sequence of R() and T(dx,dy)

2. Affine Transformation Preserves parallelism of lines Doesn’t preserve angle and length e.g. any sequence of R(), S(sx,sy) and T(dx,dy)

unit cube 45 deg rotaton Scale in X not in Y

13

Properties of rigid-body transformation

1002221

1211

y

x

trr

trr

The following Matrix is Orthogonal if the upper left 2X2 matrix has the following properties

1.A) Each row are unit vector. sqrt(r11* r11 + r12* r12) = 1

B) Each column are unit vector. sqrt(c11* c11 + c12* c12) = 1

2.A) Rows will be perpendicular to each other (r11 , r12 ) . ( r21 , r22) = 0

B) Columns will be perpendicular to each other (c11 , c12 ) . (c21 ,c22) = 0

e.g. Rotation matrix is orthogonal

100

0cossin

0sincos

• Orthogonal Transformation Rigid-Body Transformation

• For any orthogonal matrix B B-1 = BT

14

Commutativity of Transformation Matrices

• In general matrix multiplication is not commutative• For the following special cases commutativity holds

i.e. M1.M2 = M2.M1

M1 M2

Translate Translate

Scale Scale

Rotate Rotate

Uniform Scale Rotate

• Some non-commutative Compositions: Non-uniform scale,

Rotate Translate, Scale Rotate, Translate

OriginalTransitional

Final

15

Associativity of Matirx Multiplication

Create new affine transformations by multiplying sequences of the above basic transformations.

q = CBAp

q = ( (CB) A) p = (C (B A))p = C (B (Ap) ) etc.

matrix multiplication is associative.

But to transform many points, best to do

M = CBA

then do q = Mp for any point p to be rendered.

To transform just a point, better to do q = C(B(Ap))

For geometric pipeline transformation, define M and set it up with the model-view matrix and apply it to any vertex subsequently defined to its setting.

16

Rotation of about P(h,k): R,P

R,P=

Q(x,y)

P(h,k)

Step 1: Translate P(h,k) to origin

T(-h ,-k)

Q1(x’,y’

)

P1 (0,0)

Step 2: Rotate w.r.t to origin

R*

Q2(x’,y’

)

P2 (0,0)

Step 3: Translate (0,0) to P(h,k0)

T(h ,k) *P3(h,k)

Q3(x’+h, y’

+k)

17

Scaling w.r.t. P(h,k): Ssx,sy,p

T(-h ,-k)S(sx,sy)*T(h ,k) *Ssx,sy,P=

(4,3)

(1,1)

(4,1)

S3/2,1/2,(1,1)

Step 1: Translate P(h,k) to origin

(4,2)

(0,0)

(4,0)T(-1,-1)

Step 2: Scale S(sx,sy) w.r.t origin

(6,1)

(6,0)

(0,0) S(3/2,1/2)

(7,1)

Step 3: Translate (0,0) to P(h,k)(7,2)

(1,1) T(1,1

)

18

Reflection about line L, ML

Step 1: Translate (0,b) to origin

T(0 ,-b)ML =

Step 2: Rotate - degrees

Step 3: Mirror reflect about X-axis

R(-) *T(0 ,b) *

Step 4: Rotate degrees

Step 5: Translate origin to (0,b)

M x*R() *

(0,b)

Y

X

t

O

Y

XO

Y

XO

Y

XO

Y

XO

(0,b)

Y

X

t

O

19

Problems to be solved:

Schaum’s outline series:

Problems: 4.1 4.2

4.3, 4.4, 4.5 => R,P

4.6, 4.7, 4.8 => Ssx,sy,,P

4.9, 4.10, 4.11, 4.21 => ML

4.12 => Shearing Pg-281(1.24), Pg-320(5.19)

=> Circular view-port

20

3D Transformations

Basics of 3D geometryBasic 3D TransformationsComposite Transformations

21

Orientation

Thumb points to +ve Z-axisFingers show +ve rotation from X to Y

axis

Y

X

Z (out of page)

Y

X

Z (larger z areaway from viewer)

Right-handed orentation Left-handed orentation

22

Vectors in 3D

Have length and direction

V = [xv , yv , zv]Length is given by the Euclidean Norm

||V|| = ( xv2 + yv

2 + zv2 )

Dot Product

V • U = [xv, yv, zv]•[xu, yu, zu]

= xv*xu + yv*yu + zv*zu = ||V|| || U|| cos ß

Cross Product V U

= [yv*zu - zv yu , -xv*zu + zv*xu , xv*yu – yv*xu ]= ||V|| || U|| sin ßV U = - ( U x V)

(xv,yv,zv)V=aI+bJ+cK

x

y

z

23

3D Equation of Curve & Line

Parametric equations of Curve & LineCurve

Line

bta

thz

tgy

tfx

C

:

VtPPPtPL

t

tzzzz

tyyyy

txxxx

L

PPPPV

0010

010

010

010

0110

)(

10:

P0(x0,y0,z0)

P1(x1,y1,z1)

t > 1

Vt < 0

t =1

t = 00 < t < 1

x

y

z

C

24

3D Equation of Surface & Plane

Parametric equations of Surface & PlaneSurface

Plane : with Normal, N

dtc

bsa

tshz

tsgy

tsfx

S

,

,

,

:

P0

N

kCjBiAN

DCzByAx

ˆˆˆ

0

25

3D Plane

Ways of defining a plane

1. 3 points P0, P1, P2 on the plane

2. Plane Normal N & P0 on plane

3. Plane Normal N & a vector V on the plane

Plane Passing through P0, P1, P2

P0

P1

P2

N

V

)(

0

0ˆ)(ˆ)(ˆ)()ˆˆˆ(

0

ˆˆˆ

000

000

0

2010

CzByAxD

DCzByAx

kzzjyyixxkCjBiA

PPN

kCjBiAPPPPN

where

plane the on is z) y,P(x, if

26

Affine Transformation

Transformation – is a function that takes a point (or vector) and maps that point (or vector) into another point (or vector).

A coordinate transformation of the form:

x’ = axx x + axy y + axz z + bx ,

y’ = ayx x + ayy y + ayz z + by ,

z’ = azx x + azy y + azz z + bz ,

is called a 3D affine transformation.

11000

'

'

'

z

y

x

baaa

baaa

baaa

w

z

y

x

zzzzyzx

yyzyyyx

xxzxyxx

The 4th row for affine transformation is always [0 0 0 1]. Properties of affine transformation:

– translation, scaling, shearing, rotation (or any combination of them) are examples affine transformations.

– Lines and planes are preserved.– parallelism of lines and planes are also preserved, but not angles and

length.

27

Translation – 3D

PPdddT

dz

dy

dx

z

y

x

d

d

d

zyx

z

y

x

z

y

x

*),,(

11

*

1000

100

010

001

z

y

x

dzz

dyy

dxx

28

Scaling – 3D

1

*

*

*

1

*

1000

000

000

000

*),,(

z

y

x

z

y

x

zyx

sz

sy

sx

z

y

x

s

s

s

PPsssS

Original

scale all axes

scale Y axiszsz

ysy

xsx

z

y

x

*

*

*

29

Rotation – 3D

1

cos*sin*

sin*cos*

1

*

1000

0100

00cossin

00sincos

*,

z

yx

yx

z

y

x

PPR k

For 3D-Rotation 2 parameters are needed

Angle of rotation

Axis of rotation

Rotation about z-axis:

30

Rotation about Y-axis & X-axis

1

cos*sin*

sin*cos*

1

*

1000

0cos0sin

0010

0sin0cos

*,

zx

y

zx

z

y

x

PPR j

1

cos*sin*

sin*cos*

1

*

1000

0cossin0

0sincos0

0001

*,

zy

zy

x

z

y

x

PPR iAbout x-axis

About y-axis

31

Shear along Z-axis

1

*

*

1

*

1000

0100

010

001

*),(

z

shzy

shzx

z

y

x

sh

sh

PPshshSH

y

x

y

x

yxxy

y

x

z

32

Object Transformation

Line: Can be transformed by transforming the end points

Plane:(described by 3-points) Can be transformed by transforming the 3-points

Plane:(described by a point and Normal) Point is transformed as usual. Special treatment is needed for transforming Normal

33

Composite Transformations – 3D

Some of the composite transformations to be studied are:

AV,N = aligning a vector V with a vector N

R,L = rotation about an axis L( V, P )

Ssx,sy,P= scaling w.r.t. point P

34

AV : aligning vector V with k

Av = R,i

V = aI + bJ + cK

x

y

z

b

a

c

k

22λ

λcos

λsin

by axis-about x Rotate :1 Step

cbc

b

b

|V|

x

y

z

b

a

k

( 0, b,c )b

|V|

x

y

z

a

k

|V|

( a, 0, )

( 0, 0, )

( 0, b,c )

35

AV : aligning vector V with k

Av = R,i R-,j *

22λ

λcos

λsin

by axis-about x Rotate :1 Step

cbc

b

222

|V|

|V|

λ)cos(

|V|)sin(

-by axis-yabout V Rotate :2 Step

cba

a

P( a, b, c)

b

x

y

z

b

a

c

k

|V|

( a, 0, )( 0, b,c )b

x

y

z

b

a

c

|V|

( 0, 0, |V|)

( 0, b,c )

a

36

AV : aligning vector V with k

AV-1 = AV

T

AV,N = AN-1 * AV

1000

0

00

0

λλ

λ-

λ-λ

Vc

Vb

Va

bc

Vac

Vab

V

VA

37

R,L : rotation about an axis L

Let the axis L be represented by vector V and passing through point P

1.Translate P to the origin

2. Align V with vector k

3. Rotate about k

4. Reverse step 2

5. Reverse step 1

R,L = T-PAV *R,k *AV-1 *T-P

-1 *

V

P

Q

Q'

L

z

x

y

k

38

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

x

y

z N

P

39

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

1.Translate P to the origin

MN,P = T-P

x

y

z

N

P

40

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

1.Translate P to the origin

2. Align N with vector k

MN,P = T-PAN *

N

P

x

y

z

41

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

1.Translate P to the origin

2. Align N with vector k

3. Reflect w.r.t xy-plane

MN,P = T-PAN *S1,1,-1 *

N

P

x

y

z

42

x

y

z

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

1.Translate P to the origin

2. Align N with vector k

3. Reflect w.r.t xy-plane

4. Reverse step 2

MN,P = T-PAN *S1,1,-1 *AN-1 *

43

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

1.Translate P to the origin

2. Align N with vector k

3. Reflect w.r.t xy-plane

4. Reverse step 2

5. Reverse step 1

MN,P = T-PAN *S1,1,-1 *AN-1 *T-P

-1 *

x

y

z N

P

44

Further Composition

The Composite Transform must have

– Translation of P1 to Origin T

zx

y3P

1P2PT

– Some Combination of Rotations R

Rx

y

z 2P

3P 1P

z

x

y3P

1P2P

Fig. 1 Fig. 2

Translate points in fig. 1 into points in fig 2 such that:– P3 is moved to yz plane

– P2 is on z-axis

– P1 is at Origin

45

Finding R

xx

zyx

zyx

zzz

yyy

xxx

Rx.x R

RRR

RRR

zRyRxR

zRyRxR

zRyRxR

rrr

rrr

rrr

R

R

vextor of component :Note

other each to

larperpendicu are ii)

vectors unit are i)

Transform body-Rigid is R

be Let

,,

,,

...

...

...

333231

232221

131211

46

Finding Rz

z

z

z

z

zyx

zyx

zyx

TT

R

zR

yR

xR

zRzRzR

yRyRyR

xRxRxR

RRkR

21

21

21

21

21

21

PP

PP

PP

PP

PP

PP

.

.

.

1

0

0

...

...

...

ˆ 1

R

z

x

y

3P

1P2P

x

y

z 2P

3P 1P

Rz

k

kR

R

ˆ

21

21

21

PP

PP

axis-z along PP aligns

47

R

x

y

z 2P

3P 1P

z

x

y

3P

1P 2P

Finding Rx

x

x

x

x

zyx

zyx

zyx

R

zR

yR

xR

zRzRzR

yRyRyR

xRxRxR

iR

2131

2131

2131

2131

2131

2131

PPPP

PPPP

PPPP

PPPP

PPPP

PPPP

.

.

.

0

0

1

...

...

...

ˆ1 Rx

i

iR

R

ˆ

2131

2131

2131

PPPP

PPPP

axis-x along PPPP aligns

Rz

k

48

Finding Ry

y

y

y

y

zyx

zyx

zyx

R

zR

yR

xR

zRzRzR

yRyRyR

xRxRxR

jR

xz

xz

xz

RR

RR

RR

.

.

.

0

1

0

...

...

...

ˆ1

jR

R

ˆ

xz

xz

RR

axis- yalong RR aligns

R

x

y

z 2P

3P 1P

z

x

y

3P

1P 2P

Rx

i

Rz

k

Ry

j

49

Problems to be solved:

Schaum’s outline series:

Problems: 6.1

6.2, 6.5, 6.9, 6.10, 6.11, 6.12 Av

6.3, 6.4 R,L

6.6, 6.7, 6.8 MN,P

50

Transformations in OpenGL

OpenGL transformation commandsTransformation OrderHierarchical Modeling

51

Transformations in OpenGL

OpenGL uses 3 stacks to maintain transformation matrices:– Model & View transformation matrix stack

– Projection matrix stack

– Texture matrix stack

You can load, push and pop the stackThe top most matrix from each stack is applied to

all graphics primitive until it is changed

M N

Model-ViewMatrix Stack

ProjectionMatrix Stack

GraphicsPrimitives

(P)

OutputN•M•P

52

General Transformation Commands

Specify current matrix (stack) :– void glMatrixMode(GLenum mode)

• Mode : GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE

Initialize current matrix.– void glLoadIdentity(void)

• Sets the current matrix to 4X4 identity matirx

– void glLoadMatrix{f|d}(cost TYPE *M)• Sets the current matrix to 4X4 matrix specified by M

Note: current matrix Top most matrix of the current matrix stack

ABC

ABI

ABM

glL

oadM

atri

x(M

)

glL

oadI

dent

ity

53

General Transformation Commands

Concatenate Current Matrix:– void glMultMatrix(const TYPE *M)

• Multiplies current matrix C, by M. i.e. C = C*M

– Caveat: OpenGL matrices are stored in column major order.

– Best use utility function glTranslate, glRotate, glScale for common transformation tasks.

161284

151173

141062

13951

mmmm

mmmm

mmmm

mmmm

54

Transformations and OpenGL®

Each time an OpenGL transformation M is called the current MODELVIEW matrix C is altered:

Cvv CMvv

glTranslatef(1.5, 0.0, 0.0);glRotatef(45.0, 0.0, 0.0, 1.0);

CTRvv

Note: v is any vertex placed in rendering pipeline v’ is the transformed vertex from v.

55

Sample Instance Transformation

glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(...);glRotatef(...);glScalef(...);gluCylinder(...);

56

Thinking About Transformations

As a Global System Objects moves but

coordinates stay the same Think of transformation

in reverse order as they appear in code

As a Local System Objects moves and

coordinates move with it Think of transformation

in same order as they appear in code

There is a World Coordinate System where: All objects are defined Transformations are in World Coordinate space

Two Different Views

57

Local View Translate Object Then Rotate

Order of Transformation T•R

glLoadIdentity();glMultiMatrixf( T);

glMultiMatrixf( R);

draw_ the_ object( v);v’ = ITRv

Global View Rotate Object

Then Translate

Effect is same, but perception is different

58

Order of Transformation R•T

glLoadIdentity();glMultiMatrixf( R);

glMultiMatrixf( T);

draw_ the_ object( v);v’ = ITRv

Local View Rotate Object Then Translate

Global View Translate Object

Then Rotate

Effect is same, but perception is different

59

Hierarchical Modeling

Many graphical objects are structured Exploit structure for

– Efficient rendering– Concise specification of model parameters– Physical realism

Often we need several instances of an object– Wheels of a car– Arms or legs of a figure– Chess pieces

Encapsulate basic object in a function Object instances are created in “standard” form Apply transformations to different instances Typical order: scaling, rotation, translation

60

OpenGL & Hierarchical Model

ABCC

glPushMatrix

– void glPushMatrix(void);

AB

glPushMatrix

– void glPoipMatrix(void);

ABC C

m

glGetFloatv

– void glGetFloatv(GL_MODELVIEW_MATRIX, *m);

ABC

Some of the OpenGL functions helpful for hierarchical modeling are:

61

Scene Graph

A scene graph is a hierarchical representation of a scene We will use trees for representing hierarchical objects

such that:– Nodes represent parts of an object

– Topology is maintained using parent-child relationship

– Edges represent transformations that applies to a part and all the subparts connected to that part

typedef struct treenode {GLfloat m[16]; // Transformationvoid (*f) ( ); // Draw functionstruct treenode *sibling;struct treenode *child;

} treenode;

Scene

Sun Star X

Earth Venus Saturn

Moon Ring

62

Example - Torso

Initializing transformation matrix for node

treenode torso, head, ...;

/* in init function */

glLoadIdentity();

glRotatef(...);

glGetFloatv(GL_MODELVIEW_MATRIX, torso.m);

Initializing pointers

torso.f = drawTorso;

torso.sibling = NULL;

torso.child = &head;

63

Generic Traversal

To render the hierarchy:– Traverse the scene graph depth-first– Going down an edge:

• push the top matrix onto the stack

• apply the edge's transformation(s)

– At each node, render with the top matrix– Going up an edge:

• pop the top matrix off the stack

64

Generic Traversal : Torso

Recursive definitionvoid traverse (treenode *root) {

if (root == NULL) return;

glPushMatrix();

glMultMatrixf(root->m);

root->f();

if (root->child != NULL) traverse(root->child);

glPopMatrix();

if (root->sibling != NULL) traverse(root->sibling);

}

C is really not the right language for this !!

65

Viewing Transformation

66

Viewing Pipeline Revisited

xw

yw

zw

pw

Modeling Transform

WorldCoordinates

Pw

yo

xo

zo

po

GraphicsPrimitives Po

ObjectCoordinates

ye

xe

-ze

pe

Viewing Transform Pe

EyeCoordinates

67

Viewing Transformation in OpenGL To setup the modelview matrix, OpenGL provides the

following function:

y

x

z

eye(eyex, eyey, eyez)

center(centerx, centery, centerz)

up(upx, upy, upz)

gluLookAtgluLookAt(( eyex, eyey, eyezeyex, eyey, eyez, , centerx, centery, centerzcenterx, centery, centerz, , upx, upy, upzupx, upy, upz ))

68

Implementation

We want to construct an Orthogonal FrameOrthogonal Frame such that,

xzy

x

z

eCeCeC

puvnormalizeeC

veC

eyecenternormalizev

eyeOC

...

.

.

.

C.e z

C.O(eye)

center

up(upx, upy, upz)

v

C.e x

C.e y

(1)(1) its origin is the point eyepoint eye

(2)(2) its -z basis vector points towards the point point centercenter(3)(3) the up vectorup vector projects to the up direction (+ve y-axis)

Let CC (for camera) denote this frame. Clearly,

69

Thank You

Recommended