Welcome to CSc 830 Advanced Computer Graphics - PowerPoint PPT Presentation

1 / 77
About This Presentation
Title:

Welcome to CSc 830 Advanced Computer Graphics

Description:

Trigonometry. Vector and affine spaces. Points, vectors, and coordinates ... Trigonometry. Sine: 'opposite over hypotenuse' Cosine: 'adjacent over hypotenuse' ... – PowerPoint PPT presentation

Number of Views:114
Avg rating:3.0/5.0
Slides: 78
Provided by: Ilmi7
Category:

less

Transcript and Presenter's Notes

Title: Welcome to CSc 830 Advanced Computer Graphics


1
Welcome toCSc 830 Advanced Computer Graphics
  • By Ilmi Yoon
  • Based on Lecture note from David Luebke
    Pradondet Nilagupta

2
Where Were Going
  • Todays lectures
  • Mathematical Foundations
  • The graphics pipeline the big picture
  • Rigid-body transforms
  • Homogeneous coordinates
  • The viewing transform
  • The projection transform

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

4
2D 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

5
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)
6
3D 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

7
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

8
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

9
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

10
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

11
Vectors 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

12
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
    defined

Q
v
P
13
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 points and integers in C
  • Be careful to avoid nonsensical operations

14
Affine 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

15
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
16
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

17
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

18
Matrices
  • By convention, matrix element Mrc is located at
    row r and column c
  • By (OpenGL) convention, vectors are columns

19
Matrices
  • Matrix-vector multiplication applies a linear
    transformation to a vector
  • Recall how to do matrix multiplication

20
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

21
3-D Graphics A Whirlwind Tour
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
22
The Display You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
23
The Framebuffer You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
24
The Rendering Pipeline
  • Why do we call it a pipeline?

Model CameraParameters
Rendering Pipeline
Framebuffer
Display
25
2-D Rendering You Know
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
26
The Rendering Pipeline 3-D
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
27
The 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
28
The 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
29
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

30
Rendering 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
31
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

32
Rendering Transformations
  • Projection transform
  • Apply perspective foreshortening
  • Distant small the pinhole camera model
  • View coordinates ? screen coordinates

33
Rendering 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!

34
Rendering 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

35
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

36
The 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
37
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

38
The 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
39
Rendering Clipping
  • Clipping a 3-D primitive returns its intersection
    with the view frustum
  • See Foley van Dam section 19.1

40
Rendering Clipping
  • Clipping is tricky!

In 3 vertices Out 6 vertices
Clip
In 1 polygon Out 2 polygons
Clip
41
The Rendering Pipeline 3-D
Model CameraParameters
Rendering Pipeline
Framebuffer
Display
42
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

43
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
Body
Head
Arm
Trunk
Leg
Eye
Mouth
44
Modeling 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
45
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

46
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

47
Rigid-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

48
Vectors and Matrices
  • Vector algebra operations can be expressed in
    this matrix form
  • Dot product
  • Cross product
  • Note useright-handrule!

49
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

50
2-D Rotation
x x cos(?) - y sin(?) y x sin(?) y cos(?)
(Draw it)
51
2-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

52
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

53
Scaling
  • Scaling a coordinate means multiplying each of
    its components by a scalar
  • Uniform scaling means this scalar is the same for
    all components

? 2
54
Scaling
  • Non-uniform scaling different scalars per
    component
  • How can we represent this in matrix form?

X ? 2,Y ? 0.5
55
Scaling
  • Scaling operation
  • Or, in matrix form

scaling matrix
56
2-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

57
3-D Rotation
  • What does the 3-D rotation matrix look like for a
    rotation about the Z-axis?
  • Build it coordinate-by-coordinate

58
3-D Rotation
  • What does the 3-D rotation matrix look like for a
    rotation about the Y-axis?
  • Build it coordinate-by-coordinate

59
3-D Rotation
  • What does the 3-D rotation matrix look like for a
    rotation about the X-axis?
  • Build it coordinate-by-coordinate

60
3-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

61
Composing 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 -?)

62
Composing 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 ??

63
Composing Canonical Rotations
  • Why are we slogging through all this tedium?
  • A Because youll have to do it on the test

64
3-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!

65
Compositing 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?

66
Compositing 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

67
Rotation Matrices
  • Notice these two matrices
  • Rx ? Rotate about X by ?
  • Rx ? -1 Undo rotation about X by ?
  • How can we calculate Rx ? -1?

68
Rotation 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

69
Rotation 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?

70
Rotation Matrices
  • Orthonormal matrix
  • orthogonal (columns/rows linearly independent)
  • Columns/rows sum to 1
  • The inverse of an orthogonal matrix is just its
    transpose

71
Translation Matrices?
  • We can composite scale matrices just as we did
    rotation matrices
  • But how to represent translation as a matrix?
  • Answer with homogeneous coordinates

72
Homogeneous Coordinates
  • Homogeneous coordinates represent coordinates in
    3 dimensions with a 4-vector
  • (Note that typically w 1 in object coordinates)

73
Homogeneous Coordinates
  • Homogeneous coordinates seem unintuitive, but
    they make graphics operations much easier
  • Our transformation matrices are now 4x4

74
Homogeneous Coordinates
  • Homogeneous coordinates seem unintuitive, but
    they make graphics operations much easier
  • Our transformation matrices are now 4x4

75
Homogeneous Coordinates
  • Homogeneous coordinates seem unintuitive, but
    they make graphics operations much easier
  • Our transformation matrices are now 4x4

76
Homogeneous Coordinates
  • Homogeneous coordinates seem unintuitive, but
    they make graphics operations much easier
  • Our transformation matrices are now 4x4

77
Homogeneous Coordinates
  • How can we represent translation as a 4x4
    matrix?
  • A Using the rightmost column
Write a Comment
User Comments (0)
About PowerShow.com