22
Viewing (Review of 2D) A A A A A A A A A A A A A A A A A A A A A A A A A 1 1 1024 768 Local (Model) Coordinates World Coordinates Projection Coordinates Device (Screen) Coordinates Normalized Device Coordinates (NDC) O bject Transform Viewing Transform Normalization W orkstation Transfor m In 3-D we must clip with respect to a 3-D window, and must apply a projection to a 2-D device. Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22

Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Viewing (Review of 2D)

AA

AA

A A AA

AA

A A

A

A

AA

A A A

AA

AA

A A

1

1

1024

768

Local (Model)Coordinates

WorldCoordinates

ProjectionCoordinates

Device (Screen)Coordinates

NormalizedDevice

Coordinates(NDC)

Obje

ctTr

ansf

orm

Viewing Transform Normalization

Workstation

Transform

In 3-D we must clip with respect to a 3-D window, and must apply a projectionto a 2-D device.

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22

Page 2: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Viewing in 3D

AAA

A

A A

AA

AA

A A AA

AA

A A

A

A

AA

A A A

AA

AA

A A

1

1

1024

768

Local (Model)Coordinates

WorldCoordinates

ProjectionCoordinates

ViewingCoordinates

Device (Screen)Coordinates

NormalizedDevice

Coordinates(NDC)

Obje

ctTr

ansf

orm

Normalization

Workstation

Transform

Viewing Transform

Projection Transform

From World to projection coordinates entails:1 Define a 3-D window, or view volume.2 Transform to the viewing coordinates.3 Clip graphical objects with respect to the view volume (e.g., 3D versions

of Cohen-Sutherland, Liang-Barsky, Sutherland-Hodgeman).4 Apply a projection transformation to obtain the projection coordinates.

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 2 / 22

Page 3: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Camera Model for Projections

x

y

z

n

v

u

World Coordinates Viewing Coordinates

p

OView ReferencePoint

View Plane

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 3 / 22

Page 4: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Transforming from World to Viewing Coordinates

The glm.hh command,

