Presentation is loading. Please wait.

Presentation is loading. Please wait.

Geometric transformations The Pipeline

Similar presentations


Presentation on theme: "Geometric transformations The Pipeline"— Presentation transcript:

1 Geometric transformations The Pipeline
Computer Graphics Ben-Gurion University of the Negev Fall 2012 Some slides are based on Shay Shalom slides from TAU

2 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

3 Terminology Use Tnrasformation
Specifies the location of the viewer or camera Viewing Moves objects around the scene Modeling Describes the duality of viewing and modeling transformations ModelView Clips and sizes the viewing volume Projection Scales the final output to the window Viewport

4 The Pipeline

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

6 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? Subsequent transformations occur based on the newly modified coordinate system

7 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

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

9 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

10 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

11 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

12 The Pipeline - Recall

13 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

14 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

15 Translation – (cont’) glTranslate(0.0f, 10.0f, 0.0f) glutWireCube(10.0f) Construct a translation matrix for positive 10 Y Multiply it by the modelview matrix

16 Rotation void glRotatef(Glfloat angle,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.

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

18 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)

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

20 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, and replace the current state matrix with it

21 Matrix stack – (cont’) See Code Example 4

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

23 Viewing Volume – (cont’)
glFrustum(left, right, bottom, top, near, far) gluPerspective(GLdouble fov ,GLdouble aspectRatio,GLdouble zNear,GLdouble zFar)

24 Camera Management gluLookAt(GLdouble eyex, GLdouble eyey, Gldouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)

25 Buffers Important aspect of the current state of OpenGL
Buffers dimensions are the same as the window’s dimension Color Buffer – 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?


Download ppt "Geometric transformations The Pipeline"

Similar presentations


Ads by Google