3D Polygon Rendering Pipelinemisha/Fall20/12.pdf · 2020. 10. 2. · 3D Rendering Pipeline (for direct illumination) Clip (parts of) primitives outside camera’s view. Transform

Post on 19-Jan-2021

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

3D Polygon Rendering Pipeline

Michael Kazhdan

(601.457/657)

HB Ch. 12

FvDFH Ch. 6, 18.3

3D Polygon Rendering• Many applications use (interactive) rendering of

3D polygons with direct illumination

3D Polygon Rendering• Many applications use (interactive) rendering of

3D polygons with direct illumination

God of War(Santa Monica Studio, 2018)

Ray Casting• For each sample:

Construct ray from the camera into the scene Find first surface intersected by ray through pixel Compute color of sample based on surface radiance

⇓ Send 2D pixels into the scene and get color

3D Polygon Rendering• For each primitive:

Send 3D points to the camera and set the pixel color

3D Rendering Pipeline (for direct illumination)

3D Model

2D Image

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

3D Rendering Pipeline (for direct illumination)

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Transform into 3D world coordinate system

Transform into 3D camera coordinate system

3D Rendering Pipeline (for direct illumination)

Transform into 3D world coordinate system

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Illuminate vertices using lighting and reflectance

3D Rendering Pipeline (for direct illumination)

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

3D Rendering Pipeline (for direct illumination)

Transform into 2D camera coordinate system

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Illuminate vertices using lighting and reflectance

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

3D Rendering Pipeline (for direct illumination)

Clip (parts of) primitives outside camera’s view

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Transform into 2D camera coordinate system

Illuminate vertices using lighting and reflectance

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

3D Rendering Pipeline (for direct illumination)

Clip (parts of) primitives outside camera’s view

Transform into 2D camera coordinate system

Illuminate vertices using lighting and reflectance

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Transform into 2D image coordinate system

3D Rendering Pipeline (for direct illumination)

Draw pixels (includes texturing, hidden surface, etc.)

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Clip (parts of) primitives outside camera’s view

Transform into 2D camera coordinate system

Illuminate vertices using lighting and reflectance

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

Transform into 2D image coordinate system

Transformations

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion Draw pixels (includes texturing, hidden surface, etc.)

Clip (parts of) primitives outside camera’s view

Transform into 2D camera coordinate system

Illuminate vertices using lighting and reflectance

Transform into 3D camera coordinate system

Transform into 3D world coordinate system

Transform into 2D image coordinate system

Recall: Homogeneous Coordinates• Add a 4th coordinate to every 3D point

(𝑥𝑥,𝑦𝑦, 𝑧𝑧,𝑤𝑤) represents a point at location 𝑥𝑥𝑤𝑤

, 𝑦𝑦𝑤𝑤

, 𝑧𝑧𝑤𝑤

(𝑥𝑥,𝑦𝑦, 𝑧𝑧, 0) represents a (directed) point at infinity (0, 0, 0,0) is not allowed

Recall: 3D Transformations• Using homogenous coordinates, we have two

types of transformations: Affine

𝑥𝑥′𝑦𝑦′𝑧𝑧′1

=

𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑𝑒𝑒 𝑓𝑓 𝑔𝑔 ℎ𝑖𝑖 𝑗𝑗 𝑘𝑘 𝑙𝑙0 0 0 1

𝑥𝑥𝑦𝑦𝑧𝑧1

Projective𝑥𝑥′𝑦𝑦′𝑧𝑧′𝑤𝑤′

=

𝑎𝑎 𝑏𝑏 𝑐𝑐 𝑑𝑑𝑒𝑒 𝑓𝑓 𝑔𝑔 ℎ𝑖𝑖 𝑗𝑗 𝑘𝑘 𝑙𝑙𝑚𝑚 𝑛𝑛 𝑜𝑜 𝑝𝑝

𝑥𝑥𝑦𝑦𝑧𝑧𝑤𝑤

Transformations

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

Transformations map points from one coordinate system to another

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)3D World

Coordinates

3D CameraCoordinates

3D ObjectCoordinates

x

z

y

Transformations

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

}Model-view Transformations

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)

Transformations

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)

Viewing Transformation• Canonical coordinate system

