22
1 Projection Matrices for Viewing and Clipping 2 Objectives • Derive projection matrice for perspective projections • Introduce camera frame • Clipping • Introduce projection normalization • Camera's in GL

Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

1

Projection Matricesfor Viewing

andClipping

2

Objectives

•Derive projection matrice for

perspective projections

• Introduce camera frame

•Clipping

• Introduce projection normalization

•Camera's in GL

Page 2: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

2

3

Computer Viewing

• Need to build transformation that defines the projection plane based on the chosen projection

4

Orthogonal Projection

Page 3: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

3

5

Orthogonal Projection

6

Orthogonal Projection

• Set z =0

• Equivalent homogeneous coordinate transformation:

1000

0000

0010

0001

Morth

1

pz

py

px

=

1

0

'

'

py

px

Page 4: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

4

7

Oblique Projections

8

Direction of projection dop = (dopx,dopy,dopz)

x

zdop

Lets say we project onto z = 0 plane

Oblique Projections

Page 5: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

5

9

Direction of projection dop = (dopx,dopy,dopz)

x

z

=

1

pz

py

px

1

0

'

'

py

px

dop

1000

0000

0dopy/dopz-10

0-dopx/dopz01

Oblique Projections

note: tan = dopz/dopx

10

•Equivalent to pulling faces in opposite directions

Shear Matrix

Page 6: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

6

11

Shear Matrix

Consider simple shear along x axis

x’ = x + y shy

y’ = yz’ = z

1000

0100

0010

00sh1 y

H =

12

Oblique Projection

=

1000

0000

0dopy/dopz-10

0-dopx/dopz01

H

Projection matrix:

Mprojection = Morth H

xy shear (z value stays unchanged)

Page 7: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

7

13

Simple Perspective

Consider a simple perspective with the COP at (0,0,0), the image plane at z = d

z = d

(0,0,0)

(xo,yo,zo)

(xp,yp,d)

z

14

Simple Perspective

Consider a simple perspective with the COP at (0,0,0), the image plane at z = d

0/100

0100

0010

0001

d

1

pz

py

px

=

1

d

'py

'px

Mpersp

Projection matrix:Mprojection = Mpersp

Page 8: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

8

15

Computer Viewing

There are three aspects of the viewing process:

- Selecting a lensSetting the projection matrix

- Positioning the cameraSetting the view-orientation matrix

- ClippingSetting the view volume

16

Defining and moving the camera

default camera(from transform)

wanted camera

Page 9: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

9

17

Moving the Camera

•We can move the camera to any desired position by a sequence of rotations and translations

•Example: side view-Rotate after moving

camera away from origin

-Camera View matrix, VcamVcam = Rcam Tcam

18

Whole camera transform

•We can put these together as:

Ttotal = Mprojection Vcam

•Note, while Mprojection is different for persp and parallel,they are both projections...

Page 10: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

10

19

Camera coordinates

Camera coordinate frame relative to global from user input

20

OpenGL Orthogonal Viewing

glOrtho(xmin,xmax,ymin,ymax,near,far)glOrtho(left,right,bottom,top,near,far)

near and far measured from camera

Page 11: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

11

21

OpenGL Perspective

glFrustum(xmin,xmax,ymin,ymax,near,far)

22

Using Field of View

•With glFrustum it is often difficult to get the desired view•gluPerpective(fov, aspect, near, far)

often provides a better interface

aspect = w/h

front plane

Page 12: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

12

23

Clipping

Clipping remove unseen geometry

Direct solution:

Solve for intersections

(simultaneous equations)

between lines/edges

at window sides

A point or vertex isvisible if

left < x < rightand

bottom < y < top

Clipping lines

Pipeline, clip each edge of the window separately:

TopClip

BottomClip

RightClip

LeftClip

Page 13: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

13

25

Clip the verticesthat are outside ofthe window andcreate new verticesat window border

Result is still a single polygonbut may have morevertices and an oddshape

Clipping polygons

26

Clipping polygons

TopClip

