CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations

advertisement
CS 551 / 645:
Introductory Computer Graphics
Framebuffer
Mathematical Foundations
The Rendering Pipeline
7/27/2016
Organization





Class List
ITC accounts
Class web page is up
Assignment 1 goes out on Thursday
Read OGLPG Chapter 1 for Thursday
7/27/2016
Basic Definitions
Raster: A rectangular
array of points or dots.
Pixel (Pel): One dot or
picture element of the
raster
Scan line: A row of
pixels

Video raster devices display
an image by sequentially
drawing out the pixels of the
scan lines that form the
raster.
7/27/2016
Frame Buffers
 A frame
buffer may be thought of as computer
memory organized as a two-dimensional array with
each (x,y) addressable location corresponding to
one pixel.
 Bit
Planes or Bit Depth is the number of bits
corresponding to each pixel.
 A typical
frame buffer resolution might be
640 x 480 x 8
1280 x 1024 x 8
1280 x 1024 x 24
7/27/2016
1-Bit Memory, Monochrome
Display (Bitmap Display)
1 bit
2 levels
Electron
Gun
7/27/2016
3-Bit Color Display
3
red
green
blue
COLOR: black red green blue yellow cyan magenta white
R
G
B
0
0
0
1
0
0
0
1
0
0
0
1
1
1
0
0
1
1
1
0
1
1
1
1
7/27/2016
True Color Display
24 bitplanes, 8 bits
per color gun.

8
2
 24
= 16,777,216
8
8
Red
Green
Blue
7/27/2016
Color Map Look-Up Tables
Extends the number of colors that can be displayed by a given
number of bit-planes.
y
RED
max
GREEN
255
BLUE
y
7
6
1001 1010 0001
67 100110100001
R
Pixel in
bit map
at x', y'
0
0
x
Frame buffer
G
Pixel displayed
at x', y'
B
0
x
max
Look-up table
Display
7/27/2016
Pseudo color
RED
28 x 24 Color Map LUT
GREEN
BLUE
255
254
256 colors chosen from a
palette of 16,777,216.
Each entry in the color map
LUT can be user defined.
3
2
1
0
7/27/2016
Display processor
 Specialized
hardware to assist in scan converting
output primitives into the frame buffer.
 Fundamental
difference among display systems is
how much the display processor does versus how
much must be done by the graphics subroutine
package executing on the general-purpose CPU.
 Now
often called graphics accelerator
7/27/2016
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 spaces

Points, vectors, and coordinates
– Dot and cross products
– Linear transforms and matrices
7/27/2016
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
7/27/2016
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)
7/27/2016
Slope-intercept Line Equation
Slope = m = rise / run
Slope = (y - y1) / (x - x1) = (y2 - y1) / (x2 - x1)
Solve for y:
y = [(y2 - y1)/(x2 - x1)]x + [-(y2-y1)/(x2 - x1)]x1 + y1
or: y = mx + b
y
P = (x, y)
P2 = (x2, y2)
P1 = (x1, y1)
x
7/27/2016
Parametric Line Equation


Given points P1 = (x1, y1) and P2 = (x2, y2)
x = x1 + t(x2 - x1)
y = y1 + t(y2 - y1)
When:
y
– t=0, we get (x1, y1)
– t=1, we get (x2, y2)
– (0<t<1), we get points
on the segment between
(x1, y1) and (x2, y2)
P2 = (x2, y2)
P1 = (x1, y1)
x
7/27/2016
Other helpful formulas


Length = sqrt (x2 - x1)2 + (y2 - y1)2
Midpoint, p2, between p1 and p3
– p2 = ((x1 + x3) / 2, (y1 + y3) / 2))

Two lines are perpendicular if:
– M1 = -1/M2
– cosine of the angle between them is 0
7/27/2016
3D Geometry

To model, animate, and render 3D scenes,
we must specify:
– Location
– Displacement from arbitrary locations
– Orientation
7/27/2016
Vector Spaces

Two types of elements:
– Scalars (real numbers): a, b, g, d, …
– 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:
a(u + v) = a(u) + a(v)
(a + b)u = au + bu
7/27/2016
Vector Spaces

A linear combination of vectors results in a
new vector:
v = a1v1 + a2v2 + … + anvn



If the only set of scalars such that
a1v1 + a2v2 + … + anvn = 0
is
a1 = a2 = … = a3 = 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
7/27/2016
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+v
y
v
u
x
7/27/2016
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
– Note that a given vector v will have different
coordinates for different bases
7/27/2016
Vectors And Points