Convention is right-handed (looking down −𝑧𝑧 axis) Convenient for projection, clipping, etc.

3D WorldCoordinates

3D CameraCoordinates

Camera Right

Camera Up

𝑥𝑥

𝑦𝑦

𝑧𝑧Camera Back

Viewing Transformation• The transformation, 𝑇𝑇𝑊𝑊→𝐶𝐶, taking us from world

coordinates to camera coordinates should map: The right vector to the 𝑥𝑥-axis:

𝑅𝑅𝑥𝑥 ,𝑅𝑅𝑦𝑦,𝑅𝑅𝑧𝑧, 0 → (1,0,0,0) The up vector to the 𝑦𝑦-axis:

𝑈𝑈𝑥𝑥,𝑈𝑈𝑦𝑦,𝑈𝑈𝑧𝑧, 0 → (0,1,0,0) The back vector to the 𝑧𝑧-axis:

𝐵𝐵𝑥𝑥 ,𝐵𝐵𝑦𝑦,𝐵𝐵𝑧𝑧, 0 → (0,0,1,0) The eye position to the origin:

𝐸𝐸𝑥𝑥,𝐸𝐸𝑦𝑦,𝐸𝐸𝑧𝑧, 1 → (0,0,0,1)

How should we define this transformation/matrix?

Viewing Transformation• Consider the inverse transformation, 𝑇𝑇𝐶𝐶→𝑊𝑊, taking

us from camera coordinates to world coordinates:𝑅𝑅𝑥𝑥 ,𝑅𝑅𝑦𝑦,𝑅𝑅𝑧𝑧, 0 ← (1,0,0,0)𝑈𝑈𝑥𝑥,𝑈𝑈𝑦𝑦,𝑈𝑈𝑧𝑧, 0 ← (0,1,0,0)𝐵𝐵𝑥𝑥 ,𝐵𝐵𝑦𝑦,𝐵𝐵𝑧𝑧, 0 ← (0,0,1,0)𝐸𝐸𝑥𝑥,𝐸𝐸𝑦𝑦,𝐸𝐸𝑧𝑧, 1 ← (0,0,0,1)

• This is described by the matrix:𝑥𝑥𝑤𝑤𝑦𝑦𝑤𝑤𝑧𝑧𝑤𝑤1

=

𝑅𝑅𝑥𝑥 𝑈𝑈𝑥𝑥 𝐵𝐵𝑥𝑥 𝐸𝐸𝑥𝑥𝑅𝑅𝑦𝑦 𝑈𝑈𝑦𝑦 𝐵𝐵𝑦𝑦 𝐸𝐸𝑦𝑦𝑅𝑅𝑧𝑧 𝑈𝑈𝑧𝑧 𝐵𝐵𝑧𝑧 𝐸𝐸𝑧𝑧0 0 0 1

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

𝑇𝑇𝐶𝐶→𝑊𝑊

Finding the Viewing Transformation• The camera-to-world matrix:

𝑥𝑥𝑤𝑤𝑦𝑦𝑤𝑤𝑧𝑧𝑤𝑤1

=

𝑅𝑅𝑥𝑥 𝑈𝑈𝑥𝑥 𝐵𝐵𝑥𝑥 𝐸𝐸𝑥𝑥𝑅𝑅𝑦𝑦 𝑈𝑈𝑦𝑦 𝐵𝐵𝑦𝑦 𝐸𝐸𝑦𝑦𝑅𝑅𝑧𝑧 𝑈𝑈𝑧𝑧 𝐵𝐵𝑧𝑧 𝐸𝐸𝑧𝑧0 0 0 1

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

• The world-to-camera matrix is its inverse:

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

=

𝑅𝑅𝑥𝑥 𝑈𝑈𝑥𝑥 𝐵𝐵𝑥𝑥 𝐸𝐸𝑥𝑥𝑅𝑅𝑦𝑦 𝑈𝑈𝑦𝑦 𝐵𝐵𝑦𝑦 𝐸𝐸𝑦𝑦𝑅𝑅𝑧𝑧 𝑈𝑈𝑧𝑧 𝐵𝐵𝑧𝑧 𝐸𝐸𝑧𝑧0 0 0 1

