69
1 Modeling Transformations 2D Transformations 3D Transformations OpenGL Transformation

1 Modeling Transformations 2D Transformations 3D Transformations OpenGL Transformation

  • View
    286

  • Download
    6

Embed Size (px)

Citation preview

Page 1: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

1

Modeling Transformations

2D Transformations3D TransformationsOpenGL Transformation

Page 2: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

2

2D-Transformations

Basic TransformationsHomogeneous coordinate systemComposition of transformations

Page 3: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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)

Page 4: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 5: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 6: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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*

Page 7: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 8: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 9: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 10: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 11: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 12: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 13: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 14: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 15: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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.

Page 16: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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)

Page 17: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

)

Page 18: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 19: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 20: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

20

3D Transformations

Basics of 3D geometryBasic 3D TransformationsComposite Transformations

Page 21: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 22: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 23: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 24: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 25: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 26: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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.

Page 27: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 28: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

*

*

*

Page 29: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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:

Page 30: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 31: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 32: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 33: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 34: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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 )

Page 35: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 36: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 37: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 38: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 39: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 40: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 41: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 42: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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 *

Page 43: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 44: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 45: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 46: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 47: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 48: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 49: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 50: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

50

Transformations in OpenGL

OpenGL transformation commandsTransformation OrderHierarchical Modeling

Page 51: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 52: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 53: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 54: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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.

Page 55: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

55

Sample Instance Transformation

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

Page 56: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 57: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 58: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 59: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 60: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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:

Page 61: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 62: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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;

Page 63: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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

Page 64: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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 !!

Page 65: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

65

Viewing Transformation

Page 66: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL 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

Page 67: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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 ))

Page 68: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

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,

Page 69: 1 Modeling Transformations  2D Transformations  3D Transformations  OpenGL Transformation

69

Thank You