1 / 28

Computer Graphics Matrices

Computer Graphics Matrices. CO2409 Computer Graphics Weeks 6-7. Lecture Contents. Meshes/Models & World/Model Space Matrices for Positioning Matrix Definitions Matrix Arithmetic. Working with 3D Geometry. In 2D we looked at: Conversion from geometry axes to viewport axes

minnieg
Download Presentation

Computer Graphics Matrices

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. Computer GraphicsMatrices CO2409 Computer Graphics Weeks 6-7

  2. Lecture Contents • Meshes/Models & World/Model Space • Matrices for Positioning • Matrix Definitions • Matrix Arithmetic

  3. Working with 3D Geometry • In 2D we looked at: • Conversion from geometry axes to viewport axes • 2D geometry: positioning & drawing • We didn’t look at rotation or scaling of geometry / sprites • 3D needs similar processes: • Converting between different 3D axes (e.g. world to camera view) • And finally into 2D viewport axes • Positioning of 3D geometry, drawing of 2D geometry • We will also look at rotation and scaling in 3D

  4. Meshes and Models • A mesh defines some 3D geometry • We define a model as a single instance of a mesh in a 3D scene • Like a sprite is an instance of a bitmap in a 2D scene • Several models may use the same mesh in the scene • Like several sprites using the same bitmap • Each model can be positioned differently • Position, rotation and scaling • Example of two models of a square mesh: 1 mesh, 2 models

  5. World / Model Space • We specify our 3D scene using fixed axes XW YW & ZW • A global view of the world and everything in it • This is called world space or the world coordinate system • The axes are the world axes (in red) • An arbitrarily positioned model has: • A position P and local axes, X, Y & Z • The local axes are its own rightward, upward & forward directions • This is the model’s local space or local coordinate system • Also called model space • Compare to the two overlaid sets of axes we saw in 2D

  6. Model Positioning • So the position and rotation of a 3D model can be specified by defining its local space: • Position: a 3D vertex P • Rotation: three 3D vectors – Right, Up and Forward (X,Y & Z) • What about scaling? • The length of the vectors X, Y & Z can define the scaling in that axis • 1.0 = unscaled, 2.0 = double size etc. • Effectively scaling local space

  7. Matrices for Positioning • We can put these 4 elements into a 4x3 matrix: • (RX, RY, RZ) is the model’s rightward direction, which is its local X axis • (UX, UY, UZ) is the up direction (local Y axis) • (FX, FY, FZ) the forward direction (local Z axis) • These are 3D vectors • (PX, PY, PZ) is the model’s position • All defined in world space units • Example on later slide • Or we can use a 3x4 matrix • Put everything in columns rather than rows • DirectX docs use rows, math books and OpenGL docs use columns. We will use rows. or

  8. Alternative Written Form • Here the local X, Y & Z axes are written as R, U and F for right, up and forward: • Easier to understand • Can also use letters X, Y and Z to give this equivalent form: • I frequently use this form • Maths texts may present this matrix with different letters again • This is just presentation, the matrix always has the same basic form

  9. Example Position Matrix • Consider this model (30° rotation): • Looking down Y axis - so it is not shown. Allows me to draw 2D diagram • Position, right, up and forward are given on diagram • All axes length 1 – no scaling • This gives us a model matrix: • Uniquely defines model’s position • This matrix can be used to manipulate the model • So we need to look at the mathematics of matrices…

  10. Matrix Definition • A matrix (plural matrices) is a rectangular table of numbers: • Matrices can have any number of rows and columns. • A matrix with m rows and ncolumns is called an m by n matrix • The above matrices are 3x3 and 2x4 • The value at the i-th row and j-th column is denoted Aij • In the example above: M23 = 5 andN14 = 2

  11. Simple Matrices • A 1xn or nx1 matrix can represent a set of coordinates • E.g. a vector or vertex/point: • A square matrix is one with a equal number of rows and columns, e.g. M from last slide • A 1x1 matrix is simply a number

  12. Simple Matrix Arithmetic • Addition - equal size matrices can be added: • Subtraction – similar to addition: • Multiplication by a scalar:

  13. Matrix Multiplication • We can multiply two matrices R = AB if: • Number of columns in A = number of rows in B • Result has same number of rows as A and columns as B • So if multiplying 2x3 & 3x4 matrices, we get 2x4 matrix result • Values in the result matrix are given by this formula: Rij = Ai1B1j + Ai2B2j+ ... + AinBnj • Stated differently, the value in row i and column j of R is equal to the dot product of i-th row of A & j-th column of B • Need to practice this to understand it…

  14. Matrix Multiplication Properties • Matrix multiplication is associative: (AB)C = A(BC) • And distributive: (A + B)C = AC + BC, C(A + B) = CA + CB • This is the same as scalars • But matrix multiplication is notcommutative: AB ≠ BA (in general) • Very important for transformations later • The order in which you multiply matrices has an effect on the result matrix

  15. Square Matrices • Square matrices can always be multiplied • The result is a square matrix of the same size • A square matrix with only 1’s down the diagonal has special properties: • Such a matrix does not change other matrices under multiplication • This is called the identitymatrix • Or the unit matrix (similarity with the number 1)

  16. Transformations (3x3) • A vector or vertex can be represented as a 1x3 matrix: • Multiply by a 3x3 matrix we get another 1x3 matrix: • The vertex/vector changes (transforms) into a new one • This square matrix is a transformation matrix or a transform • Almost all the vertex processing needed for 3D graphics can be performed with transformation matrices • However, we will see that 3x3 matrices cannot perform some of the transformations we need (movement)

  17. Transformations (4x4) • So we add another element (p) to the vector / vertex to get a 1x4 matrix: • Then multiply by a 4x4 matrix to perform a transformation • Take the right column from the unit matrix (see earlier slide) • Note the transformation leaves the extra element p unchanged • This kind of 4x4 transformation matrix can perform all of the transformations we need for 3D (including movement) • This form is called an Affine Transformation

  18. The 4th Element / Mesh Transforms • The 4th element p specifies if the x, y and z values represent a vertex (point) or a vector 1 = vertex, 0 = vector • Previously we couldn’t distinguish between them (both just x,y,z) • For example: • If we transform all the vertices & normals in a mesh then the entire mesh will be transformed • Recall that normals are just vectors • So we can use these transformations to manipulate entire pieces of geometry

  19. Advanced Note: Homogenous Coordinates • A coordinatein 3D is just an x,y,z point. E.g. (10,15,-5) • The 4 element coordinates introduced on the last slide are called homogenous 3D coordinates • They have x,y,z values plus an extra 4th value • To convert a homogenous coordinate to a point, you divide the x, y and z by the 4th element. • The 4th element is only used like this in creating perspective (see later), and at all other times it will only be 1 or 0 • If the 4th element is 1, dividing by 1 leaves the x,y,z the same • If the 4th element is 0, you can’t divide by 0 indicating that this is not a point, but a vector • This is only used for advanced work, but is mentioned here since some texts refer to homogenous coordinates

  20. Translation Matrices • Translation describes movement of a vertex or mesh • The diagram shows movement along the vector V(p,q,r) • This transformation can be performed with the matrix on the right • The unit matrix with V written into the bottom row • We multiply each vertex in the mesh by this matrix • So the whole mesh is translated

  21. Using a Translation Matrix • This is the full matrix multiplication on a point: • Note that a translation matrix has no effect on a vector • Vectors have no position – moving them makes no sense • E.g. the 3 blue vectors in the diagram are all the same even thought drawn in different places

  22. Rotation Matrices • A rotation matrix rotates a vertex or mesh around an axis • Most often around the X, Y or Z axis • Could be the world axes or the local axes of a mesh (will see this later) • The diagram shows a rotation around the Z-axis • This Z rotation can be performed with the matrix on the right: • cos and sin appear since we are working with a circle

  23. Using a Rotation Matrix • The rotate-Z matrix is used like this: • (not showing full formula for result x & y for simplicity) • Several important notes: • Z values don’t change when rotating around the Z axis • The rotation is around the origin • Not around the centre of the triangle • Vectors are affected by rotation • For example, the edges of the triangle are vectors - notice they are rotated too

  24. Other Rotation Matrices • Can rotate around the X & Y axes using similar matrices • The three basic rotation matrices are: • Note how the row (& column) of the axis of rotation is unchanged in each version

  25. Scaling Matrices • A simple scaling matrix scales the geometry around the origin • The matrix is like the unit matrix with the scaling value on the diagonal: • Note: Scaling is centred on the origin • Note: Vectors are affected by scaling • We can form a non-regular scaling matrix (different scaling in X, Y & Z):

  26. Combining Transformations • We can combine transformations by multiplying their 4x4 matrices together • E.g. A scale followed by a translation: • The resulting matrix can then be used as a combined transformation for vertices / vectors:

  27. Order of Transformations • The order of transformations is important • Use same example reversed, translation followed by a scale: • The result matrix is different • The translation has been scaled, as it occurred first • Recall that matrices are not commutative • I.e. AB ≠ BA in general • So it is very important to consider the order of your transformations before combining • [And to do any multiplications in the exam carefully!]

  28. Creating Combined Transformations • Say we want a scaling matrix that will scale around a given point rather than the origin • We can do this with three basic transforms: • Translate the point to the origin • Scale (around the origin) • Translate the origin back to the point • The result matrix is potentially useful • Would have been difficult to guess

More Related