Title: Welcome to CSc 830 Advanced Computer Graphics
1Welcome toCSc 830 Advanced Computer Graphics
- By Ilmi Yoon
- Based on Lecture note from David Luebke
Pradondet Nilagupta
2Where Were Going
- Todays lectures
- Mathematical Foundations
- The graphics pipeline the big picture
- Rigid-body transforms
- Homogeneous coordinates
- The viewing transform
- The projection transform
3Mathematical Foundations
- FvD appendix gives good review
- Ill give a brief, informal review of some of the
mathematical tools well employ - Geometry (2D, 3D)
- Trigonometry
- Vector and affine spaces
- Points, vectors, and coordinates
- Dot and cross products
- Linear transforms and matrices
42D Geometry
- Know your high-school geometry
- Total angle around a circle is 360 or 2p
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
5Trigonometry
- 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)
63D Geometry
- To model, animate, and render 3D scenes, we must
specify - Location
- Displacement from arbitrary locations
- Orientation
- Well look at two types of spaces
- Vector spaces
- Affine spaces
- We will often be sloppy about the distinction
7Vector 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
8Vector 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
9Vector 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
10Vector 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
11Vectors And Point
- 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
12Affine 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
defined
Q
v
P
13Affine 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 points and integers in C
- Be careful to avoid nonsensical operations
14Affine Lines An Aside
- Parametric representation of a line with a
direction vector d and a point P1 on the line - P(a) Porigin ad
- Restricting 0 ? a produces a ray
- Setting d to P - Q and restricting 0 ? a ? 1
produces a line segment between P and Q
15Dot 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
16Cross 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
17Linear 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
18Matrices
- By convention, matrix element Mrc is located at
row r and column c - By (OpenGL) convention, vectors are columns
19Matrices
- Matrix-vector multiplication applies a linear
transformation to a vector - Recall how to do matrix multiplication
20Matrix 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
213-D Graphics A Whirlwind Tour
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
22The Display You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
23The Framebuffer You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
24The Rendering Pipeline
- Why do we call it a pipeline?
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
252-D Rendering You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
26The Rendering Pipeline 3-D
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
27The Rendering Pipeline 3-D
Scene graphObject geometry
- Result
- All vertices of scene in shared 3-D world
coordinate system - Vertices shaded according to lighting model
- Scene vertices in 3-D view or camera
coordinate system - Exactly those vertices portions of polygons in
view frustum - 2-D screen coordinates of clipped vertices
ModelingTransforms
LightingCalculations
ViewingTransform
Clipping
ProjectionTransform
28The Rendering Pipeline 3-D
Scene graphObject geometry
- Result
- All vertices of scene in shared 3-D world
coordinate system - Vertices shaded according to lighting model
- Scene vertices in 3-D view or camera
coordinate system - Exactly those vertices portions of polygons in
view frustum - 2-D screen coordinates of clipped vertices
ModelingTransforms
LightingCalculations
ViewingTransform
Clipping
ProjectionTransform
29Rendering 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
30Rendering Transformations
- Modeling transforms
- Size, place, scale, and rotate objects parts of
the model w.r.t. each other - Object coordinates ? world coordinates
Y
Z
X
31Rendering 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
32Rendering Transformations
- Projection transform
- Apply perspective foreshortening
- Distant small the pinhole camera model
- View coordinates ? screen coordinates
33Rendering Transformations
- All these transformations involve shifting
coordinate systems (i.e., basis sets) - Thats what matrices do
- Represent coordinates as vectors, transforms as
matrices - Multiply matrices concatenate transforms!
34Rendering Transformations
- Homogeneous coordinates represent coordinates in
3 dimensions with a 4-vector - Denoted x, y, z, w
- Note that typically w 1 in model coordinates
- To get 3-D coordinates, divide by wx, y, z
x/w, y/w, z/w - Transformations are 4x4 matrices
- Why? To handle translation and projection
35Rendering 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
36The Rendering Pipeline 3-D
Scene graphObject geometry
- Result
- All vertices of scene in shared 3-D world
coordinate system - Vertices shaded according to lighting model
- Scene vertices in 3-D view or camera
coordinate system - Exactly those vertices portions of polygons in
view frustum - 2-D screen coordinates of clipped vertices
ModelingTransforms
LightingCalculations
ViewingTransform
Clipping
ProjectionTransform
37Rendering 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
38The Rendering Pipeline 3-D
Scene graphObject geometry
- Result
- All vertices of scene in shared 3-D world
coordinate system - Vertices shaded according to lighting model
- Scene vertices in 3-D view or camera
coordinate system - Exactly those vertices portions of polygons in
view frustum - 2-D screen coordinates of clipped vertices
ModelingTransforms
LightingCalculations
ViewingTransform
Clipping
ProjectionTransform
39Rendering Clipping
- Clipping a 3-D primitive returns its intersection
with the view frustum - See Foley van Dam section 19.1
40Rendering Clipping
In 3 vertices Out 6 vertices
Clip
In 1 polygon Out 2 polygons
Clip
41The Rendering Pipeline 3-D
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
42Modeling 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
43Modeling 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
Body
Head
Arm
Trunk
Leg
Eye
Mouth
44Modeling The Scene Graph
- Traverse the scene graph in depth-first order,
concatenating transformations - Maintain a matrix stack of transformations
Robot
Visited
Head
Body
Unvisited
Leg
Arm
Trunk
Eye
Mouth
MatrixStack
Active
Foot
45Modeling 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
46Modeling 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
47Rigid-Body Transforms
- Goal object coordinates?world 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
48Vectors and Matrices
- Vector algebra operations can be expressed in
this matrix form - Dot product
- Cross product
- Note useright-handrule!
49Translations
- 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
502-D Rotation
x x cos(?) - y sin(?) y x sin(?) y cos(?)
(Draw it)
512-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
523-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
53Scaling
- Scaling a coordinate means multiplying each of
its components by a scalar - Uniform scaling means this scalar is the same for
all components
? 2
54Scaling
- Non-uniform scaling different scalars per
component - How can we represent this in matrix form?
X ? 2,Y ? 0.5
55Scaling
- Scaling operation
- Or, in matrix form
scaling matrix
562-D Rotation
- This is easy to capture in matrix form
- 3-D is more complicated
- Need to specify an axis of rotation
- Simple cases rotation about X, Y, Z axes
573-D Rotation
- What does the 3-D rotation matrix look like for a
rotation about the Z-axis? - Build it coordinate-by-coordinate
583-D Rotation
- What does the 3-D rotation matrix look like for a
rotation about the Y-axis? - Build it coordinate-by-coordinate
593-D Rotation
- What does the 3-D rotation matrix look like for a
rotation about the X-axis? - Build it coordinate-by-coordinate
603-D Rotation
- General rotations in 3-D require rotating about
an arbitrary axis of rotation - Deriving the rotation matrix for such a rotation
directly is difficult - But possible, see McMillans lectures
- Standard approach express general rotation as
composition of canonical rotations - Rotations about X, Y, Z
61Composing Canonical Rotations
- Goal rotate about arbitrary vector A by ?
- Idea we know how to rotate about X,Y,Z
- So, rotate about Y by ? until A lies in the YZ
plane, Then rotate about X by ? until A coincides
with Z, Then rotate about Z by ? - Then reverse the rotation about X (by -?)
- Then reverse the rotation about Y (by -?)
62Composing Canonical Rotations
- First rotating about Y by ? until A lies in YZ
- Draw it
- How exactly do we calculate ??
- Project A onto XZ plane
- Find angle ? to X
- ? -(90 - ?) ? - 90
- Second rotating about X by ? until A lies on Z
- How do we calculate ??
63Composing Canonical Rotations
- Why are we slogging through all this tedium?
- A Because youll have to do it on the test
643-D Rotation Matrices
- So an arbitrary rotation about A composites
several canonical rotations together - We can express each rotation as a matrix
- Compositing transforms multiplying matrices
- Thus we can express the final rotation as the
product of canonical rotation matrices - Thus we can express the final rotation with a
single matrix!
65Compositing Matrices
- So we have the following matrices
- p The point to be rotated about A by ?
- Ry? Rotate about Y by ?
- Rx ? Rotate about X by ?
- Rz? Rotate about Z by ?
- Rx ? -1 Undo rotation about X by ?
- Ry?-1 Undo rotation about Y by ?
- In what order should we multiply them?
66Compositing Matrices
- Short answer the transformations, in order, are
written from right to left - In other words, the first matrix to affect the
vector goes next to the vector, the second next
to the first, etc. - So in our case
- p Ry?-1 Rx ? -1 Rz? Rx ? Ry? p
67Rotation Matrices
- Notice these two matrices
- Rx ? Rotate about X by ?
- Rx ? -1 Undo rotation about X by ?
- How can we calculate Rx ? -1?
68Rotation Matrices
- Notice these two matrices
- Rx ? Rotate about X by ?
- Rx ? -1 Undo rotation about X by ?
- How can we calculate Rx ? -1?
- Obvious answer calculate Rx (-?)
- Clever answer exploit fact that rotation
matrices are orthonormal
69Rotation Matrices
- Notice these two matrices
- Rx ? Rotate about X by ?
- Rx ? -1 Undo rotation about X by ?
- How can we calculate Rx ? -1?
- Obvious answer calculate Rx (-?)
- Clever answer exploit fact that rotation
matrices are orthonormal - What is an orthonormal matrix?
- What property are we talking about?
70Rotation Matrices
- Orthonormal matrix
- orthogonal (columns/rows linearly independent)
- Columns/rows sum to 1
- The inverse of an orthogonal matrix is just its
transpose
71Translation Matrices?
- We can composite scale matrices just as we did
rotation matrices - But how to represent translation as a matrix?
- Answer with homogeneous coordinates
72Homogeneous Coordinates
- Homogeneous coordinates represent coordinates in
3 dimensions with a 4-vector -
- (Note that typically w 1 in object coordinates)
73Homogeneous Coordinates
- Homogeneous coordinates seem unintuitive, but
they make graphics operations much easier - Our transformation matrices are now 4x4
74Homogeneous Coordinates
- Homogeneous coordinates seem unintuitive, but
they make graphics operations much easier - Our transformation matrices are now 4x4
75Homogeneous Coordinates
- Homogeneous coordinates seem unintuitive, but
they make graphics operations much easier - Our transformation matrices are now 4x4
76Homogeneous Coordinates
- Homogeneous coordinates seem unintuitive, but
they make graphics operations much easier - Our transformation matrices are now 4x4
77Homogeneous Coordinates
- How can we represent translation as a 4x4
matrix? - A Using the rightmost column