david luebke2/16/2016 cs 551 / 645: introductory computer graphics mathematical foundations the...

53
David Luebke 05/11/22 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

Upload: joy-dorsey

Post on 18-Jan-2018

222 views

Category:

Documents


0 download

DESCRIPTION

David Luebke2/16/2016 XForms Intro l Xforms: a toolkit for easily building Graphical User Interfaces, or GUIs –See –Lots of widgets: buttons, sliders, menus, etc. –Plus, an OpenGL canvas widget that gives us a viewport or context to draw into with GL or Mesa. l Quick tour now l You’ll learn the details yourself in Assignment 1

TRANSCRIPT

Page 1: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

CS 551 / 645: Introductory Computer Graphics

Mathematical FoundationsThe Rendering Pipeline

Page 2: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Administrivia

Sorry about the canceled class OpenGL text: v1.1 or v1.2? Teddy link fixed Go over Assignment 1

Page 3: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

XForms Intro

Xforms: a toolkit for easily building Graphical User Interfaces, or GUIs– See http://www.westworld.com/~dau/xforms– Lots of widgets: buttons, sliders, menus, etc.– Plus, an OpenGL canvas widget that gives us a

viewport or context to draw into with GL or Mesa. Quick tour now You’ll learn the details yourself in

Assignment 1

Page 4: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Mathematical Foundations

FvD appendix gives good review I’ll give a brief, informal review of some of the

mathematical tools we’ll employ– Geometry (2D, 3D)– Trigonometry– Vector and affine spaces

Points, vectors, and coordinates

– Dot and cross products– Linear transforms and matrices

Page 5: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

2D Geometry

Know your high-school geometry:– Total angle around a circle is 360° or 2π radians– When two lines cross:

Opposite angles are equivalent Angles along line sum to 180°

– Similar triangles: All corresponding angles are equivalent Corresponding pairs of sides have the same length ratio

and are separated by equivalent angles Any corresponding pairs of sides have same length ratio

Page 6: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Trigonometry

Sine: “opposite over hypotenuse” Cosine: “adjacent over hypotenuse” Tangent: “opposite over adjacent” Unit circle definitions:

– sin () = x– cos () = y– tan () = x/y– Etc…

(x, y)

Page 7: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

3D Geometry

To model, animate, and render 3D scenes, we must specify:– Location– Displacement from arbitrary locations– Orientation

We’ll look at two types of spaces:– Vector spaces– Affine spaces

We will often be sloppy about the distinction

Page 8: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vector Spaces

Two types of elements:– Scalars (real numbers): … – Vectors (n-tuples): u, v, w, …

Supports two operations:– Addition operation u + v, with:

Identity 0 v + 0 = v Inverse - v + (-v) = 0

– Scalar multiplication: Distributive rule:(u + v) = (u) + (v)

( + )u = u + u

Page 9: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vector Spaces

A linear combination of vectors results in a new vector:

v = 1v1 + 2v2 + … + nvn

If the only set of scalars such that 1v1 + 2v2 + … + nvn = 0

is 1 = 2 = … = 3 = 0 then we say the vectors are linearly independent The dimension of a space is the greatest number of linearly

independent vectors possible in a vector set For a vector space of dimension n, any set of n linearly

independent vectors form a basis

Page 10: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vector Spaces: A Familiar Example Our common notion of vectors in a 2D plane

is (you guessed it) a vector space:– Vectors are “arrows” rooted at the origin– Scalar multiplication “streches” the arrow, changing

its length (magnitude) but not its direction– Addition uses the “trapezoid rule”:

u+vy

xu

v

Page 11: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vector Spaces: Basis Vectors

Given a basis for a vector space:– Each vector in the space is a unique linear

combination of the basis vectors– The coordinates of a vector are the scalars from

this linear combination– Best-known example: Cartesian coordinates

Draw example on the board

– Note that a given vector v will have different coordinates for different bases

Page 12: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vectors And Points

We commonly use vectors to represent:– Points in space (i.e., location)– Displacements from point to point– Direction (i.e., orientation)

But we want points and directions to behave differently– Ex: To translate something means to move it

without changing its orientation– Translation of a point = different point– Translation of a direction = same direction

Page 13: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Affine Spaces

