Physics and Collision Detection

advertisement
Computer Game Design and
Development
Mathematics, Collision, and Physics
Havok Destruction
Basic Problem
• Without physics:
– There’s no gravity
– There’s no friction
– There are no collisions
– Objects pass through one another
• We must determine:
– If objects collide (collision detection)
– Where/when they collided (collision resolution)
Collision Detection
•
•
•
•
Bullets (very fast)
Characters (very complex)
Naïve algorithms run in O(n2)
Two primary methods:
– Overlap testing (most common)
– Intersection testing (sweeping)
Overlap Testing
• Determines if two objects overlap (duh!)
– Check each vertex of an object inside another?
• Exhibits the most error
• Is discrete (i.e. checks an exact point in time)
• Results:
– Give a time of collision
– Give a normal of collision
• Uses bisection…
Overlap Bisection
Limitations of Overlap Testing
Design constraint? Speed of objects * time step < size of all objects?
Reduce time step?
Intersection Testing
• “Sweep” an object from one point
to another (i.e. “extrude” – sphere
• becomes capsule).
• Can calculate t with an equation->
• See book for equation
• Doesn’t work well for network games
Collision Approximations
Minkowski Sum – sweep origin of X across Y
Intersection technique.
These are the same!
Bounding Volumes and Boxes
AABB
OBB
About Bounding Volumes
•
•
•
•
Simplest is sphere
Next is capsule (2 spheres and a cylinder),
Next are AABBs
What can we do about character collisions?
Performance
(avoiding O(n2))
Possible collision
between R and B
since overlap in
all axis (2 in this case)
Subdivide such that on average
one object in each cell.
• Test against neighboring cells
• What if all are in one cell?
• Variable-sized objects?
“Plane sweep” needs to be sorted!
Which algorithm? Quicksort?
Bubblesort?
Terrain Collision
• Determine which quad is easy
• Heightmap (x and z are fixed, y is variable)
• Which triangle in the quad?
– Compare x with z
–
http://creators.xna.com/en-US/sample/collision3dheightmap
Resolving Collision
• Gross collision & subdivide if needed
• Three phases
– Prologue – ignore or trigger other events
– Collision – objects moved to point of impact, new
velocities, calculate normal and penetration
– Epilogue – destroy object, effects, damage, etc
Particle Physics Basics
• Use consistent units (SI) – or bad stuff happens
• Particle kinematics
–
–
–
–
Position (p) in 3-space, vector3 (x,y,z) = p(t)
Velocity (v) = change in position over time, V(t)
Acceleration (a) = change in velocity over time, a(t)
Force (f) = results in change in acceleration over time,
F(t) = ma(t)
• Calculus
– Derivatives and integrals go from one to another
Center of Mass
Collision Response (frictionless)
Other Definitions
• Kinematic objects: those that move
• Static objects: those that don’t, but affect
those that do (terrain)
• Rigid bodies: objects that do not deform
• Soft bodies:
– those that do
– Center of gravity changes
– Cloth, deflated ball…
Rigid Body Collision
Center of Mass Consideration
More Definitions
• Constraints:
– Limitations on what objects
can do
– Joint types: ball joint, hinge joint, sliding joint
• Ragdoll physics:
– Animated bones replaced by rigid bodies
– Good for violent death animations
– http://www.youtube.com/watch?v=4gR_dP4HaF8
Physics Engines
• Commercial
– Game Dynamics SDK (Havok)
– Renderware Physics
– PhysX (NVIDIA)
– NovodeX SDK
• Free/Shareware
– Open Dynamics Engine (ODE)
– Tokamak Game Physics SDK
– Newton Game Dynamics SDK
– Bullet SDK
Demos
http://www.havok.com/content/view/584/96/
http://www.tokamakphysics.com/index.htm
Download