1 / 31

Edward Powell Vectric Ltd

3D Collisions. Edward Powell Vectric Ltd. @ VeraShackle. XNA-UK Blog. vera@XNA-UK.net. Assumptions. You have reasonable understand basic 3D rendering with BasicEffect , Components, Services and the Content Pipeline. You have had a crack at some 2D games

vanya
Download Presentation

Edward Powell Vectric Ltd

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. 3D Collisions Edward Powell Vectric Ltd @VeraShackle XNA-UK Blog vera@XNA-UK.net

  2. Assumptions • You have reasonable understand basic 3D rendering with BasicEffect, Components, Services and the Content Pipeline. • You have had a crack at some 2D games • You have some ideas about the principles 2D collision detection. • You’re probably better at C# than me!

  3. Content 15 mins - A bit of theory 15 mins - Building a simple, but flexible system 5 mins - The Full Isaac Newton!

  4. Elements of a collision system • Collision detection • Have any objects collided? • Which object pairs have collided? • In what way have the objects collided? • Collision Resolution • Simple event? • Complex interaction? • Correcting for detection lag?

  5. Collision Detection

  6. Discrete time step between checks • The actual moment of collision is never going to coincide with the checking algorithm. • So Two Options: • Look forward to find collisions about to occur • Complex interactions, complex algorithm • Never quite sure when the next check will be • Look back at collisions that have already occurred • Simple algorithm (relatively!) • Know time since the last check • But, have to correct things that have already occurred

  7. Looking back (hopefully not in anger) • Things to watch out for: • Some overlap already at the point of detection- ‘Drill through’... • Complete containment – boundaries no longer intersect • Swept volumes? • Multiple apparently ‘simultaneous’ collisions

  8. Have objects collided – the lessons from 2D? • Pixel perfect collision was too expensive • We checked for overlapping bounding rectangle or circle • Multiple collision shapes per object • Use hierarchy of collision areas to reduce the pixel perfect search to a manageable area

  9. Same principles apply in 3D - Especially under WP7! triangle-triangle is the new pixel perfect! Same solutions, but replace 2D areas with 3D entities...

  10. Collision Entities • XNA Intrinsics • BoundingBox (AABB) • BoundingFrustum • BoundingSphere • Plane • Ray • Model (via spheres) • Other common ones • Capsule – swept volumes • Oriented Bounding Box (OBB) • Height map • ‘Slabs’ • Discrete Oriented Polytopes (DOP)!! • Triangle Mesh

  11. Reduced Poly Collision Skin

  12. Collision Primitives Summary... (Image Source: http://sharky.bluecog.co.nz ) We don’t need a one-to-one mapping of collision primitive to drawable object Several simple volumes is generally cheaper than a single more complicated one. We can still do high-accuracy collision tests, but limit the volume with cheaper tests first.

  13. Pruning the Collision Search Space • Brute force • Refining Bounding Volumes • Sweep & Prune (SAP) • Insertion sort, relies on the fact that objects tend to be in a similar state between time steps. • Grid Registration • BSP, kd-tree, quad-tree , oct-tree...

  14. Collision Resolution Wotcha gonna do about it...

  15. Approaches to Resolvers • Distinct Resolver Class • Single location for all your resolution code • Needs to be modified as new entities are added • What collision information is needed? • Entities Resolve their own collisions • Collision entities are self-contained • Entities need to ‘know’ about at least some others • Easily extensible

  16. How much information do you need about the collision? • When did the collision occur? • Which point (or points) contacted? • Other significant properties of the object? • Velocity • Mass • Angular Momentum, coefficient of restitution... etc. etc.!

  17. Implementation • Simple Collision Manager Component • Brute force check each update for... • ICollidable Interface • Collision check • Collision resolution • 2 Basic Classes: • CollidableSphere • CollidablePlane

  18. Implementation

  19. Simple start, but... (Image Source: epicgames.com) Bounding Spheres are calculated by the pipeline for meshes Discrete Oriented Polytope (DOP) – defining convex volumes using only planes.

  20. Defining a volume with Planes

  21. Has a sphere collided with a plane? If the distance is positive, the sphere is in front of the plane If the distance is negative, the sphere is behind the plane If the distance from the plane is less than the radius of the sphere - COLLISION Distance = Plane.DotCoordinate(sphere.Centre)

  22. Collision with Volume In front = 2 Intersecting = 0 No Collision In front = 2 Intersecting = 1 No Collision In front of 1 plane, but intersecting 0. No collision Rule: Must be intersecting all the planes we’re in front of...?

  23. Collision with Volume In front = 1 Intersecting = 1 COLLISION In front = 2 Intersecting = 2 COLLISION In front = 0 COLLISION Rule: Must be intersecting all the planes we’re in front of...?

  24. Volume Edges & Corners In front = 2 Intersecting = 2 But no collision

  25. Simple Collision System Demo http://www.youtube.com/watch?v=5Xe2twpDe_8 XNACollisions_1 Duration: 1:14s

  26. Using a Full Physics Engine • Examples • Jitter (jitter-physics.com) • Full & free use of dll • Source code access US$400 • BEPUPhysics (www.bepu-games.com) • Free for non-commercial use • Open Source as of last week!! • JigLibX (jiglibx.codeplex.com) • Free • Open-source

  27. JigLibXPhyics Demo http://www.youtube.com/watch?v=Sc7XOJgCVdc XNACollisions_2 Duration: 1:00s

  28. Thank You for attending today’s Tech.Days Online Conference. Today’s Online Conference will be recorded. It will be made available on-demand very soon. Your Feedback Matters! Please complete the online evaluation form which will be emailed to you.

More Related