To be more rigorous, we need an explicit notion of position

Affine spaces add a third element to vector spaces: points (P, Q, R, …)

Points support these operations– Point-point subtraction: Q - P = v

Result is a vector pointing from P to Q– Vector-point addition: P + v = Q

Result is a new point

– Note that the addition of two points is not definedP

Q

v

Page 14: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Affine Spaces

Points, like vectors, can be expressed in coordinates– The definition uses an affine combination– Net effect is same: expressing a point in terms of a

basis Thus the common practice of representing

points as vectors with coordinates (see FvD) Analogous to equating pointers & integers in C

– Be careful to avoid nonsensical operations

Page 15: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Affine Lines: An Aside

Parametric representation of a line with a direction vector d and a point P1 on the line:

P() = Porigin + d Restricting 0 produces a ray Setting d to P - Q and restricting 0 1

produces a line segment between P and Q

Page 16: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Dot Product

The dot product or, more generally, inner product of two vectors is a scalar:

v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D) Useful for many purposes

– Computing the length of a vector: length(v) = sqrt(v • v)

– Normalizing a vector, making it unit-length– Computing the angle between two vectors:

u • v = |u| |v| cos(θ)

– Checking two vectors for orthogonality– Projecting one vector onto another

θu

v

Page 17: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Cross Product

The cross product or vector product of two vectors is a vector:

The cross product of two vectors is orthogonal to both

Right-hand rule dictates direction of cross product

1221

1221

1221