−1 𝑥𝑥𝑤𝑤𝑦𝑦𝑤𝑤𝑧𝑧𝑤𝑤1

𝑇𝑇𝐶𝐶→𝑊𝑊

𝑇𝑇𝑊𝑊→𝐶𝐶 = 𝑇𝑇𝐶𝐶→𝑊𝑊−1

Transformations

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)

Projection• General definition:

A linear transformation of points in 𝑛𝑛-space to 𝑚𝑚-space (𝑚𝑚 < 𝑛𝑛)

• In computer graphics: Map 3D camera coordinates to 2D screen

coordinates

Taxonomy of Projections

FvDFH Figure 6.13

Projection• Two general classes of projections, both of which

shoot rays from the scene, through the view plane: Parallel Projection:

» Rays converge at a point at infinity and are parallel Perspective “Projection”:

» Rays converge at a finite point, giving rise to perspective distortion

View Plane View Plane

Taxonomy of Projections

FvDFH Figure 6.13

Parallel Projection

Angel Figure 5.4

• Center of projection is at infinity Direction of projection (DoP) same for all points

DOP

ViewPlane

Parallel ProjectionParallel lines remain parallel

Relative proportions of objects preserved

Angles are not preserved

Less realistic looking

Taxonomy of Projections

FvDFH Figure 6.13

Orthographic Projections

Angel Figure 5.5Top

Side Front

• DoP perpendicular to view plane

Isometric

Orthographic Projections

Angel Figure 5.5Top

Side Front

• DoP perpendicular to view plane

Isometric

• Lines perpendicular to the view plane vanish

• Faces parallel to the view plane are un-distorted.

Orthographic Projections• DoP perpendicular to view plane

Maps a point in 3D space to the (𝑥𝑥,𝑦𝑦)-plane, through the origin, by projecting out the 𝑧𝑧-component:

𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 → 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 0 In terms of the matrix representation:

𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠0

=1 0 00 1 00 0 0

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐

(0,0,0) 𝑧𝑧−𝑧𝑧

𝑦𝑦

View Plane

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐)

Orthographic Projections• DoP perpendicular to view plane

Maps a point in 3D space to the (𝑥𝑥,𝑦𝑦)-plane, through the origin, by projecting out the 𝑧𝑧-component:

𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 → 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 0 In terms of the matrix representation:

𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠0

=1 0 00 1 00 0 0

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐

Or, in homogenous coordinates:𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠01

=

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

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

Taxonomy of Projections

FvDFH Figure 6.13

Oblique Projections

H&B Figure 12.21

• DoP not perpendicular to view plane

• 𝜙𝜙 is the angle of the projection of the view plane’s normal

• 𝐿𝐿 is the scale factor applied to the view plane’s normal

Cavalier(DoP 𝛼𝛼 = 45∘)

Cabinet(DoP 𝛼𝛼 = 63.4∘)

1

11

1

11/2

𝜙𝜙 = 45∘𝐿𝐿 = 1

𝜙𝜙 = 45∘𝐿𝐿 = 1/2

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 1)

(𝑥𝑥,𝑦𝑦)

𝑥𝑥𝑠𝑠 ,𝑦𝑦𝑠𝑠 = 𝐿𝐿(cos𝜙𝜙, sin𝜙𝜙)

𝜙𝜙

𝐿𝐿

𝑧𝑧

𝑥𝑥

𝑦𝑦

Parallel Projection Matrix

H&B Figure 12.21

• General parallel projection transformation:

1

11

1

11/2

Cavalier(DoP 𝛼𝛼 = 45∘)

Cabinet(DoP 𝛼𝛼 = 63.4∘)

𝜙𝜙 = 45∘𝐿𝐿 = 1

𝜙𝜙 = 45∘𝐿𝐿 = 1/2

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 1)

(𝑥𝑥,𝑦𝑦)

𝑥𝑥𝑠𝑠 ,𝑦𝑦𝑠𝑠 = 𝐿𝐿(cos𝜙𝜙, sin𝜙𝜙)

𝜙𝜙

𝐿𝐿

𝑧𝑧

𝑥𝑥

𝑦𝑦

𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠01

=

