1 / 51

Transformations

Transformations. Aaron Bloomfield CS 445: Introduction to Graphics Fall 2006 (Slide set originally by David Luebke). Graphics coordinate systems. X is red Y is green Z is blue. If you are on the +z axis, and +y is up, then +x is to the right Math fields have +x going to the left.

cheung
Télécharger la présentation

Transformations

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Transformations Aaron Bloomfield CS 445: Introduction to Graphics Fall 2006 (Slide set originally by David Luebke)

  2. Graphics coordinate systems • X is red • Y is green • Z is blue

  3. If you are on the +z axis, and +y is up, then +x is to the right Math fields have +x going to the left Graphics coordinate systems

  4. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  5.  2 Scaling • Scaling a coordinate means multiplying each of its components by a scalar • Uniform scaling means this scalar is the same for all components:

  6. X  2,Y  0.5 Scaling • Non-uniform scaling: different scalars per component: • How can we represent this in matrix form?

  7. Scaling • Scaling operation: • Or, in matrix form: scaling matrix

  8. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  9. (x’, y’) (x, y)  2-D Rotation x’ = x cos() - y sin() y’ = x sin() + y cos()

  10. 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

  11. Rotation example: airplane

  12. 3-D Rotation • What does the 3-D rotation matrix look like for a rotation about the Z-axis? • Build it coordinate-by-coordinate • 2-D rotation from last slide:

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

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

  15. Rotations about the axes

  16. 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 a good exercise in linear algebra • Another approach: express general rotation as composition of canonical rotations • Rotations about X, Y, Z

  17. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  18. 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 -) • Show video…

  19. 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 ?

  20. 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!

  21. 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?

  22. Compositing Matrices • Remember: 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. • This is the rule with column vectors (OpenGL); row vectors would be the opposite • So in our case: p’ = Ry-1 Rx -1 Rz Rx Ry p

  23. 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?

  24. Rotation Matrices • Rotation matrix is orthogonal • Columns/rows linearly independent • Columns/rows sum to 1 • The inverse of an orthogonal matrix is just its transpose:

  25. Rotation Matrix for Any Axis • Given glRotated (angle, x, y, z) • Let c = cos(angle) • Let s = sin(angle) • And normalize the vector so that ||(x,y,z|| == 1 • The produced matrix to rotate something by angle degrees around the axis (x,y,z) is:

  26. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  27. Translations • For convenience we usually describe objects in relation to their own coordinate system • We can translate or move points to a new position by adding offsets to their coordinates: • Note that this translates all points uniformly

  28. 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

  29. Homogeneous Coordinates • Homogeneous coordinates: represent coordinates in 3 dimensions with a 4-vector • [x, y, z, 0]T represents a point at infinity (use for vectors) • [0, 0, 0]T is not allowed • Note that typically w = 1 in object coordinates

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

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

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

  33. Homogeneous Coordinates • Homogeneous coordinates seem unintuitive, but they make graphics operations much easier • Our transformation matrices are now 4x4: • Performing a scale:

  34. More On Homogeneous Coords • What effect does the following matrix have? • Conceptually, the fourth coordinate w is a bit like a scale factor

  35. More On Homogeneous Coords • Intuitively: • The w coordinate of a homogeneous point is typically 1 • Decreasing w makes the point “bigger”, meaning further from the origin • Homogeneous points with w = 0 are thus “points at infinity”, meaning infinitely far away in some direction. (What direction?) • To help illustrate this, imagine subtracting two homogeneous points

  36. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  37. Homogeneous Coordinates • How can we represent translation as a 4x4 matrix? • A: Using the rightmost column: • Performing a translation:

  38. Translation Matrices • Now that we can represent translation as a matrix, we can composite it with other transformations • Ex: rotate 90° about X, then 10 units down Z:

  39. Translation Matrices • Now that we can represent translation as a matrix, we can composite it with other transformations • Ex: rotate 90° about X, then 10 units down Z:

  40. Translation Matrices • Now that we can represent translation as a matrix, we can composite it with other transformations • Ex: rotate 90° about X, then 10 units down Z:

  41. Translation Matrices • Now that we can represent translation as a matrix, we can composite it with other transformations • Ex: rotate 90° about X, then 10 units down Z:

  42. Transformation Commutativity • Is matrix multiplication, in general, commutative? Does AB = BA? • What about rotation, scaling, and translation matrices? • Does RxRy = RyRx? • Does RAS = SRA ? • Does RAT = TRA ?

  43. Outline • Scaling • Rotations • Composing Rotations • Homogeneous Coordinates • Translations • Projections

  44. Perspective Projection • In the real world, objects exhibit perspective foreshortening: distant objects appear smaller • The basic situation:

  45. How tall shouldthis bunny be? Perspective Projection • When we do 3-D graphics, we think of the screen as a 2-D window onto the 3-D world • The view plane

  46. Viewplane X P (x, y, z) x’ = ? (0,0,0) Z d Perspective Projection • The geometry of the situation is that of similar triangles. View from above: • What is x?

  47. Perspective Projection • Desired result for a point [x, y, z, 1]T projected onto the view plane: • What could a matrix look like to do this?

  48. A Perspective Projection Matrix • Answer:

  49. A Perspective Projection Matrix • Example: • Or, in 3-D coordinates:

  50. A Perspective Projection Matrix • OpenGL’s gluPerspective() command generates a slightly more complicated matrix: • Can you figure out what this matrix does?

More Related