- 262 Views
- Uploaded on
- Presentation posted in: Pets / Animals

Overview

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 - - - - - - - - - - - - - - - - - - - - - - - - - -

Physics for Games Programmers Reframing the Problem

Squirrel EiserlohTechnical DirectorMumboJumbo Gamessquirrel@eiserloh.netwww.algds.org

Physics for Games Programmers Reframing the Problema.k.a. “It’s All Relative”

Squirrel EiserlohTechnical DirectorMumboJumbo Gamessquirrel@eiserloh.netwww.algds.org

- Tunneling
- Movement Bounds
- Swept Shapes
- Einstein Says...
- Minkowski Says...
- Rotation

Tunneling

(Sucks)

- Question #1: Do objects A and B overlap?
- Plenty of reference material to help solve this, but...
- ...this is often the wrong question to ask (begs tunneling).

- Tunneling is very, very bad – this is not a “mundane detail”
- Things falling through world
- Bullets passing through people or walls
- Players getting places they shouldn’t
- Players missing a trigger boundary

- Tunneling is a false negative
- Okay, so tunneling really sucks. What can we do about it?

Movement Bounds

- Disc / Sphere

- Disc / Sphere
- AABB (Axis-Aligned Bounding Box)

- Disc / Sphere
- AABB (Axis-Aligned Bounding Box)
- OBB (Oriented Bounding Box)

- Question #2: Could A and B have collided during the frame?
- Better than Question #1 (solves tunneling!), but...

- Question #2: Could A and B have collided during the frame?
- Better than Question #1 (solves tunneling!), but...
- ...even if the answer is “yes”, we still don’t know for sure (false positive).

- Conclusion
- Good: They prevent tunneling! (i.e. no false negatives)
- Bad: They don’t actually tell us whether A and B collided (still have false positives).
- Good: They can be used as a cheap, effective early rejection test.

Swept Shapes

- Swept disc / sphere (n-sphere): capsule

- Swept disc / sphere (n-sphere): capsule
- Swept AABB: convexpolytope (polygon in 2d, polyhedron in 3d)

- Swept disc / sphere (n-sphere): capsule
- Swept AABB: convex polytope (polygon in 2d, polyhedron in 3d)
- Swept triangle / tetrahedron (simplex): convex polytope

- Swept disc / sphere (n-sphere): capsule
- Swept AABB: convex polytope (polygon in 2d, polyhedron in 3d)
- Swept triangle / tetrahedron (simplex): convex polytope
- Swept polytope: convexpolytope

- Like movement bounds, only with a perfect fit!

- Like movement bounds, only with a perfect fit!
- Still no false negatives (tunneling).

- Like movement bounds, only with a perfect fit!
- Still no false negatives (tunneling).
- Finally, no false positives, either!

- Like movement bounds, only with a perfect fit!
- Still no false negatives (tunneling).
- Finally, no false positives, either!
- No, wait, nevermind. Still have ‘em. Rats.

- Like movement bounds, only with a perfect fit!
- Still no false negatives (tunneling).
- Finally, no false positives, either!
- No, wait, nevermind. Still have ‘em. Rats.

- Like movement bounds, only with a perfect fit!
- Still no false negatives (tunneling).
- Finally, no false positives, either!
- No, wait, nevermind. Still have ‘em. Rats.

- Conclusion
- Suck?
- Can be used as early rejection test, but...
- ...movement bounds are better for that.
- If you’re not too picky...
- ...they DO solve a large number of nasty problems (especially tunneling)
- ...and can serve as a poor man’s continuous collision detection for a basic engine.

- Coordinate systems are relative

Relative Coordinate Systems

- World coordinates

- World coordinates
- A’s local coordinates

- World coordinates
- A’s local coordinates
- B’s local coordinates

- World coordinates
- A’s local coordinates
- B’s local coordinates
- Many others (e.g. origin at point of impact)

- Ball vs. world...

- Ball vs. world...
- in world coordinates

- Ball vs. world...
- in world coordinates
- x component
- y component

- Ball vs. world...
- in world coordinates
- x component
- y component

- in impact coordinates

- Ball vs. world...
- in world coordinates
- x component
- y component

- in impact coordinates
- parallel component
- perpendicular component

- Ball vs. world...
- in world coordinates
- x component
- y component

- in impact coordinates
- parallel component
- perpendicular component

- Change in motion happens along the perpendicular axis

- Ball vs. ball...

- Ball vs. ball...
- in world coordinates

- Ball vs. ball...
- in world coordinates
- x component
- y component

- Ball vs. ball...
- in world coordinates
- x component
- y component

- in impact coordinates

- Ball vs. ball...
- in world coordinates
- x component
- y component

- in impact coordinates
- parallel component
- perpendicular component

- Energy is exchanged along the perpendicular axis

Also, math is often nicer at the origin.

x2 - 2xh + h2 + y2 - 2yk + k2 = r2

x2 + y2 = r2

- Coordinate systems are relative
- Motion is relative

Relative Motion

- "Frames of Reference"
- World frame

- "Frames of Reference"
- World frame
- A's frame

- "Frames of Reference"
- World frame
- A's frame
- B's frame