BottomClip

RightClip

LeftClip

Page 14: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

14

27

Clipping polygons

Bounding box - surrounds each polygon

Accelerations:

28

Clipping polygons

Trivially reject or accept if the bounding box falls completely inside or outside.

Accelerations:

Page 15: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

15

29

Cohen-Sutherland Algorithm

• Region Checks: Trivially reject or accept for clipping

• Each vertex is assigned an 4-bit outcode

- bit 1 - sign of (top - y), point is above window

- bit 2 - sign of (y-bottom), point is below window

- bit 3 - sign of (right-x), point is right of window

- bit 4 - sign of (x - left), point is left of window

30

1001

0001

0101

1000

0000

0100

1010

0010

0110

A line can be trivially accepted if both endpoints have anoutcode of 0000.

A line can be trivially rejected if any of the same two bits in the outcodes are both equal to 1 (both endpoints are left,right,above, below the window)

Cohen-Sutherland Algorithm

Page 16: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

16

31

Clipping 3D

Adds far and nearclipping planes for3D viewing volume

32

Normalization

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

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

• Volume known as canonical view volume

Page 17: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

17

33

Orthogonal Normalization

Normalization find transformation to convertspecified clipping volume to default

canonical volume

(right,top,far)

(left,bottom,near)

(1,1,1)

(-1,-1,-1)

34

• Two steps

- Move center to origin

T(-(left+right)/2, -(bottom+top)/2,-(near+far)/2))

- Scale to have sides of length 2

S(2/(right-left),2/(top-bottom),2/(near-far))

Orthogonal Normalization

Page 18: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

18

35

1000

200

02

0

002

nearfar

nearfar

farnear

bottomtop

bottomtop

bottomtop

leftright

leftright

leftright

ST =

Orthogonal Normalization

P = MorthST

Combined with orthogonal projection yields:

36

To use the same projection, we shear but don't project

x

z

=

1

pz

py

px

1

'

'

'

pz

py

px

dop

Oblique with Normalization

1000

0100

0dopy/dopz-10

0-dopx/dopz01

Page 19: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

19

37

Oblique with Normalization

xy shear (z values unchanged)

Projection matrix

Normalize as:

H =

P = Morth H

P = Morth STH

1000

0100

0dopy/dopz-10

0-dopx/dopz01

38

Equivalency

Page 20: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

20

39

Effect on Clipping

•The projection matrix P = STH transforms the original clipping volume to the default clipping volume

(seen from top view)

DOP DOP

near plane

far planeobject

ClippingVolume

z = -1

z = 1

x = -1x = 1

distorted object(projects correctly)

40

Perspective Projection

•How do we normalize the frustrum of the

perspective view?

• Want to make a canonical volume to clip against, just like in the parallel case

Page 21: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

21

41

Canonical Perspective

Consider a simple perspective with the COP at the origin, the far plane at z = 1, and a 90 degree field of view determined by the planes x = z,

y = z

Z = 1

Zfar

xmin xmax

x=zx=-z

x x

z

42

Effect on Clipping

•Extension to Cohen-Sutherland Clipping

Z = 1

x=zx=-z

x

zmin

Bit 1 – above volume y> zBit 2 – below volume y<-zBit 3 – right of volume x >zBit 4 – left of volume x <-zBit 5 – behind volume z > 1Bit 6 – in front of volume z< zmin

Page 22: Projection Matrices for Viewing and Clippingvbz/cs130f14-09.pdf · projection to canonical view clipping projection against canonical 3D 2D •Must add shear for asymmetric views,

22

43

Pipeline View

camera viewtransformation

transform projection to

canonical view

clipping projection

against canonical 3D 2D

•Must add shear for asymmetric views, slightly different for persp vs. parallel

same for all projections

44

Why do we do it this way?

• Normalization allows for a single pipeline to be used with all (perspective and parallel) desired views

• Keep in four dimensional homogeneous coordinates as long as possible to retain three-dimensional information needed for hidden-surface removal and shading

• Standardize clipping