Viewing/Projections IV Week 4, Fri Feb 2

30
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2007 Tamara Munzner http://www.ugrad.cs.ubc.ca/~cs314/Vj an2007 Viewing/Projections IV Week 4, Fri Feb 2

description

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2007. Viewing/Projections IV Week 4, Fri Feb 2. Reading for Today. FCG Chapter 7 Viewing FCG Section 6.3.1 Windowing Transforms RB rest of Chap Viewing RB rest of App Homogeneous Coords. Reading for Next Time. RB Chap Color FCG Sections 3.2-3.3 - PowerPoint PPT Presentation

Transcript of Viewing/Projections IV Week 4, Fri Feb 2

Page 1: Viewing/Projections IV Week 4, Fri Feb 2

University of British ColumbiaCPSC 314 Computer Graphics

Jan-Apr 2007

Tamara Munzner

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

Viewing/Projections IV

Week 4, Fri Feb 2

Page 2: Viewing/Projections IV Week 4, Fri Feb 2

2

Reading for Today

• FCG Chapter 7 Viewing

• FCG Section 6.3.1 Windowing Transforms

• RB rest of Chap Viewing

• RB rest of App Homogeneous Coords

Page 3: Viewing/Projections IV Week 4, Fri Feb 2

3

Reading for Next Time

• RB Chap Color

• FCG Sections 3.2-3.3

• FCG Chap 20 Color

• FCG Chap 21 Visual Perception

Page 4: Viewing/Projections IV Week 4, Fri Feb 2

4

News

• my office hours reminder (in lab): today 11-12• homework 1 due 3pm in box marked 314

• same hallway as lab

• project 1 due 6pm, electronic handin• no hardcopy required• demo signup sheet going around again

• Mon 1-12; Tue 10-12:30, 4-6; Wed 10-12, 2:30-4• arrive in lab 10 min before for your demo slot• be logged in and ready to go at your time• note to those developing in Windows/Mac

• your program must compile and run on lab machines• test before the last minute, no changes after handin

Page 5: Viewing/Projections IV Week 4, Fri Feb 2

5

Homework 1 News

• don’t forget problem 11 (on back of page)

• Problem 3 is now extra credit• Write down the 4x4 matrix for shearing an object by

2 in y and 3 in z.

Page 6: Viewing/Projections IV Week 4, Fri Feb 2

6

Correction (Transposed Before): 3D Shear

• shear in x• shear due to x

along y and z axes

• shear in y

• shear in z

• general shear

1000

010

001

