1 / 53

Computational Geometry & Collision detection

academy.telerik.com /.../3d-game-development-opengl. Computational Geometry & Collision detection. Vectors, Dot Product, Cross Product, Basic Collision Detection. George Georgiev. http://academy.telerik.com. Technical Trainer. Front-End Developer. George Atanasov. Table of Contents.

akando
Download Presentation

Computational Geometry & Collision detection

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. academy.telerik.com/.../3d-game-development-opengl Computational Geometry & Collision detection Vectors, Dot Product, Cross Product, Basic Collision Detection George Georgiev http://academy.telerik.com Technical Trainer Front-End Developer GeorgeAtanasov

  2. Table of Contents • Vectors • Extended revision • The vector dot product • The vector cross product • Collision detection • In Game programming • Sphere collision • Bounding volumes • AABBs

  3. Vectors Revision, Normals, Projections

  4. Vectors – revision • Ordered sequences of numbers • OA (6, 10, 18) – 3-dimensional • OA (6, 10) – 2-dimensional • OA (6, 10, 18, -5) – 4-dimensional • Have magnitude and direction A

  5. Vectors – revision • No location • Wherever you need them • Can represent points in space • Points are vectors with a beginning at the coordinate system center • Example: • Point A(5, 10) describes the location (5, 10) • Vector U(5, 10), beginning at (0, 0), describes ‘the path’ to the location (5, 10)

  6. Vectors – revision • All vectors on the same line are called collinear • Can be derived by scaling any vector on the line • E.g.: A(2, 1), B(3, 1.5), C(-1, -0.5) are collinear • Two vectors, which are not collinear, lie on a plane and are called coplanar • => Two non-collinear vectors define a plane • Three vectors, which are not coplanar, define a space

  7. Vectors – revision • Collinear vectors: • Coplanar vectors:

  8. Vectors – revision • Vectors defining a 3D vector space

  9. Vectors – revision • Perpendicular vectors • Constitute a right angle • Deriving a vector, perpendicular to a given one: • Swap two of the coordinates of the given vector (one of the swapped coordinates can’t be zero) • Multiply ONE of the swapped coordinates by -1 • Example: • A (5, 10) given => A’(-10, 5) is perpendicular to A • V (3, 4, -1) given => V’(3, 1, 4) is perpendicular to V

  10. Vectors – revision • Normal vectors to a surface • Constitute a right angle with flat surfaces • Perpendicular to at least two non-collinear vectors on the plane • Constitute a right angle with the tangent to curved surfaces

  11. Vectors – revision • Projection of a vector on another vector

  12. Vector Dot Product Definition, Application, Importance

  13. Vector dot product • Dot Product (a.k.a. scalar product) • Take two equal-length sequences • e.g. sequence A (5, 6) and sequence B (-3, 2) • Multiply each element of A with each element of B • A [i] * B [i] • Add the products • Dot Product(A, B) = A[0] * B[0] + A[1] * B[1] + … + A[i] * B[i] + … + A[n-1] * B[n-1]

  14. Vector dot product • Dot Product (2) • Example: • A (5, 6) B (-3, 2) = 5 * (-3) + 6 * 2 = -15 + 12 = -3 • Result • A scalar number

  15. Vector dot product • Dot product of coordinate vectors • Take two vectors of equal dimensions • Apply the dot product to their coordinates • 2D Example: • A(1, 2) . B(-1, 1) = 1*(-1) + 2*1 = 1 • 3D Example: • A(1, 2, -1) . B(-1, 1, 5) = 1*(-1) + 2*1 + (-1) * 5 = -4 • Simple as that

  16. Vector dot product • Meaning in Euclidean geometry • If A(x1, y1, …), B(x2, y2, …) are vectors • theta is the angle, in radians, between A and B • Dot Product (A, B) = A . B = = |A|*|B|*cos(theta) • Applies to all dimensions (1D, 2D, 3D, 4D, … nD)

  17. Vector dot product • Meaning in Euclidean geometry (2) • If U and V are unit vectors, then U . V = • cosine of the angle between U and V • the oriented length of the projection of U on V • If U and V are non-unit vectors • ( U . V ) divided by |U|*|V| = cosine of the angle between U and V • ( U . V ) divided by |V| = the oriented length of the projection of U on V

  18. Vector dot product • Consequences • If A . B > 0, A and B are in the same half-space • If A . B = 0, A and B are perpendicular • If A . B < 0, A and B are in different half-spaces • Applications • Calculating angles • Calculating projections • Calculating lights • Etc…

  19. Dot Product Computation Live Demo

  20. Vector Cross Product Definition, Features, Application

  21. Vector cross product • Cross product • Operates on vectors with up to 3 dimensions • Forms a determinant of a matrix of the vectors • Result – depends on the dimension • In 2D – a scalar number (1D) • In 3D – a vector (3D) • Not defined for 1D and dimensions higher than 3

  22. 2D Vector cross product • 2D Cross product • Take the vectors U(x1, y1) and V(x2, y2) • Multiply their coordinates across and subtract: • U(x1, y1) x V(x2, y2)= (x1 * y2) – (x2 * y1) • Result • A scalar number

  23. 2D Vector cross product • Scalar meaning in Euclidean geometry • If U(x1, y1) and V(x2, y2) are 2D vectors • theta is the angle between U and V • Cross Product (U, V) = U x V = = |U| * |V| * sin(theta) • |U| and |V| denote the length of U and V • Applies to 2D and 3D

  24. 2D Vector cross product • Scalar meaning in Euclidean geometry (2) • For every two 2D vectors U and V • U x V = the oriented face of the parallelogram, defined by U and V • For every three 2D points A, B and C • If U x V = 0, then A, B and C are collinear • If U x V > 0, then A, B and C constitute a ‘left turn’ • If U x V < 0, then A, B and C constitute a ‘right turn’

  25. 2D Vector cross product • Applications • Graham scan (2D convex hull) • Easy polygon area computation • Cross product divided by two equals oriented (signed) triangle area • 2D orientation • ‘left’ and ‘right’ turns

  26. 2D Cross Product Computation Live Demo

  27. 3D Vector cross product • 3D Cross product • Take two 3D vectors U(x1, y1, z1) and V(x2, y2, z2) • Calculate the following 3 coordinates • x3 = y1*z2 – y2*z1 • y3 = z1*x2 – z2*x1 • z3 = x1*y2 – x2*y1 • Result • A 3D vector with coordinates (x3, y3, z3)

  28. 3D Vector cross product • Meaning in Euclidean geometry • The magnitude • Always positive (length of the vector) • Has the unsigned properties of the 2D dot product • The vector • Perpendicular to the initial vectors U and V • Normal to the plane defined by U and V • Direction determined by the right-hand rule

  29. 3D Vector cross product • The right-hand rule • Index finger points in direction of first vector (a) • Middle finger points in direction of second vector (b) • Thumb points up in direction of the result of a x b

  30. 3D Vector cross product • Unpredictable results occur with • Cross product of two collinear vectors • Cross product with a zero-vector • Applications • Calculating normals to surfaces • Calculating torque (physics)

  31. 3D Cross Product Computation Live Demo

  32. Computational geometry http://academy.telerik.com/

  33. Collision detection Basics, Methods, Problems, Optimization

  34. Collision detection • Collisions in Game programming • Any intersection of two objects’ geometry • Raise events in some form • Usually the main part in games • Collision response – deals with collision events

  35. Collision detection • Collision objects • Can raise collision events • Types • Spheres • Cylinders • Boxes • Cones • Height fields • Triangle meshes

  36. Collision detection • Sphere-sphere collision • Easiest to detect • Used in • particle systems • low-accuracy collision detection • Collision occurrence: • Center-center distance less than sum of radiuses • Optimization • Avoid computation of square root

  37. Sphere-sphere collision detection Live Demo

  38. Collision detection • Triangle meshes collision • Very accurate • Programmatically heavy • Computation heavy (n2) • Rarely needed

  39. Collision detection • Collision detection in Game programming • Combines several collision models • Uses bounding volumes • Uses optimizations • Axis-sweep • Lower accuracy in favor of speed

  40. Collision detection • Bounding volumes • Easy to check for collisions • Spheres • Boxes • Cylinders, etc. • Contain high-triangle-count meshes • Tested for collision before the contained objects • If the bounding volume doesn’t collide, then the mesh doesn’t collide

  41. Collision detection • Bounding sphere • Orientation-independent • Center – mesh’s center • Radius • distance from mesh center to farthest vertex • Effective for • convex, oval bodies • mesh center equally distant from surface vertices • rotating bodies

  42. Bounding sphere generation Live Demo

  43. Collision detection • Minimum bounding sphere • Center – the center of the segment, connecting the two farthest mesh vertices • Radius – the half-length of the segment, connecting the two farthest mesh vertices • Efficient with • convex, oval bodies • rotating bodies • Sphere center rotated with the other mesh vertices

  44. Minimum bounding sphere generation Live Demo

  45. Collision detection • Axis-aligned bounding box (AABB) • Very fast to check for collisions • Usually smaller volume than bounding spheres • Edges parallel to coordinate axes • Minimum corner • coordinates – lowest coordinate ends of mesh • Maximum corner • coordinates – highest coordinate ends of mesh

  46. Collision detection • Axis-aligned bounding box (2) • Efficient with • non-rotating bodies • convex bodies • oblong bodies • If the body rotates, the AABB needs to be recomputed

  47. Axis-aligned bounding box generation Live Demo

  48. Collision detection • Checking AABBs for collision • Treat the minimum and maximum corners’ coordinates as interval edges • 3D case • If the x intervals overlap • And the y intervals overlap • And the z intervals overlap • Then the AABBs intersect / collide

  49. Axis-aligned bounding box collision detection Live Demo

  50. Collision detection • Oriented bounding box (OBB) • Generated as AABB • Rotates along with the object’s geometry • Advantage: • Rotating it is much faster than creating an new AABB • Usually less volume than AABB • Disadvantage: • Much slower collision check

More Related