31
Cornell CS4620 Fall 2015 • Lecture 15 3D Viewing and Rasterization CS 4620 Lecture 15 1 © 2015 Kavita Bala w/ prior instructor Steve Marschner •

3D Viewing and Rasterization - Cornell University Viewing and Rasterization ... Recall the conventions for pixel coordinates from Chapter 3: ... –1) • Perspective matrix, P

Embed Size (px)

Citation preview

Cornell CS4620 Fall 2015 • Lecture 15

3D Viewing and Rasterization

CS 4620 Lecture 15

1© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Announcements

• A3 due next Thu– Will send mail about grading once finalized

• No 4621 class today

2© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Plane projection in drawingso

urce

unk

now

n

3© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Pipeline of transformations

• Standard sequence of transforms

4© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

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

Cornell CS4620 Fall 2015 • Lecture 15

Orthographic transformation chain

• Start with coordinates in object’s local coordinates

• Transform into world coords (modeling transform, Mm)

• Transform into eye coords (camera xf., Mcam = Fc–1)

• Orthographic projection, Morth

• Viewport transform, Mvp

5© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

⌥⌥⇧

xs

ys

zc

1

��⌃ =

⌥⌥⇧

nx2 0 0 nx�1

2

0 ny

2 0 ny�12

0 0 1 00 0 0 1

��⌃

⌥⌥⇧

2r�l 0 0 � r+l

r�l

0 2t�b 0 � t+b

t�b

0 0 2n�f �n+f

n�f

0 0 0 1

��⌃

�u v w e0 0 0 1

⇥�1

Mm

⌥⌥⇧

xo

yo

zo

1

��⌃

ps = MvpMorthMcamMmpo

Cornell CS4620 Fall 2015 • Lecture 15

Perspective transformation chain

• Transform into world coords (modeling transform, Mm)

• Transform into eye coords (camera xf., Mcam = Fc–1)• Perspective matrix, P• Orthographic projection, Morth

• Viewport transform, Mvp

6© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

ps = MvpMorthPMcamMmpo

⇧⇧⇤

xs

ys

zc

1

⌃⌃⌅ =

⇧⇧⇤

nx2 0 0 nx�1

2

0 ny

2 0 ny�12

0 0 1 00 0 0 1

⌃⌃⌅

⇧⇧⇤

2r�l 0 0 � r+l

r�l

0 2t�b 0 � t+b

t�b

0 0 2n�f �n+f

n�f

0 0 0 1

⌃⌃⌅

⇧⇧⇤

n 0 0 00 n 0 00 0 n + f �fn0 0 1 0

⌃⌃⌅McamMm

⇧⇧⇤

xo

yo

zo

1

⌃⌃⌅

Cornell CS4620 Fall 2015 • Lecture 15 7© 2015 Kavita Bala

w/ prior instructor Steve Marschner • Ray Verrier

Cornell CS4620 Fall 2015 • Lecture 15

Perspective projection

similar triangles:

8© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Homogeneous coordinates revisited

• Perspective requires division– that is not part of affine transformations– in affine, parallel lines stay parallel

• therefore not vanishing point• therefore no rays converging on viewpoint

• “True” purpose of homogeneous coords: projection

9© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Homogeneous coordinates revisited

• Introduced w = 1 coordinate as a placeholder

– used as a convenience for unifying translation with linear

• Can also allow arbitrary w

• http://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/

10© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Implications of w

• All scalar multiples of a 4-vector are equivalent• When w is not zero, can divide by w

– therefore these points represent “normal” affine points

• When w is zero, it’s a point at infinity, a.k.a. a direction– this is the point where parallel lines intersect– can also think of it as the vanishing point

11© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

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

w/ prior instructor Steve Marschner •

Mas

acci

o, T

rini

ty, F

lore

nce

Cornell CS4620 Fall 2015 • Lecture 15

Perspective projection

to implement perspective, just move z to w:

13© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

View volume: perspective

14© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

View volume: perspective (clipped)

15© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Carrying depth through perspective

• Perspective has a varying denominator—can’t preserve depth!

• Compromise: preserve depth on near and far planes

