viewing doug james’ cg slides, rich riesenfeld’s cg slides, shirley, fundamentals of computer...

44
Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia Engineering

Post on 21-Dec-2015

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ViewingViewing

Doug James’ CG Slides, Rich Riesenfeld’s CG Slides,

Shirley, Fundamentals of Computer Graphics, Chap 7

Wen-Chieh (Steve) Lin

Institute of Multimedia Engineering

Page 2: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 2

Getting Geometry on the ScreenGetting Geometry on the Screen

Given geometry in the world coordinate system, how do we get it to the display?

• Transform to camera coordinate system

• Transform (warp) into canonical view volume

• Clip

• Project to display coordinates

• Rasterize

Page 3: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 3

Vertex Transformation PipelineVertex Transformation Pipeline

Page 4: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 4

Vertex Transformation PipelineVertex Transformation Pipeline

glMatrixMode(GL_MODELVIEW)

glMatrixMode(GL_PROJECTION)

glViewport(…)

Page 5: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 5

OpenGL Transformation OverviewOpenGL Transformation Overview

glMatrixMode(GL_MODELVIEW)

gluLookAt(…)

glMatrixMode(GL_PROJECTION)

glFrustrum(…)

gluPerspective(…)

glOrtho(…)

glViewport(x,y,width,height)

Page 6: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 6

Viewing and ProjectionViewing and Projection

• Our eyes collapse 3-D world to 2-D retinal image (brain then has to reconstruct 3D)

• In CG, this process occurs by projection

• Projection has two parts:

– Viewing transformations: camera position and direction

– Perspective/orthographic transformation: reduces 3-D to 2-D

• Use homogeneous transformations

Page 7: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 7

Pinhole OpticsPinhole Optics

• Stand at point P, and look through the hole—anything within the cone is visible, and nothing else is

• Reduce the hole to a point - the cone becomes a ray

• Pin hole is the focal point, eye point or center of

projection

P

F

Page 8: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 8

Perspective Projection of a PointPerspective Projection of a Point

• View plane or image plane - a plane behind the

pinhole on which the image is formed

– sees anything on the line (ray) through the pinhole F

– a point W projects along the ray through F to appear at I (intersection of WF with image plane)

F

Image

WorldI

W

Page 9: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 9

Image FormationImage Formation

• Projecting a shape– project each point onto the image plane– lines are projected by projecting end points only

F

Image

World

F

Image

World

I

W

Note: Since we don't want the image to be inverted, from now on we'll put F behind the image plane.

Note: Since we don't want the image to be inverted, from now on we'll put F behind the image plane.

Camera lens

Page 10: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 10

Orthographic ProjectionOrthographic Projection

• When the focal point is at infinity the rays are parallel and orthogonal to the image plane

• When xy-plane is the image plane (x,y,z) -> (x,y,0) front orthographic view

Image

World

F

Page 11: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 11

Multiview Orthographic ProjectionMultiview Orthographic Projection

• Good model for CAD and architecture. No perspective effects.

front

sidetop

Page 12: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 12

Assume view transformation is doneAssume view transformation is done

• Let’s start with a simple case where the camera is put at the origin, and looks along the negative z-axis!

• Simple “canonical” views:

orthographic projection perspective projection

Page 13: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 13

Orthographic Viewing CubeOrthographic Viewing Cube

• (l,b,n) = (left, bottom, near)

• (r,t,f) = (right, top, far)

Page 14: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 14

Orthographic ProjectionOrthographic Projection

• Map orthographic viewing cube to the canonical view volume

• 3D window transformation

• [l, r] x [b, t] x [f, n] [-1, 1]x[-1, 1]x[-1,1]

Page 15: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 15

Orthographic Projection (cont.)Orthographic Projection (cont.)

• 3D window transform (last class)

• [l, r] x [b, t] x [f, n] [-1, 1]x[-1, 1]x[-1,1]

• zcanonical is ignored

110002

100

2010

2001

1000

02

00

002

0

0002

1

z

y

x

fn

tb

rl

fn

bt

lr

z

y

x

canonical

canonical

canonical

Page 16: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 16

Map Image Plane to Screen Map Image Plane to Screen

(1,1)

(-1,-1)

x

y

Image Plane Screen

x

y

y

x

(nx, ny)

Page 17: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 17

Map Image Plane to Screen Map Image Plane to Screen

• If y-axis of screen coord. points downward

• [-1,1] x [-1, 1] [-0.5, nx-0.5] x [ny-0.5, -0.5]

1100

010

001

100

02

0

002

1002

110

2

101

canonical

canonicaly

x

y

x

pixel

pixel

pixel

y

xn

n

n

n

z

y

x

reflectionscaletranslation

Page 18: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 18

