37
© 2015 Kavita Bala • Cornell CS4620 Fall 2015 • Lecture 12 3D Transformations and Perspective CS 4620 Lecture 12 1

3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

3D Transformations and Perspective

CS 4620 Lecture 12

1

Page 2: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Announcements

• Demos on Monday– If you can’t make it, send mail to [email protected]– Post to piazza

• A3 out tonight– Written and code due on Thu before break– Grading will be after break– Start early

• Hierarchies, transformations

• 4621 class today. PPA1 out tonight

2

Page 3: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

General Rotation Matrices

• A rotation in 2D is around a point• A rotation in 3D is around an axis

– so 3D rotation is w.r.t a line, not just a point

2D 3D

3

Page 4: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Specifying Rotations

• Many ways to specify rotation– Indirectly through frame transformations– Directly through

• Euler angles: 3 angles about 3 axes• (Axis, angle) rotation: based on Euler’s theorem• Quaternions

4

Page 5: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12 5

Page 6: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Building general rotations

• Construct frame and change coordinates– choose p, u, v, w to be orthonormal frame with p and u

matching the rotation axis

– apply similarity transform T = F Rx(θ ) F–1

– interpretation: move to x axis, rotate, move back– interpretation: rewrite u-axis rotation in new coordinates– (each is equally valid)

– (note above is linear transform; add affine coordinate)6

Page 7: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Derivation of General Rotation Matrix

7

• Axis angle rotation

Page 8: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Axis-angle ONB

8

Page 9: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Axis-angle rotation

9

Page 10: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Rotation Matrix for Axis-Angle

10

Page 11: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Transforming normal vectors

• Transforming surface normals– differences of points (and therefore tangents) transform OK– normals do not. Instead, use inverse transpose matrix

11

Page 12: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Perspective

Page 13: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Parallel projection

• To render an image of a 3D scene, we project it onto a plane

• Simplest kind of projection is parallel projection

13

imagescene

projectionplane

Page 14: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Classical projections—parallel

• Emphasis on cube-like objects– traditional in mechanical and architectural drawing

Planar Geometric Projections

Parallel

Oblique

MultiviewOrthographic

Perspective

One-pointTwo-pointThree-pointOrthographic

Axonometric

[aft

er C

arlb

om &

Pac

iore

k 78

]

14

Page 15: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Orthographic

[Car

lbom

& P

acio

rek

78]

15

Page 16: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Orthographic

– projection plane parallel to a coordinate plane– projection direction perpendicular to projection plane

[Car

lbom

& P

acio

rek

78]

16

Page 17: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Off-axis parallel

axonometric: projection plane perpendicular to projection direction but not parallel to coordinate planes

oblique: projection plane parallel to a coordinate plane but not perpendicular to projection direction

[Car

lbom

& P

acio

rek

78]

17

Page 18: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

“Orthographic” projection

• In graphics usually we lump axonometric with orthographic– projection plane

perpendicular toprojection direction

– image heightdetermines size of objects in image

18

Page 19: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

View volume: orthographic

19

Page 20: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Oblique projection

• View direction no longer coincides with projection plane normal (one more parameter)– objects at different distances

still same size– objects are shifted

in the image depending on their depth

20

Page 21: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Specifying views in a ray tracer

21

<camera type="ParallelCamera"> <viewPoint>2.0 4.0 7.0</viewPoint> <viewDir>–2.0 –4.0 –7.0</viewDir> <viewUp>0.0 1.0 0.0</viewUp> <viewWidth>8.0</viewWidth> <viewHeight>4.5</viewHeight> </camera> <camera type="ParallelCamera"> <viewPoint>2.0 4.0 7.0</viewPoint> <viewDir>–2.0 –4.0 –7.0</viewDir> <projNormal>0.0 0.0 1.0</projNormal> <viewUp>0.0 1.0 0.0</viewUp> <viewWidth>8.0</viewWidth> <viewHeight>4.5</viewHeight> </camera>

Page 22: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

History of projection

• Ancient times: Greeks wrote about laws of perspective• Renaissance: perspective is adopted by artists

Duccio c. 130822

Page 23: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

History of projection

• Later Renaissance: perspective formalized precisely

da Vinci c. 149823

Page 24: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Plane projection in drawingso

urce

unk

now

n

24

Page 25: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Plane projection in photography

• This is another model for what we are doing– applies more directly in realistic rendering

25

[Sou

rce

unkn

own]

Page 26: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Classical projections—perspective

• Emphasis on cube-like objects– traditional in mechanical and architectural drawing

Planar Geometric Projections

Parallel

Oblique

MultiviewOrthographic

Perspective

One-point Two-point Three-pointOrthographic

Axonometric [a

fter

Car

lbom

& P

acio

rek

78]

26

Page 27: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Perspective projection (normal)