1 0 𝐿𝐿 cos𝜙𝜙 00 1 𝐿𝐿 sin𝜙𝜙 00 0 0 00 0 0 1

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

Parallel Projection Matrix

H&B Figure 12.21

• General parallel projection transformation:

1

11

1

11/2

Cavalier(DoP 𝛼𝛼 = 45∘)

Cabinet(DoP 𝛼𝛼 = 63.4∘)

𝜙𝜙 = 45∘𝐿𝐿 = 1

𝜙𝜙 = 45∘𝐿𝐿 = 1/2

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 1)

(𝑥𝑥,𝑦𝑦)

𝑥𝑥𝑠𝑠 ,𝑦𝑦𝑠𝑠 = 𝐿𝐿(cos𝜙𝜙, sin𝜙𝜙)

𝜙𝜙

𝐿𝐿

𝑧𝑧

𝑥𝑥

𝑦𝑦

𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠01

=

1 0 𝐿𝐿 cos𝜙𝜙 00 1 𝐿𝐿 sin𝜙𝜙 00 0 0 00 0 0 1

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

Note:This matrix represents an affine transformation

Parallel Projection View Volume

H&B Figure 12.30

Taxonomy of Projections

FVFHP Figure 6.10

Perspective “Projection”

Angel Figure 5.9

• Map points onto “view plane” along “projectors” emanating from “center of projection” (CoP)

Center ofProjection

View Plane

Perspective Projection

Angel Figure 5.10

3-PointPerspective

2-PointPerspective

1-PointPerspective

• How many vanishing points?

Number of vanishing pointsdetermined by number of axes

parallel to the view plane

𝑥𝑥 𝑥𝑥𝑥𝑥

𝑦𝑦𝑦𝑦 𝑦𝑦

𝑧𝑧

𝑧𝑧𝑧𝑧

Perspective Projection• Not all parallel lines remain parallel!

Perspective Projection• What are the coordinates of the point resulting

from projection of 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 onto the view plane a unit distance along the 𝑧𝑧-axis?

(0,0,0)𝑧𝑧

𝑦𝑦

1

View Plane

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐)

Perspective Projection• For any point 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 and any scalar 𝛼𝛼, the

points 𝑥𝑥𝑐𝑐 , 𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 and 𝛼𝛼𝑥𝑥𝑐𝑐 ,𝛼𝛼𝑦𝑦𝑐𝑐 ,𝛼𝛼𝑧𝑧𝑐𝑐 map to the same location.

(0,0,0)𝑧𝑧

𝑦𝑦

1

View Plane

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐)

(2𝑥𝑥𝑐𝑐 , 2𝑦𝑦𝑐𝑐 , 2𝑧𝑧𝑐𝑐)

Perspective Projection• For any point 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 and any scalar 𝛼𝛼, the

points 𝑥𝑥𝑐𝑐 , 𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 and 𝛼𝛼𝑥𝑥𝑐𝑐 ,𝛼𝛼𝑦𝑦𝑐𝑐 ,𝛼𝛼𝑧𝑧𝑐𝑐 map to the same location.

• Since we want the position on the view plane that intersect the line from 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 to the origin:

𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 →𝑥𝑥𝑐𝑐

𝑧𝑧𝑐𝑐,𝑦𝑦𝑐𝑐

𝑧𝑧𝑐𝑐, 1

(0,0,0)𝑧𝑧

𝑦𝑦

1

View Plane

(𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐)

Perspective Projection Matrix

𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 →𝑥𝑥𝑐𝑐

𝑧𝑧𝑐𝑐,𝑦𝑦𝑐𝑐

𝑧𝑧𝑐𝑐, 1

We can’t represent this with a 3 × 3 matrix!

With homogenous coordinates, we can write this as:

𝑥𝑥𝑐𝑐 , 𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 , 1 →𝑥𝑥𝑐𝑐

𝑧𝑧𝑐𝑐,𝑦𝑦𝑐𝑐

𝑧𝑧𝑐𝑐, 1,1 ≡ 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 , 𝑧𝑧𝑐𝑐

In matrix form, this gives:𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠11

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

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

Perspective Projection Matrix

𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 →𝑥𝑥𝑐𝑐

𝑧𝑧𝑐𝑐,𝑦𝑦𝑐𝑐

