Top Banner
34

Evening’s Goals

Feb 25, 2016

Download

Documents

zea

Evening’s Goals. Discuss viewing and modeling transformations Describe matrix stacks and their uses Show basic geometric rasterization and clipping algorithms. Modeling Objects. Recall objects are composed of geometric primitives each primitive is composed of vertices. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Evening’s Goals
Page 2: Evening’s Goals

2COEN 290 - Computer Graphics I

Evening’s Goals

Discuss viewing and modeling transformations

Describe matrix stacks and their uses Show basic geometric rasterization and

clipping algorithms

Page 3: Evening’s Goals

3COEN 290 - Computer Graphics I

Modeling Objects

Recall objects are composed of geometric primitives• each primitive is composed of vertices

Model around the origin• model just means

“determine an object’s vertices”

Page 4: Evening’s Goals

4COEN 290 - Computer Graphics I

Modeling Transformations

Position objects in world coordinates Move coordinate systems, not objects Affects all objects rendered after

transformation Types

• translation• scale• rotation• shear

Page 5: Evening’s Goals

5COEN 290 - Computer Graphics I

Translation

Move the origin to a new location

Page 6: Evening’s Goals

6COEN 290 - Computer Graphics I

1000

100

010

001

),,(z

y

x

zyxt

t

t

tttT

glTranslate[fd]()

glTranslatef( tx, ty, tz );

Page 7: Evening’s Goals

7COEN 290 - Computer Graphics I

Scale

Stretch, mirror or decimate a coordinate direction

recthreflect/st1rinkreflect/sh01

decimate0shrink10stretch1

ss

ss

Note, there’s a translation applied here to make thingseasier to see

Page 8: Evening’s Goals

8COEN 290 - Computer Graphics I

glScale[fd]()

glScalef( sx, sy, sz );

1000

000

000

000

),,(z

y

x

zyxs

s

s

sssS

Page 9: Evening’s Goals

9COEN 290 - Computer Graphics I

Rotation

Rotate coordinate system about an axis in space

Note, there’s a translation applied here to make thingseasier to see

Page 10: Evening’s Goals

10

COEN 290 - Computer Graphics I

glRotate[fd]()

glRotatef( angle, x, y, z );

0

00

xyxz

yzS

zyxu

zyxv

vv

SuuIuuM tt )sin())(cos(

1000

0

0

0

vR M

Page 11: Evening’s Goals

11

COEN 290 - Computer Graphics I

Some Additional Rotation Examples

10000)cos()sin(00)sin()cos(00001

xR

1000

0)cos(0)sin(

0010

0)sin(0)cos(

yR

Page 12: Evening’s Goals

12

COEN 290 - Computer Graphics I

Shear

Scaling in one dimension depends on another

For example

No OpenGL command• load custom matrix

zfyfxx xzxy

Page 13: Evening’s Goals

13

COEN 290 - Computer Graphics I

Shear

Making a shear matrix

1000

01

01

01

zyzx

yzyx

xzxy

ff

ff

ff

H

Page 14: Evening’s Goals

14

COEN 290 - Computer Graphics I

Other OpenGL Matrix Commands

glMultMatrix( m )• multiples the current matrix by m

glLoadMatrix( m )• replaces the current matrix by m

glLoadIdentity()• replace the current matrix with an identity

matrix

Page 15: Evening’s Goals

15

COEN 290 - Computer Graphics I

OpenGL Matrix Format

GLfloat m[16];

151173

141062

13951

12840

mmmmmmmmmmmmmmmm

Page 16: Evening’s Goals

16

COEN 290 - Computer Graphics I

Modeling Transforms and our Pipeline

WorldCoordinates

EyeCoordinates

ClipCoordinates

NDC’s

PerspectiveDivideProjection

Transformation

ModelCoordinates

ModelingTransformations

Page 17: Evening’s Goals

17

COEN 290 - Computer Graphics I

Using Multiple Modeling Transforms

Multiple modeling transforms form a composite modeling transform

Individual transform matrices are multiplied together• for example

),,()(),,( zyxvzyx sssSRtttTM

Page 18: Evening’s Goals

18

COEN 290 - Computer Graphics I

Multiplying Matrices

Matrix multiplication is not commutative• in general,• order of operations is important

OpenGL multiples matrices on the right

BAAB

DCBADCBA

Page 19: Evening’s Goals

19

COEN 290 - Computer Graphics I

Independent vs. Dependent Transforms

Every modeling transform affects the model coordinate system

Transformations accumulate• we record every transformation every made• to undo a transform, we’d need to do the

inverse transform– this is very inconvenient

Page 20: Evening’s Goals

20

COEN 290 - Computer Graphics I

A Stack Based Solution

We create a stack containing matrices Any transform multiples the top of stack Push makes a copy and pushes it onto the

stack Pop discards the top of stack

Page 21: Evening’s Goals

21

COEN 290 - Computer Graphics I

A Stack Based Solution ( cont. )

wzyx

ProjectionTransformation

1wzwywx

ModelingTransformations

Page 22: Evening’s Goals

22

COEN 290 - Computer Graphics I

OpenGL Matrix Stack Commands

Top of stack matrix is called the current matrix

glPushMatrix()• copy the current matrix and pushes it

glPopMatrix()• pop the current matrix

Page 23: Evening’s Goals

23

COEN 290 - Computer Graphics I

OpenGL Matrix Stacks

Why multiple matrix stacks?• certain techniques are done in different spaces

glMatrixMode( mode )• choose which stack to manipulate

–GL_MODELVIEW–GL_PROJECTION

Page 24: Evening’s Goals

24

COEN 290 - Computer Graphics I

Current Transformation Pipeline

WorldCoordinates

EyeCoordinates

ClipCoordinates

NDC’s

PerspectiveDivideProjection

Transformation

ModelCoordinates

ModelCoordinates

ModelCoordinates

ModelingTransformations

Page 25: Evening’s Goals

25

COEN 290 - Computer Graphics I

Eye coordinates are nice, but ...

Eye coordinates are restrictive• eye’s positioned at the origin• looking down the -z axis

What if we want to look at the scene from somewhere else?• use a viewing transformation

Page 26: Evening’s Goals

26

COEN 290 - Computer Graphics I

Viewing Transformations

Reorient world coordinates to match eye coordinates

Basically just a modeling transform• affects the entire scene• usually a translation and a rotation

Usually set up after the projection transform, but before any modeling transforms

Page 27: Evening’s Goals

27

COEN 290 - Computer Graphics I

The Simplest Viewing Transform

“Push” the origin into the viewing frustum

z

near

far

y y

farneartz 21

Page 28: Evening’s Goals

28

COEN 290 - Computer Graphics I

polarview()

Useful if you want to view an entire objectpolarview( dist, elev, azim, twist ){glTranslatef( 0, 0, -dist );glRotatef( -twist, 0, 0, 1 );glRotatef( -elev, 1, 0, 0 );glRotatef( azim, 0, 0, 1 );}• update elev and azim for interactive viewing

Page 29: Evening’s Goals

29

COEN 290 - Computer Graphics I

Transforming World to Eye Coordinates

Viewing transformgluLookAt( eyex, eyey, eyez,

lookx, looky, lookz,

upx, upy, upz ); Creates an orthonormal basis

• a set of linearly independent vectors of unit length

Page 30: Evening’s Goals

30

COEN 290 - Computer Graphics I

Creating an Orthonormal Basis

1000000

ˆˆˆ

ˆ

ˆ

ˆ

ˆ

zyx

zyx

zyx

upn

upn

eyelook

eyelook

nnnvvvuuu

nuv

u

n

Page 31: Evening’s Goals

31

COEN 290 - Computer Graphics I

gluLookAt( eyex, eyey, eyez,

lookx, looky, lookz,

upx, upy, upz ){

/* Create matrix m */ glMultMatrixf( m ); glTranslatef( -eyex, -eyey, -eyez );}

Page 32: Evening’s Goals

32

COEN 290 - Computer Graphics I

Our Final Transformation Pipeline

WorldCoordinates

EyeCoordinates

ClipCoordinates

NDC’s

PerspectiveDivideProjection

Transformation

ViewingTransformation

ModelCoordinates

ModelCoordinates

ModelCoordinates

ModelingTransformations

Page 33: Evening’s Goals

33

COEN 290 - Computer Graphics I

Retrieving Matrix information

GLfloat m[16];glGetFloatv( which, m );

which is which matrix stack to access• GL_MODELVIEW_MATRIX• GL_PROJECTION_MATRIX

Page 34: Evening’s Goals

34

COEN 290 - Computer Graphics I

Putting it all Together

General flow of transformations projection transformation viewing transformation push matrix modeling transformation render pop matrix goto as necessary