0001

),(hxz

hxyhxzhxyxshear

1000

010

0010

001

),(hyz

hyx

hyzhyxyshear

1000

0100

010

001

),(hzy

hzx

hzyhzxzshear

1000

01

01

01

),,,,,(hyzhxz

hzyhxy

hzxhyx

hzyhzxhyzhyxhxzhxyshear

1000

0100

0010

01 szsy

1000

0100

01

0001

szsx

1000

01

0010

0001

sysx

Page 7: Viewing/Projections IV Week 4, Fri Feb 2

7

News

• midterm Friday Feb 9• closed book

• no calculators

• allowed to have one page of notes• handwritten, one side of 8.5x11” sheet

• this room (DMP 301), 11-11:50

• material covered• transformations, viewing/projection

Page 8: Viewing/Projections IV Week 4, Fri Feb 2

8

Projective Rendering Pipeline

OCS - object/model coordinate system

WCS - world coordinate system

VCS - viewing/camera/eye coordinate system

CCS - clipping coordinate system

NDCS - normalized device coordinate system

DCS - device/display/screen coordinate system

OCSOCS O2WO2W VCSVCS

CCSCCS

NDCSNDCS

DCSDCS

modelingmodelingtransformationtransformation

viewingviewingtransformationtransformation

projectionprojectiontransformationtransformation

viewportviewporttransformationtransformation

perspectiveperspectivedividedivide

object world viewing

device

normalizeddevice

clipping

W2VW2V V2CV2C

N2DN2D

C2NC2N

WCSWCS

Page 9: Viewing/Projections IV Week 4, Fri Feb 2

9

NDC to Device Transformation

• map from NDC to pixel coordinates on display• NDC range is x = -1...1, y = -1...1, z = -1...1

• typical display range: x = 0...500, y = 0...300• maximum is size of actual screen• z range max and default is (0, 1), use later for visibility

xxyy

viewportviewportNDCNDC

0 500

300

0

-1

1

1

-1

xx

yy

glViewport(0,0,w,h);glDepthRange(0,1); // depth = 1 by default

Page 10: Viewing/Projections IV Week 4, Fri Feb 2

10

Origin Location

• yet more (possibly confusing) conventions• OpenGL origin: lower left

• most window systems origin: upper left

• then must reflect in y• when interpreting mouse position, have to flip your

y coordinates

xxyy

viewportviewportNDCNDC

0 500

300

0

-1

1

1

-1

xx

yy

Page 11: Viewing/Projections IV Week 4, Fri Feb 2

11

N2D Transformation

• general formulation• reflect in y for upper vs. lower left origin

• scale by width, height, depth

• translate by width/2, height/2, depth/2• FCG includes additional translation for pixel centers at

(.5, .5) instead of (0,0)

xxyy

viewportviewportNDCNDC

0 500

300

0

-1

1

1

-1height

width

xx

yy

Page 12: Viewing/Projections IV Week 4, Fri Feb 2

12

N2D Transformation

12

)1(2

1)1(2

1)1(

11000

0100

0010

0001

1000

02

00

002

0

0002

10002

100

2

1

2010

2

1

2001

1 N

N

N

N

N

N

D

D

D

zdepth

yheight

xwidth

z

y

x

depth

height

width

depth

height

width

z

yx

xxyy

viewportviewportNDCNDC

0 500

300

0

-1

1

1

-1height

width

xx

yy

Page 13: Viewing/Projections IV Week 4, Fri Feb 2

13

Device vs. Screen Coordinates

• viewport/window location wrt actual display not available within OpenGL• usually don’t care

• use relative information when handling mouse events, not absolute coordinates

• could get actual display height/width, window offsets from OS

• loose use of terms: device, display, window, screen...

xx

displaydisplayviewportviewport

01024

768

0

300

500

displayheight

display width

x offset

y offsetyy

viewportviewport

xx00 yy

Page 14: Viewing/Projections IV Week 4, Fri Feb 2

14

Projective Rendering Pipeline

OCS - object coordinate system

WCS - world coordinate system

VCS - viewing coordinate system

CCS - clipping coordinate system

NDCS - normalized device coordinate system

DCS - device coordinate system

OCSOCS WCSWCS VCSVCS

CCSCCS

NDCSNDCS

DCSDCS

modelingmodelingtransformationtransformation

viewingviewingtransformationtransformation

projectionprojectiontransformationtransformation

viewportviewporttransformationtransformation

alter walter w

/ w/ w

object world viewing

device

normalizeddevice

clipping

perspectiveperspectivedivisiondivision

glVertex3f(x,y,z)glVertex3f(x,y,z)

glTranslatef(x,y,z)glTranslatef(x,y,z)glRotatef(a,x,y,z)glRotatef(a,x,y,z)........

gluLookAt(...)gluLookAt(...)

glFrustum(...)glFrustum(...)

glutInitWindowSize(w,h)glutInitWindowSize(w,h)glViewport(x,y,a,b)glViewport(x,y,a,b)

O2WO2W W2VW2V V2CV2C

N2DN2D

C2NC2N

Page 15: Viewing/Projections IV Week 4, Fri Feb 2

15

Coordinate Systemsviewing

(4-space, W=1)

clipping

(4-space parallelepiped, with COP moved backwards to infinity

normalized device

(3-space parallelepiped)

device

(3-space parallelipiped)

projection matrix

divide by w

scale &

translate

projection matrix

Page 16: Viewing/Projections IV Week 4, Fri Feb 2

16

Perspective To NDCS Derivation

x

z

NDCS

y

(-1,-1,-1)

(1,1,1)x=left

x=right

y=top

y=bottom z=-near z=-farx

VCS

y

z

Page 17: Viewing/Projections IV Week 4, Fri Feb 2

17

Perspective Derivation

simple example earlier:simple example earlier:

complete: shear, scale, projection-normalizationcomplete: shear, scale, projection-normalization

10100

00

00

00

'

'

'

'

z

y

x

DC

BF

AE

w

z

y

x

10/100

0100

0010

0001

'

'

'

'

z

y

x

dw

z

y

x

Page 18: Viewing/Projections IV Week 4, Fri Feb 2

18

Perspective Derivation

earlier:earlier:

complete: shear, scale, projection-normalizationcomplete: shear, scale, projection-normalization

10100

00

00

00

'

'

'

'

z

y

x

DC

BF

AE

w

z

y

x

10/100

0100

0010

0001

'

'

'

'

z

y

x

dw

z

y

x

Page 19: Viewing/Projections IV Week 4, Fri Feb 2

19

Perspective Derivation

earlier:earlier:

complete: shear, scale, projection-normalizationcomplete: shear, scale, projection-normalization

10100

00

00

00

'

'

'

'

z

y

x

DC

BF

AE

w

z

y

x

10/100

0100

0010

0001

'

'

'

'

z

y

x

dw

z

y

x

Page 20: Viewing/Projections IV Week 4, Fri Feb 2

20

Perspective Derivation

10100

00

00

00

'

'

'

'

z

y

x

DC

BF

AE

w

z

y

x

zw

DCzz

BzFyy

AzExx

'

'

'

'

,)(

1 ,1 ,1

,1 ,'

1 ,''

' ,'

Bnear

topFB

z

yF

z

zB

z

yF

z

BzFy

w

BzFy

w

BzFy

w

yBzFyy

1'/'

1'/'

1'/'

1'/'

1'/'

1'/'

wzfarz

w znear z

wybottomy

w ytop y

wxrightx

w xleft x

Bnear

topF 1

Page 21: Viewing/Projections IV Week 4, Fri Feb 2

21

Perspective Derivation

• similarly for other 5 planes

• 6 planes, 6 unknowns

0100

2)(00

02

0

002

nf

fn

nf

nfbt

bt

bt

nlr

lr

lr

n

Page 22: Viewing/Projections IV Week 4, Fri Feb 2

22

Perspective Example

tracks in VCS: left x=-1, y=-1 right x=1, y=-1

view volume left = -1, right = 1 bot = -1, top = 1 near = 1, far = 4

z=-1

z=-4

x

zVCS

top view

-1-1 1

1

-1NDCS

(z not shown)

realmidpoint

0 xmax-10DCS

(z not shown)

ymax-1

x=-1 x=1

Page 23: Viewing/Projections IV Week 4, Fri Feb 2

23

Perspective Example

0100

2)(00

02

0

002

nf

fn

nf

nfbt

bt

bt

nlr

lr

lr

n

view volume• left = -1, right = 1• bot = -1, top = 1• near = 1, far = 4

0100

3/83/500

0010

0001

Page 24: Viewing/Projections IV Week 4, Fri Feb 2

24

Perspective Example

1

1

1

1

3/83/5

1

1

3/83/5

1

1

VCS

VCS

VCS z

z

z

VCSNDCS

VCSNDCS

VCSNDCS

zz

zy

zx

3

8

3

5

/1

/1

/ w/ w

Page 25: Viewing/Projections IV Week 4, Fri Feb 2

25

OpenGL Example

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

gluPerspective( 45, 1.0, 0.1, 200.0 );

glMatrixMode( GL_MODELVIEW );

glLoadIdentity();

glTranslatef( 0.0, 0.0, -5.0 );

glPushMatrix()

glTranslate( 4, 4, 0 );

glutSolidTeapot(1);

glPopMatrix();

glTranslate( 2, 2, 0);

glutSolidTeapot(1);OCS2OCS2

O2WO2W VCSVCSmodelingmodeling

transformationtransformationviewingviewing

transformationtransformation

projectionprojectiontransformationtransformation

object world viewingW2VW2V V2CV2CWCSWCS

• transformations that are applied first are specified last

OCS1OCS1

WCSWCS

VCSVCS

W2OW2O

W2OW2O

CCSCCSclipping

CCSCCS

OCSOCS

Page 26: Viewing/Projections IV Week 4, Fri Feb 2

26

Projection Taxonomyplanarplanar

projectionsprojections

perspective:perspective:1,2,3-point1,2,3-point

parallelparallel

obliqueobliqueorthographicorthographic

cabinetcabinet cavaliercavalier

top,top,front,front,sideside

axonometric:axonometric:isometricisometricdimetricdimetrictrimetrictrimetric

http://ceprofs.tamu.edu/tkramer/ENGR%20111/5.1/20

• perspective: projectors converge• orthographic, axonometric:

projectors parallel and perpendicular to projection plane

• oblique: projectors parallel, but not perpendicular to projection plane

Page 27: Viewing/Projections IV Week 4, Fri Feb 2

27

Perspective Projections• projectors converge on image plane • select how many vanishing points

• one-point: projection plane parallel to two axes• two-point: projection plane parallel to one axis• three-point: projection plane not parallel to any axis

one-pointone-pointperspectiveperspective

two-pointtwo-pointperspectiveperspective

three-pointthree-pointperspectiveperspective

Tuebingen demo: vanishingpoints

Page 28: Viewing/Projections IV Week 4, Fri Feb 2

28

Orthographic Projections

• projectors parallel, perpendicular to image plane• image plane normal parallel to one of principal axes• select view: top, front, side• every view has true dimensions, good for measuring

http://www.cs.fit.edu/~wds/classes/cse5255/thesis/images/proj/orthoProj.gif

Page 29: Viewing/Projections IV Week 4, Fri Feb 2

29

Axonometric Projections• projectors parallel, perpendicular to image plane• image plane normal not parallel to axes• select axis lengths• can see many sides at once

http://ceprofs.tamu.edu/tkramer/ENGR%20111/5.1/20

Page 30: Viewing/Projections IV Week 4, Fri Feb 2

30

Oblique Projections

xx

yy

zz

cavaliercavalier

dd

dd

xx

yy

zz

cabinetcabinet

dd

d / 2d / 2

• projectors parallel, oblique to image plane

• select angle between front and z axis• lengths remain constant

• both have true front view• cavalier: distance true

• cabinet: distance half

Tuebingen demo: oblique projections