Orthographic Projection MatrixOrthographic Projection Matrix

• Put everything together

10002

100

2010

2001

1000

02

00

002

0

0002

1000

01002

10

20

2

100

2

fn

tb

rl

fn

bt

lr

nn

nn

yy

xx

oM

11

z

y

x

z

y

x

canonical

pixel

pixel

oM

Page 19: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 19

Arbitrary Viewing PositionArbitrary Viewing Position

• What if we want the camera somewhere other than the canonical location?

• Alternative #1: derive a general projection matrix. (hard)

• Alternative #2: transform the world so that the camera is in canonical position and orientation (much simpler)

Page 20: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 20

Camera Control ValuesCamera Control Values

• All we need is a single translation and angle-axis rotation (orientation), but...

• Good animation requires good camera control--we need better control knobs

• Translation knob - move to the lookfrom point

• Orientation can be specified in several ways:

– specify camera rotations

– specify a lookat point (solve for camera rotations)

Page 21: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 21

A Popular View Specification ApproachA Popular View Specification Approach

• Focal length, image size/shape and clipping planes are in the perspective transformation

• In addition:

– lookfrom: where the focal point (camera) is

– lookat:the world point to be centered in the image

• Also specify camera orientation about the lookfrom-lookfat axis

Page 22: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 22

Implementing lookat/lookfrom/vup viewing schemeImplementing lookat/lookfrom/vup viewing scheme

• Translate by lookfrom, bring focal point to origin

• Rotate lookfrom - lookat to the z-axis with matrix R:

– w = (lookfrom-lookat) (normalized) and z = [0,0,1]

– rotation axis: a = (w × z)/|w × z|

– rotation angle: cosθ = w•z and sinθ = |w × z|

• Rotate about z-axis to get vup parallel to the y-axis

Page 23: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 23

It's not so complicated…It's not so complicated…

Translate LOOKFROM to the origin

Multiply by the projection matrix and everything will be in the canonical camera position

Rotate the view vector(lookfrom - lookat) ontothe z-axis.

Rotate about z to bring vup to y-axis

START HEREw

lookfrom

vup

x

y

z

y

x

x

x

y

y

z

z

z

Page 24: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 24

Translate Camera Frame Translate Camera Frame

• Let e=(ex, ey, ez) be the “lookfrom” position

Translate LOOKFROM to the origin

START HEREw

lookfrom

vup

x

y

z

xy

z

0000

100

010

001

z

y

x

e

e

e

tM

Page 25: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 25

Rotate Camera Frame Rotate Camera Frame

• You can derive these two rotation matrices based on what you learned in the last class

Translate LOOKFROM to the origin

Rotate the view vector(lookat -lookfrom) ontothe z-axis.

Rotate about z to bring vup to y-axis

x

y

z

yx

x

y

z

z

Page 26: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 26

Rotate Camera Frame (cont.)Rotate Camera Frame (cont.)

• Alternatively, we can view these two rotations as a single rotation that aligns u-v-w-axes to x-y-z-axes!

xy

zw

v Rux Rvy Rwz

wvu

wvu

wvu

zzz

yyy

xxx

R

100

010

001

www

vvv

uuu

wvu

wvu

wvu

zyx

zyx

zyx

zzz

yyy

xxx1

Rw: lookat – lookfromv: view up directionu = v x w

wvu

wvu

wvu

zzz

yyy

xxx

wvu

wvu

wvu

zzz

yyy

xxx

Page 27: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 28

Recall Global vs. Local Coordinate…Recall Global vs. Local Coordinate…