• Perspective is projection by lines through a point; • “normal” = plane perpendicular to view direction

– magnification determined by:• image height• object depth• image plane distance

– f.o.v. α = 2 atan(h/(2d))– y’ = d y / z

– “normal” case correspondsto common types of cameras

27

Page 28: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

View volume: perspective

28

Page 29: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Shifted perspective projection

• Perspective but with projection plane not perpendicular to view direction– additional parameter:

projection plane normal– exactly equivalent to

cropping out an off-centerrectangle from a larger“normal” perspective

– corresponds to view camera in photography

29

Page 30: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Generating eye rays—perspective

• Use window analogy directly• Ray origin (constant): viewpoint• Ray direction (varying): toward pixel position on viewing

window

30

viewing ray

pixelposition

viewingwindow

viewpoint

Page 31: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Generating eye rays—perspective

• Positioning the view rectangle– establish three vectors to be

camera basis: u, v, w – view rectangle is parallel

to u–v plane, at w = –d, specified by l, r, t, b

• Generating rays– for (u, v) in [l, r] × [b, t]– ray.origin = e – ray.direction = –d w + u u + v v

31

ue

v

w

Page 32: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Oblique perspective views

• Positioning the view rectangle– establish three vectors to be

camera basis: u, v, w – view rectangle is the same,

but shifted so that the center is in the direction d from e

• Generating rays– for (u, v) in [l, r] × [b, t]– ray.origin = e – ray.direction = d d + u u + v v

32

u

e d

v

w d

Page 33: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Field of view (or f.o.v.)

• The angle between the rays corresponding to opposite edges of a perspective image– simpler to compute for “normal” perspective– have to decide to measure vert., horiz., or diag.

• In cameras, determined by focal length– confusing because of many image sizes– for 35mm format (36mm by 24mm image)

• 18mm = 67° v.f.o.v. — super-wide angle• 28mm = 46° v.f.o.v. — wide angle• 50mm = 27° v.f.o.v. — “normal”• 100mm = 14° v.f.o.v. — narrow angle (“telephoto”)

33

Page 34: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Field of view

• Determines “strength” of perspective effects

close viewpoint wide angle

prominent foreshortening

far viewpoint narrow angle

little foreshortening

[Ans

el A

dam

s]

34

Page 35: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Choice of field of view

• In photography, wide angle lenses are specialty tools– “hard to work with” – easy to create weird-looking

perspective effects

• In graphics, you can type in whatever f.o.v. you want– and people often type in

big numbers!

[Ken

Per

lin]

35

Page 36: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Perspective distortions

• Lengths, length ratios

[Car

lbom

& P

acio

rek

78]

36

Page 37: 3D Transformations and Perspective - Cornell UniversityCornell CS4620 Fall 2015 • Lecture 12 © 2015 Kavita Bala • 3D Transformations and Perspective CS 4620 Lecture 12 1

© 2015 Kavita Bala •Cornell CS4620 Fall 2015 • Lecture 12

Pipeline of transformations

• Standard sequence of transforms

37

7.1. Viewing Transformations 147

object space

world space

camera space

canonicalview volume

scre

en

sp

ace

modelingtransformation

viewporttransformation

projectiontransformation

cameratransformation

Figure 7.2. The sequence of spaces and transformations that gets objects from their

original coordinates into screen space.

space) to camera coordinates or places them in camera space. The projection

transformation moves points from camera space to the canonical view volume.

Finally, the viewport transformation maps the canonical view volume to screen Other names: camera

space is also “eye space”

and the camera

transformation is

sometimes the “viewing

transformation;” the

canonical view volume is

also “clip space” or

“normalized device

coordinates;” screen space

is also “pixel coordinates.”

space.

Each of these transformations is individually quite simple. We’ll discuss them

in detail for the orthographic case beginning with the viewport transformation,

then cover the changes required to support perspective projection.

7.1.1 The Viewport Transformation

We begin with a problemwhose solution will be reused for any viewing condition.

We assume that the geometry we want to view is in the canonical view volume The word “canonical” crops

up again—it means

something arbitrarily

chosen for convenience.

For instance, the unit circle

could be called the

“canonical circle.”

and we wish to view it with an orthographic camera looking in the −z direction.The canonical view volume is the cube containing all 3D points whose Cartesian

coordinates are between −1 and +1—that is, (x, y, z) ∈ [−1, 1]3 (Figure 7.3).We project x = −1 to the left side of the screen, x = +1 to the right side of thescreen, y = −1 to the bottom of the screen, and y = +1 to the top of the screen.

Recall the conventions for pixel coordinates fromChapter 3: each pixel “owns”

a unit square centered at integer coordinates; the image boundaries have a half-

unit overshoot from the pixel centers; and the smallest pixel center coordinates