2 2 transformations
play

2.2 Transformations Hao Li http://cs420.hao-li.com 1 OpenGL - PowerPoint PPT Presentation

Fall 2017 CSCI 420: Computer Graphics 2.2 Transformations Hao Li http://cs420.hao-li.com 1 OpenGL Transformations Matrices Model-view matrix (4x4 matrix) Projection matrix (4x4 matrix) vertices in canonical 3D world coordinate


  1. Fall 2017 CSCI 420: Computer Graphics 2.2 Transformations Hao Li http://cs420.hao-li.com 1

  2. OpenGL Transformations Matrices • Model-view matrix (4x4 matrix) • Projection matrix (4x4 matrix) vertices in canonical 
 3D world coordinate 
 system vertices vertices in 3D in 2D Model-view Projection 2

  3. 4x4 Model-view Matrix (this lecture) • Translate, rotate, scale objects • Position the camera vertices in canonical 
 3D world coordinate 
 system vertices vertices in 3D in 2D Model-view Projection 3

  4. 4x4 Model-view Matrix (next lecture) • Projection from 3D to 2D vertices in canonical 
 3D world coordinate 
 system vertices vertices in 3D in 2D Model-view Projection 4

  5. OpenGL Transformation Matrices Model-view Projection • Manipulated separately in OpenGL (must set matrix mode) : glMatrixMode (GL_MODELVIEW); glMatrixMode (GL_PROJECTION; 5

  6. Setting the Current Model-view Matrix • Load or post-multiply glMatrixMode (GL_MODELVIEW); glLoadIdentity(); // very common usage 
 float m[16] = { … }; glLoadMatrixf(m); // rare, advanced glMultMatrixf(m); // rare, advanced • Use library functions glTranslatef(dx, dy, dz); glRotatef(angle, vx, vy, vz); glScalef(sx, sy, sz); 6

  7. Translated, rotated, scaled object world 7

  8. The rendering coordinate system Initially (after glLoadIdentity()) : 
 rendering coordinate system = 
 world coordinate system world 8

  9. The rendering coordinate system glTranslatef(x, y, z); [x, y ,z] rendering coordinate system world 9

  10. The rendering coordinate system glRotatef(angle,ax, ay, az); rendering coordinate world system 10

  11. The rendering coordinate system glScalef(sx, sy, sz); rendering coordinate world system 11

  12. OpenGL code glMatrixMode (GL_MODELVIEW); glLoadIdentity(); glTranslatef(x, y, z); glRotatef(angle, ax, ay, az); glScalef(sx, sy, sz); renderBunny(); rendering coordinate world system 12

  13. Rendering more objects How to obtain this frame? rendering coordinate world system 13

  14. Solution 1 Find glTranslate(…), glRotatef(…), glScalef(…) How to obtain this frame? world 14

  15. Solution 2: gl{Push,Pop}Matrix glMatrixMode (GL_MODELVIEW); glLoadIdentity(); 
 // render first bunny glPushMatrix(); // store current matrix glTranslate3f(…); glRotatef(…); renderBunny(); glPopMatrix(); // pop matrix 
 // render second bunny glPushMatrix(); // store current matrix glTranslate3f(…); glRotatef(…); renderBunny(); glPopMatrix(); // pop matrix 15

  16. Recall: Linear Algebra 16

  17. Scalars • Scalars , , from a scalar field α β γ α + β αβ 0 1 − α () − 1 • Operations , , , , , • “Expected” laws apply • Examples: rationals or reals with addition and multiplication 17

  18. Vectors • Vectors from a vector space u , v , w • Vector addition , subtraction u + v u − v • Zero vector 0 • Scalar multiplication α v 18

  19. Euclidean Space • Vector space over real numbers • Three-dimensional in computer graphics α = u > v = u 1 v 1 + u 2 v 2 + u 3 v 3 • Dot product: 0 > 0 = 0 • , u > v = 0 • are orthogonal if u , v k v k 2 = v > v k v k • defines , the length of v 19

  20. Lines and Line Segments p ( α ) = p 0 + α d • Parametric form of line: • Line segment between and : q r p ( α ) = (1 − α ) q + α r for 0 ≤ α ≤ 1 20

  21. Convex Hull • Convex hull defined by p = α 1 p 1 + . . . + α n p n α 1 + . . . + α n = 1 for 0 ≤ α 1 ≤ 1 , i = 1 . . . n and 21

  22. Projection • Dot product projects one vector onto another vector u > v = u 1 v 1 + u 2 v 2 + u 3 v 3 = k u kk v k cos( θ ) π v ( u ) = ( u > v ) v / k v k 2 22

  23. Cross Product k a ⇥ b k = | a || b || sin( θ ) | • Cross product is 
 b perpendicular to both and a • Right-hand rule 23

  24. Plane • Plane defined by point and p 0 vectors and u v • and should not be parallel v u • Parametric form: 
 t ( α , β ) = p 0 + α u + β v • is the normal n = u ⇥ v / k u ⇥ v k n > ( p − p 0 ) = 0 • if and only if lies in plane p 24

  25. Coordinate Systems • Let be three linearly independent v 1 , v 2 , v 3 vectors in a 3-dimensional vector space • Can write any vector as w w = α 1 v 1 + α 2 v 2 + α 3 v 3 for some scalars α 1 , α 2 , α 3 25

  26. Frames • Frame = origin + coordinate system p 0 • Any point p = p 0 + α 1 v 1 + α 2 v 2 + α 3 v 3 26

  27. In Practice, Frames are Often Orthogonal 27

  28. Change of Coordinate System • Bases { } and { } u 1 , u 2 , u 3 v 1 , v 2 , v 3 • Express basis vectors in terms of v j u i u 1 = γ 11 v 1 + γ 12 v 2 + γ 13 v 3 u 2 = γ 21 v 1 + γ 22 v 2 + γ 23 v 3 u 3 = γ 31 v 1 + γ 32 v 2 + γ 33 v 3 • Represent in matrix form: u > v >     1 1 u > v >  = M M    2 2 u > v > 3 3 28

  29. Representing 
 3D transformations 
 (and model-view matrices) 29

  30. Linear Transformations • 3 x 3 matrices represent linear transformations a = Mb • Can represent rotation, scaling, and reflection • Cannot represent translation M 30

  31. Homogeneous Coordinates • In order to represent rotations, scales AND translations [ α 1 , α 2 , α 3 ] > • Augment by adding a fourth component (1): p = [ α 1 , α 2 , α 3 , 1] > • Homogeneous property: 
 p = [ α 1 , α 2 , α 3 , 1] > = [ α 1 , α 2 , α 3 ] > , for any scalar 6 = 0 31

  32. Homogeneous Coordinates • Homogeneous coordinates are transformed by 4x4 matrices q p q = Ap 4-vector 4-vector world 4x4 matrix 32

  33. Affine Transformations (4x4 matrices) • Translation • Rotation • Scaling • Any composition of the above • Later: projective (perspective) transformations -Also expressible as 4 x 4 matrices! 33

  34. Translation d = [ α x , α y , α z , 0] > • where , q = p + d p = [ x, y, z, 1] > , • q = [ x 0 , y 0 , z 0 , 1] > , • • Express in matrix form and solve for q = Tp T 34

  35. Scaling x 0 = β x x y 0 = β y y z 0 = β z z • Express as and solve for q = Sp S 35

  36. Rotation in 2 Dimensions • Rotation by about the origin θ x 0 = x cos( θ ) − y sin( θ ) y 0 = x sin( θ ) + y cos( θ ) • Express in matrix form: • Note that the determinant is 1 36

  37. Rotation in 3 Dimensions • Orthogonal matrices: 
 RR > = R > R = I det( R ) = 1 • Affine transformation: 37

  38. Affine Matrices are Composed 
 by Matrix Multiplication A = A 1 A 2 A 3 • Applied from right to left Ap = ( A 1 A 2 A 3 ) p = A 1 ( A 2 ( A 3 p )) • When calling glTranslate3f, glRotatef, or glScalef, 
 OpenGL forms the corresponding 4x4 matrix, 
 and multiplies the current modelview matrix with it. 38

  39. Summary • OpenGL Transformation Matrices • Vector Spaces • Frames • Homogeneous Coordinates • Transformation Matrices 39

  40. Next Time: Viewing & Projection 40

  41. http://cs420.hao-li.com Thanks! 41

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend