1 / 24

How to …

Learn how to establish your position in the scene, position objects within the scene, scale objects, and apply perspective transformations in OpenGL. Understand the terminology, pipeline, and various transformations used in OpenGL. Explore the modeling, viewing, and projection transformations, and the differences between orthographic and perspective projections. Become familiar with the OpenGL matrix stack and how to manage camera viewpoints and buffers for a realistic 3D scene.

huertad
Télécharger la présentation

How to …

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. How to … • Establish your position in the scene • Position objects within the scene • Scale objects • Establish a perspective transformation • Moving around in OpenGL using a camera

  2. Terminology

  3. The Pipeline

  4. Eye Coordinates • Viewpoint of the observer • They are a virtual fixed coordinate system • Used as a common frame of reference

  5. Viewing Transformations • Like placing and pointing the camera at the scene • To be specified before any other transformation • By default, the point of observation is at the origin, looking down the negative Z-axis. What about objects drawn with positive Z values?

  6. Modeling Transformation • Manipulate the model and the particular objects within it • Move objects into place, rotate them, and scale them • These are the most common modeling transformations

  7. Modeling Transformation - the ORDER matters • Final appearance of an object depends greatly on the order of transformations

  8. ModelView Duality • In fact, viewing and modeling transformations are the same • Induce the same effects on the final appearance of the scene • The distinctions is made as a convenience for the programmer

  9. Projection Transformations • Applied after the modelview transformation • Defines the viewing volume and the clipping planes • Specifies how a finished scene is projected to the screen

  10. Orthographic Vs. Perspective • In an Orthographic projection: • objects are mapped directly on the 2D screen using parallel lines • No matter how far away something is • In Perspective projection: • Scenes are more realistic • Distant objects appear smaller than nearby objects of the same size • Parallel lines in 3D space do not always appear parallel See Code Example 3

  11. The Pipeline - Recall

  12. Slow but steady .. • Current Matrix is part of the OpenGL state • Options are: • GL_MODELVIEW – changes, rotate, translate the model • GL_PROJECTION – changes, translate, rotate the camera • To specify which one is the “Current Matrix” :glMatrixMode(…) • Subsequent matrix operations affect the specified matrix • One of this matrices could be change in a given time

  13. Translation void glTranslatef(GLfloat x, GLfloat y, GLfloat z ) This function takes as parameters the amount to translate along the x, y, and z directions

  14. Translation – (cont’) glTranslate(0.0f, 10.0f, 0.0f) glutWireCube(10.0f) • Construct a translation matrix for positive 10 Y • Multiply it by themodelview matrix

  15. Rotation void glRotatef(Glfloatangle,GLfloat x, GLfloat y, GLfloat z ) This function performs a rotation around the vector specified by the x, y, and z arguments. The angle of rotation is in the counterclockwise direction. A rotation around an arbitrary axis could be done.

  16. Scaling void glScalef(GLfloat x, GLfloat y, GLfloat z ) Multiplies the x, y and z values by the scaling factors specified. Scaling does not have to be uniform.

  17. The Identity Matrix • Matrix operations are cumulative • Erroneous artifacts may occur to the scene • You reset the origin by loading the modelview matrix with the identity matrix glTranslate(0.0f, 10.0f, 0.0f); glutSolidSphere(1.0f); glTranslatef(10.0f, 0.0f, 0.0f); glutSolidSphere(1.0f)

  18. The Identity Matrix – (cont’) glMatrixMode(GL_MODELVIEW) glLoadIdentity(); glTranslate(0.0f, 10.0f, 0.0f); glutSolidSphere(1.0f); glLoadIdentity(); glTranslatef(10.0f, 0.0f, 0.0f); glutSolidSphere(1.0f)

  19. Matrix stack • Resetting the modelview matrix to identity before placing the every object is not always desirable • To save the current transformation state • OpenGL maintains a matrix stack for both the modelview and projection matrices • glPushMatrix() – push the current state matrix to the stack • glPopMatrix() – pop the top matrix out of the stack, andreplace the current state matrix with it

  20. Matrix stack – (cont’) See Code Example 4

  21. Viewing Volume glOrtho(left, right, bottom, top, near, far)

  22. Viewing Volume – (cont’) glFrustum(left, right, bottom, top, near, far) gluPerspective(GLdoublefov ,GLdoubleaspectRatio,GLdoublezNear,GLdoublezFar)

  23. Camera Management gluLookAt(GLdoubleeyex, GLdoubleeyey, Gldoubleeyez, GLdoublecenterx, GLdoublecentery, GLdoublecenterz, GLdoubleupx, GLdoubleupy, GLdoubleupz)

  24. Buffers • Important aspect of the current state of OpenGL • Buffers dimensions are the same as the window’s dimension • ColorBuffer – stores the current color for each pixel • Depth Buffer – stores the depth of each pixel of the scene (Z-Buffer) • Accumulation buffer, stencil buffer, etc’ .. • glEnable(GL_DEPTH_TEST) – enables the Z-Buffer in OpenGL. ….. Otherwise?

More Related