100 Views

Download Presentation
##### Basics of 3D Math in Games

**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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Basics of 3D Math in Games**Matthew Christian**Overview**• About Me • Introduction to Linear Algebra • Vectors • Matrices • Quaternions • Links**About Me**• Student • Applied Mathematics and Computer Science: Software Development at UW-Stout • Degree • Associates Degree in Computer Programming from Northcentral Technical College • Gamer • Beaten over 140 games (Yes I have a list) • Independent Game Developer (spare time) for 5 years • XNA developer for around a year and a half**Intro to Linear Algebra**• Definition • The part of algebra that deals with the theory of linear equations and linear transformations • In which the specific properties of vector spaces are studied (including matrices) • This is NOT about ‘Linear Algebra’, it’s about the gaming version of ‘Linear Algebra’**Vectors**• Definitions • A variable quantity that can be resolved into components • A straight line segment whose length is magnitude and whose orientation in space is direction • Vectors are simple row-based data structures • In XNA: • Microsoft.XNA.Framework • Vector2, Vector3, Vector4 • public Vector2 ( float x, float y );**Cartesian Example**Let P be a point at (2,2) Then the vector p can be described as: p = [2, 2] Ex: [2,1] , [1,3]**Vector Operations**• Vector Addition • Add terms in similar positions • Vector “Subtraction” • Remember, vectors represent directions • How to subtract direction? Add negative direction • Scalar-Vector Multiplication • Scaling a Vector up or down is easy, multiply each element by the scalar • Similar for Division (multiply by scalar fraction) • Vector Matrix Multiplication • See later**More Advanced Operations**• Dot Product • Helps determine the angle between 2 vectors • Cross Product • Creates another vector perpendicular to the other two vectors (normal) (3D) • Normalizing • Magnitude (length)**Basic Uses for Vectors**• Storing values (positions) • Directions (move direction, collision direction) • Demo(s) • Simple Vectors • Vector Collision**Matrices**• Definition • A rectangular array of quantities… set out by rows and columns, treated as a single element and manipulated accordingly… • For us programmers, • Multi-dimensional arrays • A column is a 3x3 matrix if it has 3 rows and 3 columns • Nxm matrix is a matrix with n rows and m columns**Anatomy of a Matrix**• Square Matrix • N-rows, N-columns • Main Diagonal • Runs from upper left corner down (includes non-square matrices) • Diagonal Matrix • Matrix where all entries outside of the main diagonal are zero (main diagonal entries can be zero) • Identity Matrix • The matrix equivalent of multiplying by 1; 1’s across the main diagonal with zero’s elsewhere (nxn sized)**3D Rendering**• 3D Rendering is possible BECAUSE of matrices • ModelViewProjection Matrix • Model Matrix – Matrix describing the position/rotation/scale of your object • Order is important (multiply in order of operations) • View Matrix – Camera position, target, up direction (orientation) • Projection Matrix – View frustum ‘squished’ (your monitor doesn’t display ‘3D’)**Uses for Matrices**• Math Demos • Transformations! • In XNA • Microsoft.XNA.Framework • Matrix • 4x4 matrix (M11 – M44) • Demos • MatrixTransformations • Camera Demo (from Tutorials)**Quaternions**• Quaternions are compact descriptions of rotations… • Quaternions DON’T Prevent Gimbal Lock • Matrices use Euler numbers to calculate rotations which ‘cancels’ a direction • After calculating, you can only rotate on the Z-Axis • In all honesty, I’m still researching it!**Quaternions (cont'd)**• (X, Y, Z, W) • (X, Y, Z) is the axis to do rotations about • (W) is the amount to rotate about that axis • Arbitrary Axis • Not global axis**Uses for Quaternions**• Demo • Quaternion Camera**Questions? …Links**• http://www.insidegamer.org/XnaTutorials.aspx • My tutorials (specifically Tutorial 4) • http://www.ziggyware.com/readarticle.php?article_id=54 • Specifically about Vectors in XNA • http://hyperphysics.phy-astr.gsu.edu/hbase/vect.html • Some Vector operations • http://geekswithblogs.net/CodeBlog • My (seldom updated) Blog