• x, y, u, v, o, e are all vectors in global systemyxop pppp yxyx ),(

vuep pppp vuvu ),(

11

0

0

100

10

01

1p

p

e

e

p

p

v

u

y

x

y

x

vu

1100

10

01

1001p

p

e

eT

T

p

p

y

x

y

x

v

u

v

u

In global coord. (xp,yp) In local coord. (up,vp)

Page 28: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 29

Think about 3D case ….Think about 3D case ….

• Given two coordinate frames, how do you represent a vector specified in one frame in the other frame?

e

u

v

w

X

Y

Z

P

11p

p

p

p

p

p

w

v

u

z

y

x

11p

p

p

p

p

p

z

y

x

w

v

u

?

?

Page 29: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 30

Viewing TransformationViewing Transformation

• Put translation and rotation together

10001000

100

010

001

1000

0

0

0

ewww

evvv

euuu

e

e

e

www

vvv

uuu

v zzyx

yzyx

xzyx

z

y

x

zyx

zyx

zyx

tRMM

11p

p

p

p

p

p

z

y

x

w

v

u

vM

world coordinatelocal coordinate

e

u

v

w

X

Y

Z

P

Page 30: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 31

Orthographic Projection SummaryOrthographic Projection Summary

Given 3D geometry (a set of points a)

• Compute view transformation Mv

• Compute orthographic projection Mo

• Compute M = MoMv

• For each point ai, compute p = Mai

10002

100

2010

2001

1000

02

00

002

0

0002

1000

01002

10

20

2

100

2

fn

tb

rl

fn

bt

lr

nn

nn

yy

xx

oM

Page 31: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 32

A Simple Perspective CameraA Simple Perspective Camera

• Canonical case:– camera looks along the z-axis (toward negative z-axis)

– focal point is the origin

– image plane is parallel to the xy-plane at distance d

– We call d the focal length, mainly for historical reasons

Image plane

Center of projection

Page 32: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 33

Geometry Eq. for Perspective ProjectionGeometry Eq. for Perspective Projection

• Diagram shows y-coordinate, x-coordinate is similar

• Point (x,y,z) projects to

view

pla

nee g

z

y

ys

d

yz

dys

),,( dyz

dx

z

d

e: eye positiong: gaze direction

Page 33: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 34

Perspective Projection MatrixPerspective Projection Matrix

• Projection using homogeneous coordinates:

– transform (x,y,z) to

• 2-D image point:– discard third coordinate

– apply viewport transformation to obtain physical pixel coordinates

),,( dyz

dx

z

d

z

dz

dy

dx

z

y

x

d

d

d

10100

000

000

000

),,( dyz

dx

z

d

Divide by 4th coordinate(the “w” coordinate)

Page 34: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 35

View VolumeView Volume

• Pyramid in space defined by focal point and window in the image plane (assume window mapped to viewport)

• Defines visible region of space

• Pyramid edges are clipping planes

Page 35: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 36

View FrustumView Frustum

• Truncated pyramid with near and far clipping planes

– Why far plane? Allows z to be scaled to a limited fixed-point value (z-buffering)

– Why near plane? Prevent points behind the camera being seen

Page 36: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 37

Why Canonical View Volume?Why Canonical View Volume?

• Rather than derive a different projection matrix for each type of projection, we can convert all projections to orthogonal projections with the default view volume

• This strategy allows us to use standard transformations in the pipeline and makes for efficient clipping

Page 37: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 39

Taking Clipping into Account Taking Clipping into Account

• After the view transformation, a simple projection and viewport transformation can generate screen coordinate.

• However, projecting all vertices are usually unnecessary.

• Clipping with 3D volume.

• Associating projection with clipping and view volume normalization.

Page 38: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 40

Normalizing the Viewing FrustumNormalizing the Viewing Frustum

• Solution: transform frustum to a cube before clipping

• Converts perspective frustum to orthographic frustum• This is yet another homogeneous transform!

Page 39: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 41

Map Perspective View Volume to Orthographic View Volume Map Perspective View Volume to Orthographic View Volume

• We already know how to map orthographic view volume to canonical view volume

• Set view plane at the near plane

Page 40: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 42

Map Perspective View Volume to Orthographic View VolumeMap Perspective View Volume to Orthographic View Volume

• Map [x,y,n] to [x, y, n]

• Map [xf/n,yf/n,f] to [x, y, f]

01

00

00

0010

0001

n

fn

fnpM

Page 41: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 43

Projection Matrix is not uniqueProjection Matrix is not unique

• Mp is not unique

11

'

'

'

z

y

x

h

h

hz

hy

hx

z

y

x

pp MM

0100

00

000

000

01

00

00

0010

0001

nffn

n

n

n

fn

fnnn pp MM

Page 42: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 44

Properties of Perspective TransformProperties of Perspective Transform

• Lines and planes are preserved

• Parallel lines (not parallel to the projection plan) won’t be parallel after transform

– vanishing point: parallel lines intersect at the vanishing point

vanishing point

Page 43: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 45

Orthographic Projection SummaryOrthographic Projection Summary

Given 3D geometry (a set of points a)

• Compute view transformation Mv

• Compute orthographic projection Mo

• Compute M = MoMv

• For each point ai, compute p = Mai

10002

100

2010

2001

1000

02

00

002

0

0002

1000

01002

10

20

2

100

2

fn

tb

rl

fn

bt

lr

nn

nn

yy

xx

oM

Page 44: Viewing Doug James’ CG Slides, Rich Riesenfeld’s CG Slides, Shirley, Fundamentals of Computer Graphics, Chap 7 Wen-Chieh (Steve) Lin Institute of Multimedia

ILE5014 Computer Graphics 10F 46

Perspective Projection SummaryPerspective Projection Summary

Given 3D geometry (a set of points a)

• Compute view transformation Mv

• Map perspective to orthographic Mp

• Compute orthographic projection Mo

• Compute M = MoMpMv

• For each point ai, compute p = Mai