0
TRANSFORMATIONS
2014
 in OpenGL ES, negative z-values go into the screen. This is because OpenGL
ES uses a right-handed coordinate system...
2014VERTICES AND PROJECTION
 Cartesian systems
 OpenGL
 +z  viewer
 DirectX is left handed (APIs to translate)
 Pers...
2014LAB L4 – COORDINATE AXES
 Click and move the mouse, to rotate the Z axis, around Y
4
x
y
2014ORTHOGRAPHIC PROJECTION - MATRIX
 Consists of a translation and scaling component
 An object looks the same whether ...
2014PERSPECTIVE PROJECTION - MATRIX
 An object’s x and y are distorted, depending on the distance from the camera,
giving...
2014PERSPECTIVE PROJECTION
 Viewing volume
 Clipping
*If near plane is very close to object, expect nasty clipping to ha...
2014MATRIX ORDERING CONVENTIONS
 “Column-Major” notation  Read matrix notations in transposed manner
 M.V.P is to be tr...
2014TRANSFORMATIONS
 All vertices are in model-space, when input to the GL engine
 Where is the viewer ?
 Moving the ob...
2014TRANSLATION OF A POINT - EXAMPLE
 [x y z 1] * [?] = [x-a y-b z-c 1]
 [?] = [1 0 0 0]
 = [0 1 0 0]
 = [0 0 1 0]
 =...
2014ORDER OF OPERATIONS
 Order - makes a difference for final position of object
 Do Model matrix operations carefully
-...
2014TRANSLATION
 matrix1.translate(X,0.0,0);