𝑧𝑧𝑐𝑐, 1

We can’t represent this with a 3 × 3 matrix!

With homogenous coordinates, we can write this as:

𝑥𝑥𝑐𝑐 , 𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 , 1 →𝑥𝑥𝑐𝑐

𝑧𝑧𝑐𝑐,𝑦𝑦𝑐𝑐

𝑧𝑧𝑐𝑐, 1,1 ≡ 𝑥𝑥𝑐𝑐 ,𝑦𝑦𝑐𝑐 , 𝑧𝑧𝑐𝑐 , 𝑧𝑧𝑐𝑐

In matrix form, this gives:𝑥𝑥𝑠𝑠𝑦𝑦𝑠𝑠11

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

𝑥𝑥𝑐𝑐𝑦𝑦𝑐𝑐𝑧𝑧𝑐𝑐1

Note:This matrix represents a projective transformation

Perspective Projection View Volume

H&B Figure 12.30

ViewPlane

Taxonomy of Projections

FVFHP Figure 6.10

Classical Projections

Angel Figure 5.3

Perspective vs. Parallel• Perspective projectionSize varies inversely with distance - looks realisticAngles are preserved on faces

parallel to the view plane Distance are not preserved

• Parallel projectionGood for exact measurementsParallel lines remain parallelAngles and distance are preserved

on faces parallel to the view plane Less realistic looking

Transformations

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

𝑣𝑣𝑥𝑥1 𝑣𝑣𝑥𝑥2𝑣𝑣𝑦𝑦1

𝑣𝑣𝑦𝑦2

𝑤𝑤𝑥𝑥1 𝑤𝑤𝑥𝑥2𝑤𝑤𝑦𝑦1

𝑤𝑤𝑦𝑦2Window Viewport

Screen Coordinates Image Coordinates

(𝑤𝑤𝑥𝑥,𝑤𝑤𝑦𝑦) (𝑣𝑣𝑥𝑥 , 𝑣𝑣𝑦𝑦)

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)

𝑉𝑉 = viewport transform

𝑉𝑉 =1 0 𝑣𝑣𝑥𝑥1

0 1 𝑣𝑣𝑥𝑥20 0 1

𝑣𝑣𝑥𝑥2 − 𝑣𝑣𝑥𝑥1

𝑤𝑤𝑥𝑥2 − 𝑤𝑤𝑥𝑥10 0

0𝑣𝑣𝑦𝑦2 − 𝑣𝑣𝑦𝑦1

𝑤𝑤𝑦𝑦2 − 𝑤𝑤𝑦𝑦10

0 0 1

1 0 −𝑤𝑤𝑥𝑥1

0 1 −𝑤𝑤𝑦𝑦1

0 0 1

Note that this may scale non-uniformly.

3D Rendering Pipeline (for direct illumination)

3D Model2D Screen

ModelingTransformation

ViewingTransformation

2D Image Coordinates

ProjectionTransformation

Window-to-ViewportTransformation

3D Object Coordinates

3D World Coordinates

3D Camera Coordinates

2D Screen Coordinates

(𝑥𝑥,𝑦𝑦, 𝑧𝑧)

(𝑥𝑥′,𝑦𝑦′)

Transformations𝑁𝑁

𝐿𝐿1

𝐿𝐿2

𝑉𝑉

Viewer

𝐼𝐼 = 𝐼𝐼𝐸𝐸 + �𝐿𝐿

𝐾𝐾𝐴𝐴 ⋅ 𝐼𝐼𝐿𝐿𝐴𝐴 + 𝐾𝐾𝐷𝐷 ⋅ 𝑁𝑁, 𝐿𝐿 + 𝐾𝐾𝑆𝑆 ⋅ 𝑉𝑉,𝑅𝑅 𝑛𝑛 ⋅ 𝐼𝐼𝐿𝐿

3D Model2D Screen

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

Transformations

3D Model2D Screen

}Vertex processing• Originally, vertex processing was fixed• On modern cards this can be programmed in the

vertex shader

Lighting

ViewingTransformation

3D Primitives

ModelingTransformation

ProjectionTransformation

Clipping

Image

ViewportTransformation

ScanConversion

top related