glm::mat4 glm::lookAt(glm::vec3 const &eye, // view reference pointglm::vec3 const &center, // point on camera axisglm::vec3 const &up); // vector having vertical projection

Yields a transformation to the coordinate frame, {u,v,n} where,

n =eye − center‖eye − center‖

u =up× n‖up × n‖

v = n× u

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 4 / 22

Page 5: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

World to Viewing Coordinate Transformation

Let p = (x, y, z) denote a point in world coordinates. To find the coordinates ofthis point in the viewing coordinate system, apply the transformation

V = R(u,v,n)T(−eye)

=

ux uy uz 0vx vy vz 0nx ny nz 00 0 0 1

1 0 0 −eyeX0 1 0 −eyeY0 0 1 −eyeZ0 0 0 1

=

ux uy uz −u · eyevx vy vz −v · eyenx ny nz −n · eye0 0 0 1

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 5 / 22

Page 6: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Projections

Earliest evidence of projection transformations occur in cave paintings fromthe paleolithic era. These examples from Lascaux, France are approximately15,000 years old.

Painting portraits of the three-dimensional world on a two-dimensional canvas(or rock wall) is similar to the task of representing a three dimensional modelon a two-dimensional graphics device.

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 6 / 22

Page 7: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Visual Art in Ancient Egypt

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 7 / 22

Page 8: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Visual Art in the Italian Renaissance

Mathematics of point-line perspective was pioneered during the ItalianRenaissance by Filippo Brunelleschi (1377–1446), Leono Battista Alberti(1404–1472), and Piero della Francesca (c.1420–1492).

Ideal Piazza, Piero della Francesca

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 8 / 22

Page 9: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Projections

ParallelI Orthographic

F Top (plan)F Front ElevationF Side ElevationF Axonometric (e.g., Isometric)

I ObliqueF CabinetF CavalierF Other

PerspectiveI One-pointI Two-pointI Three-point

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 9 / 22

Page 10: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Parallel ProjectionGiven a constant vector vp , construct a line (parallel to vp) through everyvertex of interest in viewing coordinates. The intersections of these lines withthe view plane define the parallel projections.

n

u

v

(u, v, n)

(u, v, 0)

(up, vp, 0)

α

φ vp

L

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 10 / 22

Page 11: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Parallel Projection (cont.)

n

u

v

(u, v, n)

(u, v, 0)

(up, vp, 0)

α

φ vp

L

Alternatively, the projection can be defined using angles α and φ.

up = u + L cosφvp = v + L sinφ

where, L = n/ tanα. Letting L1 = 1/ tanα, we obtain

Mparallel =

1 0 L1 cosφ 00 1 L1 sinφ 00 0 0 00 0 0 1

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 11 / 22

Page 12: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Special Parallel Projections

Orthographic: α = π/2 or L1 = 0. Useful for architecture and CAD:elevations and plans. Axonometric (orthographic) projections reveal morethat one side of an object. An isometric (orthographic) projection treatsdistances along each coordinate axis equally. In general, lengths andangles are accurate. Normal lengths are invisible.Cavalier: α = π/4, thus L1 = 1. Lines perpendicular to the projectedplane appear with no change in length.Cabinet: α = tan−1 2, thus L1 = 1/2. More realistic than cavalier: normallengths are half as long.

Popular values for φ are π/4 and π/6.Theorem: The parallel projections of parallel lines are parallel.

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 12 / 22

Page 13: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective (Phigs)Each point (in viewing coordinates) is projected along a line that contains acommon projection reference point pprp . Intersections of these lines with theview plane defines the projections.

n

u

v

(u, v, n)

(up, vp, 0)

vp = (0, 0, np)

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 13 / 22

Page 14: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective (cont.)An orthographic view, illustrating two similar triangles:

u

up

O np

(u,n)

n n

up

np=

unp − n

=⇒ up =u

1 − nnp

A similar equation can be obtained for vp .N.B. The expression is not linear in n. However, we can exploit the rationalnature of homogeneous coordinates to express the above as a linearoperation.Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 14 / 22

Page 15: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective

Let,

Mpersective =

1 0 0 00 1 0 00 0 0 00 0 − 1

np1

Then

uhvhnhhh

= Mpersective

uvnh

whence,

up =uh

hh, vp =

vh

hh, np = 0

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 15 / 22

Page 16: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective (OpenGL)The projection reference point vp = (0,0,0) is a the origin of the camera (uvn)coordinate system. The view plane is described by the equation n = np forsome chosen np < 0. Each model vertex (u, v,n) is projected onto theviewplane (up , vp ,np) via a line segment that connects the model vertex withthe projection reference point.

n

v

u

(u, v, n)

(up, vp, np)

vp = (0, 0, 0)

n=np

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 16 / 22

Page 17: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective (cont.)An orthographic view, illustrating two similar triangles:

u

n

up

Onp

(u,n)

vie

wp

lan

en

up

−np=

u−n

=⇒ up =u

n/np

A similar equation can be obtained for vp .N.B. The expression is not linear in n. However, we can exploit the rationalnature of homogeneous coordinates to express the above as a linearoperation.

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 17 / 22

Page 18: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Point-Line Perspective

Let,

Mpersective =

1 0 0 00 1 0 00 0 1 00 0 1

np0

Then

uhvhnhhh

= Mpersective

uvnh

whence,

up =uh

hh=

unp

n, vp =

vh

hh=

vnp

n, np =

nh

hh= np

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 18 / 22

Page 19: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Defining a Perspective Projection with OpenGL

glm::mat4 glm::ortho(float left, float right,float bottom, float top,float near, float far);

glm::mat4 glm::perspective(float fovy,float aspect, // (width / height)float near,float far);

glm::mat4 glm::frustum(float left, float right,float bottom, float top,float near, float far);

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 19 / 22

Page 20: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

Clipping a Perspective Projection

A perspective transformation defines a frustum of a rectangular cone.

u

v

n

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 20 / 22

Page 21: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

View VolumesWe seek the projection matrix,

2r − l

0 0 −r + lr − l

02

t − b0 −

t + bt − b

0 02

f − nf + nf − n

0 0 0 1

where each parameter is represented by its initial letter. Vertices of the viewvolume then transform to

(l,b,−f)→ (−1,−1,−1), (l,b,−n)→ (−1,−1,+1)(l, t ,−f)→ (−1,+1,−1), (l, t ,−n)→ (−1,+1,+1)(r ,b,−f)→ (+1,−1,−1), (r ,b,−n)→ (+1,−1,+1)(r , t ,−f)→ (+1,+1,−1), (r , t ,−f)→ (+1,+1,+1).

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 21 / 22

Page 22: Viewing (Review of 2D)rsnapp/teaching/cs274/lectures/viewing2015.pdf · Robert R. Snapp ' 2015 Viewing Transfomations CS 274: Spring 2015 1 / 22. Viewing in 3D A A A AAA A A A A AA

View Volumes: Perspective ProjectionsFor perspective transformations, we use the projection matrix

2nr − l

0 −r + lr − l

0

02n

t − b−

t + bt − b

0

0 0 −f + nf − n

−2fn

f − n

0 0 −1 0

where each parameter is represented by its initial letter. Vertices of the viewvolume then transform to,

(l,b,−f)→ (−1,−1,−1), (l,b,−n)→ (−1,−1,+1)(l, t ,−f)→ (−1,+1,−1), (l, t ,−n)→ (−1,+1,+1)(r ,b,−f)→ (+1,−1,−1), (r ,b,−n)→ (+1,−1,+1)(r , t ,−f)→ (+1,+1,−1), (r , t ,−f)→ (+1,+1,+1).

Robert R. Snapp © 2015 Viewing Transfomations CS 274: Spring 2015 22 / 22