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

Post on 18-Jan-2018

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

David Luebke 05/04/23

CS 551 / 645: Introductory Computer Graphics

Mathematical FoundationsThe 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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

David Luebke 05/04/23

The Display You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

David Luebke 05/04/23

The Framebuffer You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

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?

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

David Luebke 05/04/23

The Rendering Pipeline: 3-D

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

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

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

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

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

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

David Luebke 05/04/23

Rendering: Transformations

Projection transform– Apply perspective foreshortening

Distant = small: the pinhole camera model

– View coordinates screen coordinates

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

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

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

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

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

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

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

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

David Luebke 05/04/23

The Rendering Pipeline: 3-D

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

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

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

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

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

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

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 ),,(

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

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

'''

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

''

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

David Luebke 05/04/23

The End

Next: Basic OpenGL

top related