1 / 32

Contact Manifolds

Contact Manifolds. Erin Catto Blizzard Entertainment. Executive Summary. Constraint solvers need contact points to prevent penetration. We can use SAT to compute a contact manifold in one shot. We can use GJK to build up a contact manifold point-by-point. Contact.

gracej
Download Presentation

Contact Manifolds

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. Contact Manifolds Erin CattoBlizzard Entertainment

  2. Executive Summary • Constraint solvers need contact points to prevent penetration. • We can use SAT to compute a contact manifold in one shot. • We can use GJK to build up a contact manifold point-by-point.

  3. Contact • Contact occurs when two shapes touch. • We model contact to prevent penetration and to simulate friction. • Modeling contact requires some geometry and a lot of finesse.

  4. Contact Manifolds • For convex polyhedra, a contact manifold is ideally a single point, a line segment, or a convex polygon. • For general convex 3D shapes, the contact manifold is a convex 2D shape. • Did I mention overlap?

  5. Overlap Happens What we want. What we get.

  6. Approximate Manifolds • We use a collection of contact points to approximate the contact manifold. • Our goal is fast, stable, and plausible simulation. • In this sense, computing good manifolds is an art.

  7. Contact Points • Position • Normal • Penetration • Contact ID

  8. Example Manifold Two points and a common normal

  9. Contact Manifold Quality • When objects penetrate significantly the contact manifold is fuzzy. • Contact solvers like coherence. • Be consistent from step-to-step.

  10. Fuzziness manifold 1 manifold 2 manifold 3

  11. Extreme Fuzziness manifold 2 manifold 1

  12. Using the SAT • Mainly useful for convex polyhedra (boxes, triangles, etc). • Find the axis of minimum penetration. • For edge-edge contact, find the midpoint. • For face contact, use Sutherland-Hodgeman clipping.

  13. Example: 2D Box-Box SAT • First find the separating axis with the minimum penetration. • In 2D the separating axis is a face normal.

  14. Box-Box Clipping Setup • Identify reference face • Identify incident face incident reference

  15. Box-Box Clipping clipping planes • Clip incident face against reference face side planes (but not the reference face). • Consider clip points with positive penetration.

  16. Feature Flip-Flop • Which normal is the min separating axis? • Apply weightings to prefer one axis over another. • Improved coherence.

  17. Coherence • Apply old force/impulse solution at the beginning of the step. • Fewer iterations and greater stability. • We need a way to match old and new contacts.

  18. Feature-Based Contact Points • Each contact point is the result of clipping. • It is the junction of two different edges. • An edge may come from either box. • Store the two edge numbers with each contact point – this is the Contact ID.

  19. box 1 edge 2 box 2edge 3 box 2edge 3 box 2edge 4 Contact Point IDs 2 1

  20. GJK Contact Points • Three cases: • - No contact • - Shallow contact • - Deep contact

  21. GJK Shallow Contact • The support points are scaled up by a small margin to detect contact. • Compute the closest points (no margin). • This gives the position and normal. • The penetration is the margin minus the true distance.

  22. GJK Contact Margins Margin Core Shape Core Shape

  23. GJK Contact Point normal point distance

  24. GJK Deep Contact An awkward encounter …

  25. Deep Contact • Use some other algorithm. • It will be slower than GJK, but it won’t last long. • SAT, EPA, brute force. • Read Gino’s book to learn EPA.

  26. GJK Manifolds • GJK only gives one contact point at a time. • We hold on to and treasure each contact point. • Build a manifold over several time steps. • This automatically provides coherence.

  27. Building the Manifold t = 0 t = 1 t = 2

  28. Manifold Persistence • Track the points in each body. • If the points move too far apart, dismiss them. • This is bad for sliding. • Use Contact IDs?

  29. Adding New Points • Keep a minimal set of points per manifold (e.g. 4 points). • Reject new points that are too close to old points.

  30. Manifold Reduction • This applies to one-shot and incremental manifolds. • We want to keep the minimum number of contact points for a stable simulation. • This improves performance drastically.

  31. Example Reduction A Table Before After

  32. Further Reading • http://www.gphysics.com/downloads/ • http://www.continuousphysics.com • Collision Detection in Interactive 3D Environments by Gino van den Bergen • Fast Contact Reduction for Dynamics Simulation by Adam Moravanszky and Pierre Terdiman in Game Programming Gems 4.

More Related