We commonly use vectors to represent:
– Points in space (i.e., location)
– Displacements from point to point
– Direction (i.e., orientation)
7/27/2016
Points

Points support these operations
– Point-point subtraction:

Result is a vector pointing from P to Q
– Vector-point addition:

Q-P=v
P+v=Q
Q
Result is a new point
– Note that the addition of two points is not defined
v
P
7/27/2016
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
v
θ
u
7/27/2016
Cross Product



The cross product or vector product of two
vectors is a vector:
 y1 z 2  y 2 z1 
v1  v 2   ( x1 z 2  x 2 z1)
 x1 y 2  x 2 y1 
The cross product of two vectors is
orthogonal to both
Right-hand rule dictates direction of cross
product
7/27/2016
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
7/27/2016
Matrices

By convention, matrix element Mrc is located
at row r and column c:
 M11 M12
 M21 M22
M
 


Mm1 Mm2

 M1n 
 M2n 

 

 Mmn 
By (OpenGL) convention,
vectors are columns:
 v1 


v   v 2
 v 3 
7/27/2016
Matrices

Matrix-vector multiplication applies a linear
transformation to a vector:
 M11 M12 M13  vx 
M  v  M 21 M 22 M 23  vy 
M31 M32 M33  vz 

Recall how to do matrix multiplication
7/27/2016
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:
M 1 Mv   v
7/27/2016
The Rendering Pipeline:
A Whirlwind Tour
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
The Display You Know
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
The Framebuffer You Know
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
The Rendering Pipeline
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
2-D Rendering: Rasterization
(Coming Soon)
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
The Rendering Pipeline: 3-D
Transform
Illuminate
Transform
Clip
Project
Rasterize
Model & Camera
Parameters
Rendering Pipeline
Framebuffer
Display
7/27/2016
The Rendering Pipeline: 3-D
Scene graph
Object geometry
Result:
Modeling
Transforms
• All vertices of scene in shared 3-D “world” coordinate system
Lighting
Calculations
• Vertices shaded according to lighting model
Viewing
Transform
• Scene vertices in 3-D “view” or “camera” coordinate system
Clipping
Projection
Transform
• Exactly those vertices & portions of polygons in view frustum
• 2-D screen coordinates of clipped vertices
7/27/2016
The Rendering Pipeline: 3-D
Scene graph
Object geometry
Result:
Modeling
Transforms
• All vertices of scene in shared 3-D “world” coordinate system
Lighting
Calculations
• Vertices shaded according to lighting model
Viewing
Transform
• Scene vertices in 3-D “view” or “camera” coordinate system
Clipping
Projection
Transform
• Exactly those vertices & portions of polygons in view frustum
• 2-D screen coordinates of clipped vertices
7/27/2016
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
7/27/2016
Rendering: Transformations

Modeling transforms
– Size, place, scale, and rotate objects and parts of
the model w.r.t. each other
– Object coordinates  world coordinates
Y
Y
X
Z
X
Z
7/27/2016
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
7/27/2016
Rendering: Transformations

Projection transform
– Apply perspective foreshortening

Distant = small: the pinhole camera model
– View coordinates  screen coordinates
7/27/2016
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
X  cos q
    q
Y  sin

sin q  X 
 
q
cos  Y 
Multiply matrices = concatenate transforms!
7/27/2016
The Rendering Pipeline: 3-D
Scene graph
Object geometry
Result:
Modeling
Transforms
• All vertices of scene in shared 3-D “world” coordinate system
Lighting
Calculations
• Vertices shaded according to lighting model
Viewing
Transform
• Scene vertices in 3-D “view” or “camera” coordinate system
Clipping
Projection
Transform
• Exactly those vertices & portions of polygons in view frustum
• 2-D screen coordinates of clipped vertices
7/27/2016
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
7/27/2016
The Rendering Pipeline: 3-D
Scene graph
Object geometry
Result:
Modeling
Transforms
• All vertices of scene in shared 3-D “world” coordinate system
Lighting
Calculations
• Vertices shaded according to lighting model
Viewing
Transform
• Scene vertices in 3-D “view” or “camera” coordinate system
Clipping
Projection
Transform
• Exactly those vertices & portions of polygons in view frustum
• 2-D screen coordinates of clipped vertices
7/27/2016
Rendering: Clipping

Clipping a 3-D primitive returns its
intersection with the view frustum:

See Foley & van Dam section 19.1
7/27/2016
Rendering: Clipping

Clipping is tricky!
Clip
In: 3 vertices
Out: 6 vertices
Clip
In: 1 polygon
Out: 2 polygons
7/27/2016
The End

Next: Basic OpenGL
7/27/2016
Download