- "Frames of Reference"
- World frame
- A's frame
- B's frame
- Inertial frame

- A Rule of Relativistic Collision Detection:
- It is always possible to reduce a collision check between two moving objects to a collision check between a moving object and a stationary object (by reframing)

(Does Not Suck)

Relative Collision Bodies

- Collision check equivalencies (disc)

- Collision check equivalencies (disc)
- ...AABB

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Collision check equivalencies (disc)
- ...AABB
- Can even reduce one body to a singularity
- “Tracing” or “Rubbing” collision bodies together
- Spirograph-out the reduced body’s origin

- Disc + disc

- Disc + disc
- AABB + AABB

- Disc + disc
- AABB + AABB
- Triangle + AABB

- Disc + disc
- AABB + AABB
- Triangle + AABB
- AABB + triangle

- Disc + disc
- AABB + AABB
- Triangle + AABB
- AABB + triangle
- Polytope + polytope

- Disc + disc
- AABB + AABB
- Triangle + AABB
- AABB + triangle
- Polytope + polytope
- Polytope + disc

- Things start to get messy when combining bodies explicitly / manually.
- (Especially in 3d.)
- General solution?

Minkowski Arithmetic

- The Minkowski Sum (A+B) of A and B is the result of adding every point in A to every point in B.

- The Minkowski Difference (A-B) of A and B is the result of subtracting every point in B from every point in A (or A + -B)

- The Minkowski Difference (A-B) of A and B is the result of subtracting every point in B from every point in A
- Resulting shape is different from A+B.

- Minkowski Differences are not commutative:
A-B != B-A

- Minkowski Difference of convex objects is convex (since A-B = A+ -B)

- Minkowski Differences are not commutative:
A-B != B-A

- Minkowski Difference of convex objects is convex (since A-B = A+ -B)
- Minkowski Difference produces the same shape as “Spirograph”

- If the singularity is outside the combined body, A and B do not overlap.

- If the singularity is outside the combined body, A and B do not overlap.
- If the singularity is inside the combined body (A-B), then A and B overlap.

- In world space, A-B is “near” the origin

Aoriginvs. Borigin

-Borigin -Borigin

______

(A-B)originvs. 0

- Since the singularity point is always at the origin (B-B), we can say...
- If (A-B) does not contain the origin, A and B do not overlap.

- If (A-B) contains the origin, A and B overlap.
- In other words, we reduce A vs. B to:
- combined body (A-B) vs.
point (B-B, or origin)

- If A and B are in the same coordinate system, the comparison between A-B and the origin is said to happen in configuration space
- ...in which case A-B is said to be a configuration space obstacle (CSO)

Translations in A or B simply translate the CSO

Rotations in A or B mutate the CSO

(Does Not Suck)

Relative Everything

- Let’s combine:
- Relative Coordinate Systems
- Relative Motion
- Relative Collision Bodies

- A vs. B in world frame

- A vs. B in world frame
- A is CSO, B is point

- A vs. B in world frame
- A is CSO, B is point
- A is moving CSO, B is still point

- A vs. B in world frame
- A is CSO, B is point
- A is moving CSO, B is still point
- A is still CSO, B is moving point
- This is the one we want!

- Question #3: Did A and B collide during the frame?
- Yes! We can now get an exact answer.
- No false negatives, no false positives!
- However, we still don’t know WHEN they collided...

- Why does the exact collision time matter?
- Outcomes can be different
- Order of events (e.g. multiple collisions) is relevant
- Collision response is easier when you can reconstruct the exact moment of impact

- Question #4: When, during the frame, did A and B collide?
- The time at which the ray intersects the CSO is the time at which the collision occurred.
- Finally, the right question - and we have a complete answer!

- The Minkowski Difference (A-B) / CSO can also be thought of as “the set of all translations [from the origin] that would cause a collision”.
- A.K.A. the set of “inadmissible translations”.

Quality vs. Quantity

or

“You Get What You Pay For”

- The more you ask, the more you pay.
- Question #1: Do A and B overlap?
- Question #2: Could A and B have collided during the frame?
- Question #3: Did A and B collide during the frame?
- Question #4: When, during the frame, did A and B collide?

Rotations

(Suck)

- Continuous rotational collision detection sucks
- Rotational tunneling alone is problematic

- Continuous rotational collision detection sucks
- Rotational tunneling alone is problematic
- Methods we’ve discussed here often don’t work on rotations, or their rotational analogue is quite complex

- However:
- Rotational tunneling is usually not as jarring as translational tunneling
- Rotational speed limits are actually feasible
- Can do linear approximations of swept rotations
- Can use bounding shapes to contain pre- and post-rotated positions
- This is something that many engines never solve robustly

Summary

- Have to worry about false negatives (tunneling!) as well as false positives.
- Knowing when a collision event took place can be very important (especially when resolving it).
- Sometimes a problem (and math) looks easier when we look at it from a different viewpoint.
- Can combine bodies in cheaty ways to simplify things even further.

- Einstein and Minkowski are cool.
- Rotations suck.
- Doing real-time collision detection doesn’t have to be hard.
- Or expensive.
- Or confusing.

- Feel free to reach me by email at:
squirrel@eiserloh.net