1 / 19

Transformations

Transformations. CS 445/645 Introduction to Computer Graphics David Luebke, Spring 2003. Admin. Call roll Assn 1 News flash: Assn 1 not necessarily a gimme Turn-in instructions by email soon Problems with lab?. Recap: OpenGL: Modeling Transforms.

huyen
Download Presentation

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 CS 445/645Introduction to Computer Graphics David Luebke, Spring 2003

  2. Admin • Call roll • Assn 1 • News flash: Assn 1 not necessarily a gimme • Turn-in instructions by email soon • Problems with lab? David Luebke 210/15/2014

  3. Recap: OpenGL: Modeling Transforms • OpenGL provides several commands for performing modeling transforms: • glTranslate{fd}(x, y, z) • Creates a matrix T that transforms an object by translating (moving) it by the specified x, y, and z values • glRotate{fd}(angle, x, y, z) • Creates a matrix R that transforms an object by rotating it counterclockwise angle degrees about the vector {x, y, z} • glScale{fd}(x, y, z) • Creates a matrix S that scales an object by the specified factors in the x, y, and z directions David Luebke 310/15/2014

  4. Recap:OpenGL: Matrix Manipulation • Each of these postmultiplies the current matrix • E.g., if current matrix is C, then C=CS • The current matrix is either the modelview matrix or the projection matrix (also a texture matrix, won’t discuss) • Set these with glMatrixMode(), e.g.: glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION); • WARNING: common mistake ahead! • Be sure that you are in GL_MODELVIEW mode before making modeling or viewing calls! • Ugly mistake because it can appear to work, at least for a while… David Luebke 410/15/2014

  5. Recap:OpenGL: Matrix Manipulation • More matrix manipulation calls • To replace the current matrix with an identity matrix: glLoadIdentity() • Postmultiply the current matrix with an arbitrary matrix: glMultMatrix{fd}(float/double m[16]) • Copy the current matrix and push it onto a stack: glPushMatrix() • Discard the current matrix and replace it with whatever’s on top of the stack: glPopMatrix() • Note that there are matrix stacks for both modelview and projection modes David Luebke 510/15/2014

  6. OpenGL: Specifying Color • Can specify other properties such as color • To produce a single aqua-colored triangle: glColor3f(0.1, 0.5, 1.0); glVertex3fv(v0); glVertex3fv(v1); glVertex3fv(v2); • To produce a Gouraud-shaded triangle: glColor3f(1, 0, 0); glVertex3fv(v0); glColor3f(0, 1, 0); glVertex3fv(v1); glColor3f(0, 0, 1); glVertex3fv(v2); • In OpenGL, colors can also have a fourth component  (opacity) • Generally want  = 1.0 (opaque); David Luebke 610/15/2014

  7. OpenGL: Specifying Normals • Calling glColor() sets the color for all vertices following, until the next call to glColor() • Calling glNormal() sets the normal vector for the following vertices, till next glNormal() • So flat-shaded lighting requires: glNormal3f(Nx, Ny, Nz); glVertex3fv(v0);glVertex3fv(v1);glVertex3fv(v2); • While smooth shading requires: glNormal3f(N0x, N0y, N0z); glVertex3fv(v0); glNormal3f(N1x, N1y, N1z); glVertex3fv(v1); glNormal3f(N2x, N2y, N2z); glVertex3fv(v2); • (Of course, lighting requires additional setup…) David Luebke 710/15/2014

  8. More OpenGL • Other things you’ll need to know: • To clear the screen: glClearColor(r, g, b, a); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); • Nate Robins has an excellent set of OpenGL tutorials that help illustrate many of these concepts & functions: http://www.cs.utah.edu/~narobins/opengl.html Also http://xmission.com/~nate/tutors.html • Next: the math and concepts underlying the transformation calls David Luebke 810/15/2014

  9. 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 David Luebke 910/15/2014

  10. 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 David Luebke 1010/15/2014

  11. Scaling • Non-uniform scaling: different scalars per component: • How can we represent this in matrix form? X  2,Y  0.5 David Luebke 1110/15/2014

  12. Scaling • Scaling operation: • Or, in matrix form: scaling matrix David Luebke 1210/15/2014

  13. (x’, y’) (x, y)  2-D Rotation x’ = x cos() - y sin() y’ = x sin() + y cos() (Draw it) David Luebke 1310/15/2014

  14. 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 David Luebke 1410/15/2014

  15. 3-D Rotation • What does the 3-D rotation matrix look like for a rotation about the Z-axis? • Build it coordinate-by-coordinate David Luebke 1510/15/2014

  16. 3-D Rotation • What does the 3-D rotation matrix look like for a rotation about the Y-axis? • Build it coordinate-by-coordinate David Luebke 1610/15/2014

  17. 3-D Rotation • What does the 3-D rotation matrix look like for a rotation about the X-axis? • Build it coordinate-by-coordinate David Luebke 1710/15/2014

  18. 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 • Standard approach: express general rotation as composition of canonical rotations • Rotations about X, Y, Z David Luebke 1810/15/2014

  19. 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 -) David Luebke 1910/15/2014

More Related