– that is, choose a and b so that z’(n) = n and z’(f) = f.

16© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Official perspective matrix

• Use near plane distance as the projection distance– i.e., d = –n

• Scale by –1 to have fewer minus signs– scaling the matrix does not change the projective

transformation

17© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

P =

⇧⇧⇤

n 0 0 00 n 0 00 0 n + f �fn0 0 1 0

⌃⌃⌅

Cornell CS4620 Fall 2015 • Lecture 15

Perspective projection matrix

• Product of perspective matrix with orth. projection matrix

18© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Mper = MorthP

=

⇧⇧⇧⇤

2r�l 0 0 � r+l

r�l

0 2t�b 0 � t+b

t�b

0 0 2n�f �n+f

n�f

0 0 0 1

⌃⌃⌃⌅

⇧⇧⇤

n 0 0 00 n 0 00 0 n + f �fn0 0 1 0

⌃⌃⌅

=

⇧⇧⇧⇧⇤

2nr�l 0 l+r

l�r 0

0 2nt�b

b+tb�t 0

0 0 f+nn�f

2fnf�n

0 0 1 0

⌃⌃⌃⌃⌅

Cornell CS4620 Fall 2015 • Lecture 15

Perspective transformation chain

• Transform into world coords (modeling transform, Mm)

• Transform into eye coords (camera xf., Mcam = Fc–1)• Perspective matrix, P• Orthographic projection, Morth

• Viewport transform, Mvp

19© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

ps = MvpMorthPMcamMmpo

⇧⇧⇤

xs

ys

zc

1

⌃⌃⌅ =

⇧⇧⇤

nx2 0 0 nx�1

2

0 ny

2 0 ny�12

0 0 1 00 0 0 1

⌃⌃⌅

⇧⇧⇤

2r�l 0 0 � r+l

r�l

0 2t�b 0 � t+b

t�b

0 0 2n�f �n+f

n�f

0 0 0 1

⌃⌃⌅

⇧⇧⇤

n 0 0 00 n 0 00 0 n + f �fn0 0 1 0

⌃⌃⌅McamMm

⇧⇧⇤

xo

yo

zo

1

⌃⌃⌅

Cornell CS4620 Fall 2015 • Lecture 15

OpenGL view frustum: orthographic

Note OpenGL puts the near and far planes at –n and –fso that the user can give positive numbers

20© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

OpenGL view frustum: perspective

Note OpenGL puts the near and far planes at –n and –fso that the user can give positive numbers

21© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Pipeline of transformations

• Standard sequence of transforms

22© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

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

Cornell CS4620 Fall 2015 • Lecture 15

Demo

23© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

CS4620/5620

24© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

The graphics pipeline

• The standard approach to object-order graphics• Many versions exist

– software, e.g. Pixar’s REYES architecture• many options for quality and flexibility

– hardware, e.g. graphics cards in PCs• amazing performance: millions of triangles per frame

• We’ll focus on an abstract version of hardware pipeline

25© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

APPLICATION

COMMAND STREAM

VERTEX PROCESSING

TRANSFORMED GEOMETRY

RASTERIZATION

FRAGMENTS

FRAGMENT PROCESSING

FRAMEBUFFER IMAGE

DISPLAY

you are here

3D transformations; shading

conversion of primitives to pixels

blending, compositing, shading

user sees this

Pipeline overview

26© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

The graphics pipeline

• “Pipeline” because of the many stages– very parallelizable– leads to remarkable performance of graphics cards (many times

the flops of the CPU at ~1/3 the clock speed)– gigaflops (10 to the 9th power), teraflop (12th power), petaflops

(15th power)

• GeForce Titax X, 1 GHz, 3072 CUDA cores

27© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15 28© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

s

29© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15

Supercomputers

• Tianhe-2: 32,000 Xeon + 48,000 Xeon Phi – 33 PFlops

• Current supercompute– IBM Sequoia (petascale) Blue Gene (16 petaflops)

30© 2015 Kavita Bala

w/ prior instructor Steve Marschner •

Cornell CS4620 Fall 2015 • Lecture 15 31© 2015 Kavita Bala

w/ prior instructor Steve Marschner •