X = 0
X = 0.4
 Translation applied to all objects (effect is not dependent ...
2014ROTATION
x
y
z
Rotation  Observe effect of x offset!
Apply translation “after” rotation
Refresh M,V,P after every rot...
2014GETTING THE EYE TO SEE THE OBJECT
 “Model” Matrix made the object “look” right
 Now make the object visible to the “...
2014PERSPECTIVE PROJECTION
 Needs the below four inputs
 aspect ratio – (WIDTH / HEIGHT) of target screen
 vertical fie...
2014VIEWPORT TRANSFORMATION
 Convert from the rendering to the final screen size
 ie physical screen
 Define the viewpo...
2014GLES3.0 - TRANSFORM FEEDBACK
 Refer quiz
GFX2014 Advanced Graphics Workshop, Bangalore 17
2014
SUMMARY - THE TRANSFORMATION
SEQUENCE
Translation example
Just a mathematical step - w
2014HW OPTIMISATIONS
 Not all triangles are visible
 HW can reject based on depth
 coverage
 Front-facing or back-faci...
2014PROGRAMMING !
2014LAB L6 – ROTATING MODEL
21
REAL LIFE 3D MODELS
2014REAL-LIFE MODELLING OF OBJECTS
 3D models are stored in a combination of
 Vertices
 Indices / Faces *
 Normals
 T...
2014EXPORTING MODELS FROM BLENDER
 .obj export
 Always triangulate for GLES2
 Model always from Top-View
 Ie, Y up (de...
PROGRAMMING
 Loading 3D models is an
application functionality
 No new APIs from OpenGLES
are needed
 A parser is requi...
Upcoming SlideShare
Loading in...5
×

GFX Part 5 - Introduction to Object Transformations in OpenGL ES

295

Published on

GFX Part 5 - Introduction to Object Transformations in OpenGL ES

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
295
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "GFX Part 5 - Introduction to Object Transformations in OpenGL ES"

  1. 1. TRANSFORMATIONS
  2. 2. 2014  in OpenGL ES, negative z-values go into the screen. This is because OpenGL ES uses a right-handed coordinate system. GLKit, on the other hand (pun intended), uses the more conventional left-handed coordinate system. GFX2014 Advanced Graphics Workshop, Bangalore http://www.learnopengles.com/understanding-opengls-matrices/
  3. 3. 2014VERTICES AND PROJECTION  Cartesian systems  OpenGL  +z  viewer  DirectX is left handed (APIs to translate)  Perspective, and Ortho  Perspective matches natural viewing expectation  Projection matrix (far/near, viewport size, Aspect ratio)  Order of matrix multiplication – reversed  projection*view*model Perspective projection
  4. 4. 2014LAB L4 – COORDINATE AXES  Click and move the mouse, to rotate the Z axis, around Y 4 x y
  5. 5. 2014ORTHOGRAPHIC PROJECTION - MATRIX  Consists of a translation and scaling component  An object looks the same whether it’s close or far away from the camera 5
  6. 6. 2014PERSPECTIVE PROJECTION - MATRIX  An object’s x and y are distorted, depending on the distance from the camera, giving the “perspective” effect 6
  7. 7. 2014PERSPECTIVE PROJECTION  Viewing volume  Clipping *If near plane is very close to object, expect nasty clipping to happen
  8. 8. 2014MATRIX ORDERING CONVENTIONS  “Column-Major” notation  Read matrix notations in transposed manner  M.V.P is to be treated P.V.M  OpenGL / ES uses the Column-Order convention for depiction of operations Transformation
  9. 9. 2014TRANSFORMATIONS  All vertices are in model-space, when input to the GL engine  Where is the viewer ?  Moving the object to the viewer-eye at origin [MV transformation]  What is the bounding volume of the world ?  Object needs to be clipped to the bounding box [Projection]  Viewport normalisation  Done by perspective division, to result in values of -1:1 Diagram
  10. 10. 2014TRANSLATION OF A POINT - EXAMPLE  [x y z 1] * [?] = [x-a y-b z-c 1]  [?] = [1 0 0 0]  = [0 1 0 0]  = [0 0 1 0]  = [-a -b -c 1]  Revise this  What happens if w is 0 ?  Point vs Vector !  From OpenGL FAQ - “…The translation components occupy the 13th, 14th, and 15th elements of the 16-element matrix …” (note the column order reference) Order of operation Observation - Last row – non unity W - purpose
  11. 11. 2014ORDER OF OPERATIONS  Order - makes a difference for final position of object  Do Model matrix operations carefully - From “The redbook”
  12. 12. 2014TRANSLATION  matrix1.translate(X,0.0,0); X = 0 X = 0.4  Translation applied to all objects (effect is not dependent on depth of object)
  13. 13. 2014ROTATION x y z Rotation  Observe effect of x offset! Apply translation “after” rotation Refresh M,V,P after every rotate -0 Lookat
  14. 14. 2014GETTING THE EYE TO SEE THE OBJECT  “Model” Matrix made the object “look” right  Now make the object visible to the “eye” – The “View”  Eye is always at the origin {0,0,0}  So using matrices, move the current object to the eye  “LookAt” is implemented in many standard toolkits  The LookAt transformation is defined by  Viewpoint - from where the view ray starts (eye)  A Reference point (where the view ray ends) – in middle of scene (center)  A look-”up” direction (up)  ex – gluLookAt Utility function  Significant contributor of grey-hair Viewport
  15. 15. 2014PERSPECTIVE PROJECTION  Needs the below four inputs  aspect ratio – (WIDTH / HEIGHT) of target screen  vertical field of view (called FOV): the vertical angle of the camera into which we look into  location of the near Z plane – Objects in front of this are not drarwn  location of the far Z plane – Beyond this, objects are not drawn  The vertical field of view enables moving “in” and “out” – making the same object appear small or big 15
  16. 16. 2014VIEWPORT TRANSFORMATION  Convert from the rendering to the final screen size  ie physical screen  Define the viewport using glViewport()  Viewport can be an area anywhere within the physical screen  Reminder – viewport(0,0,128,128)  This takes care of aspect ratio  After the transformation, successful triangles get to the rasterisation HW, and then to the Fragment shader HW optimisations
  17. 17. 2014GLES3.0 - TRANSFORM FEEDBACK  Refer quiz GFX2014 Advanced Graphics Workshop, Bangalore 17
  18. 18. 2014 SUMMARY - THE TRANSFORMATION SEQUENCE Translation example Just a mathematical step - w
  19. 19. 2014HW OPTIMISATIONS  Not all triangles are visible  HW can reject based on depth  coverage  Front-facing or back-facing (Culling)  Winding Rules used  Culling is disabled by default per specification  However, most HW do this optimisation by default to save on bandwidth/ later pixel processing Programming
  20. 20. 2014PROGRAMMING !
  21. 21. 2014LAB L6 – ROTATING MODEL 21
  22. 22. REAL LIFE 3D MODELS
  23. 23. 2014REAL-LIFE MODELLING OF OBJECTS  3D models are stored in a combination of  Vertices  Indices / Faces *  Normals  Texture coordinates  Ex, .OBJ, 3DS, STL, FBX …  f, v, v//norm, v/t, o  Export of vertices => scaling to 1.0-1.0  Vertex normals vs face normals  Materials (mtl), animations  Problem of multiple indices not allowed in openGL  Tools and Models  Blender, Maya, …  http://assimp.sourceforge.net/ - tool for importing multiple types  http://www.blendswap.com/ - Blender models  Tessellation of meshes can be aided by HW in GPUs
  24. 24. 2014EXPORTING MODELS FROM BLENDER  .obj export  Always triangulate for GLES2  Model always from Top-View  Ie, Y up (default setting)  Always UV unwrap each object  Normals if needed (lighting)  Rest is rendering as usual 24
  25. 25. PROGRAMMING  Loading 3D models is an application functionality  No new APIs from OpenGLES are needed  A parser is required to parse the model files, and extract the vertex, attribute, normal, texture coordinate information
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×