21 )(y x y xz x z x

z y z yvv

Page 18: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Linear Transformations

A linear transformation: – Maps one vector to another– Preserves linear combinations

Thus behavior of linear transformation is completely determined by what it does to a basis

Turns out any linear transform can be represented by a matrix

Page 19: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Matrices

By convention, matrix element Mrc is located at row r and column c:

By (OpenGL) convention, vectors are columns:

mnm2m1

2n2221

1n1211

MMM

MMMMMM

M

3

2

vvv

v1

Page 20: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Matrices

Matrix-vector multiplication applies a linear transformation to a vector:

Recall how to do matrix multiplication

z

y

x

vvv

MMMMMMMMM

vM333231

232221

131211

Page 21: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Matrix Transformations

A sequence or composition of linear transformations corresponds to the product of the corresponding matrices– Note: the matrices to the right affect vector first– Note: order of matrices matters!

The identity matrix I has no effect in multiplication

Some (not all) matrices have an inverse: vvMM 1

Page 22: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: A Whirlwind Tour

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 23: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Display You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 24: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Framebuffer You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 25: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Why do we call it a pipeline?

Page 26: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

2-D Rendering: Rasterization(Coming Soon)

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 27: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 28: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 29: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

Scene graphObject geometry

LightingCalculations

Clipping

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

ModelingTransforms

ViewingTransform

ProjectionTransform

Page 30: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

So far, discussion has been in screen space But model is stored in model space

(a.k.a. object space or world space) Three sets of geometric transformations:

– Modeling transforms– Viewing transforms– Projection transforms

Page 31: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

Modeling transforms– Size, place, scale, and rotate objects parts of the

model w.r.t. each other– Object coordinates world coordinates

Z

X

Y

X

Z

Y

Page 32: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

Viewing transform– Rotate & translate the world to lie directly in front of

the camera Typically place camera at origin Typically looking down -Z axis

– World coordinates view coordinates

Page 33: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

Projection transform– Apply perspective foreshortening

Distant = small: the pinhole camera model

– View coordinates screen coordinates

Page 34: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

All these transformations involve shifting coordinate systems (i.e., basis sets)

That’s what matrices do… Represent coordinates as vectors, transforms

as matrices

Multiply matrices = concatenate transforms!

YX

YX

cossinsincos

Page 35: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

Homogeneous coordinates: represent coordinates in 3 dimensions with a 4-vector– Denoted [x, y, z, w]T

Note that w = 1 in model coordinates

– To get 3-D coordinates, divide by w:[x’, y’, z’]T = [x/w, y/w, z/w]T

Transformations are 4x4 matrices Why? To handle translation and projection

Page 36: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Transformations

OpenGL caveats:– All modeling transforms and the viewing transform

are concatenated into the modelview matrix– A stack of modelview matrices is kept– The projection transform is stored separately in

the projection matrix See Chapter 3 of the OpenGL book

Page 37: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 38: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Lighting

Illuminating a scene: coloring pixels according to some approximation of lighting– Global illumination: solves for lighting of the whole

scene at once– Local illumination: local approximation, typically

lighting each polygon separately Interactive graphics (e.g., hardware) does

only local illumination at run time

Page 39: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 40: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Clipping

Clipping a 3-D primitive returns its intersection with the view frustum:

See Foley & van Dam section 19.1

Page 41: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rendering: Clipping

Clipping is tricky!

In: 3 verticesIn: 3 verticesOut: 6 verticesOut: 6 verticesClip

Clip In: 1 polygonIn: 1 polygonOut: 2 polygonsOut: 2 polygons

Page 42: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The Rendering Pipeline: 3-D

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 43: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Modeling: The Basics

Common interactive 3-D primitives: points, lines, polygons (i.e., triangles)

Organized into objects– Collection of primitives, other objects– Associated matrix for transformations

Instancing: using same geometry for multiple objects – 4 wheels on a car, 2 arms on a robot

Page 44: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Modeling: The Scene Graph

The scene graph captures transformations and object-object relationships in a DAG

Objects in black; blue arrows indicate instancing and each have a matrix

Robot

BodyHead

ArmTrunkLegEyeMouth

Page 45: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Modeling: The Scene Graph

Traverse the scene graph in depth-first order, concatenating transformations

Maintain a matrix stack of transformations

ArmTrunkLegEyeMouth

Head Body

Robot

Foot

MatrixMatrixStackStack

VisitedVisited

UnvisitedUnvisited

ActiveActive

Page 46: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Modeling: The Camera

Finally: need a model of the virtual camera– Can be very sophisticated

Field of view, depth of field, distortion, chromatic aberration…

– Interactive graphics (OpenGL): Pinhole camera model

Field of view Aspect ratio Near & far clipping planes

Camera pose: position & orientation

Page 47: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Modeling: The Camera

These parameters are encapsulated in a projection matrix– Homogeneous coordinates 4x4 matrix!– See OpenGL Appendix F for the matrix

The projection matrix premultiplies the viewing matrix, which premultiplies the modeling matrices– Actually, OpenGL lumps viewing and modeling

transforms into modelview matrix

Page 48: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Rigid-Body Transforms

Goal: object coordinatesworld coordinates Idea: use only transformations that preserve

the shape of the object– Rigid-body or Euclidean transforms – Includes rotation, translation, and scale

To reiterate: we will represent points as column vectors:

zyx

zyx ),,(

Page 49: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Vectors and Matrices

Vector algebra operations can be expressed in this matrix form– Dot product:

– Cross product: Note: use

right-handrule!

z

y

x

zyx

bbb

aaaba

0cb0ca

cba

z

y

x

z

y

x

xy

xz

yz

ccc

bbb

aaaa

aa

00

0

Page 50: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

Translations

For convenience we usually describe objects in relation to their own coordinate system– Solar system example

We can translate or move points to a new position by adding offsets to their coordinates:

– Note that this translates all points uniformly

z

y

x

ttt

zyx

zyx

'''

Page 51: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

3-D Rotations

Rotations in 2-D are easy:

3-D is more complicated– Need to specify an axis of rotation– Common pedagogy: express rotation about this

axis as the composition of canonical rotations Canonical rotations: rotation about X-axis, Y-axis, Z-axis

yx

yx

cossinsincos

''

Page 52: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

3-D Rotations

Basic idea:– Using rotations about X, Y, Z axes, rotate model until

desired axis of rotation coincides with Z-axis– Perform rotation in the X-Y plane (i.e., about Z-axis)– Reverse the initial rotations to get back into the initial

frame of reference Objections:

– Difficult & error prone– Ambiguous: several combinations about the canonical

axis give the same result– For a different approach, see McMillan’s lecture 12

Page 53: David Luebke2/16/2016 CS 551 / 645: Introductory Computer Graphics Mathematical Foundations The Rendering Pipeline

David Luebke 05/04/23

The End

Next: Basic OpenGL