680 likes | 691 Views
Explore the concepts of game physics, collision detection, and collision response to create more realistic and interactive gaming experiences. Learn about the techniques used to detect and respond to collisions between objects, and how to simplify complex geometry and optimize object pair tests. This guide covers topics such as fluid dynamics, deformable models, ragdoll physics, and more.
E N D
Why Physics? • More interactivity • Looks cool (explosions) • More realistic • More variety and easier animations (rag doll physics for death animations) • Better gameplay (space fighter, driving games)
Game Physics • What is meant by Physics in games (old)? • Collision Detection (testing) • But want the physical effect of hitting an immovable object. • Also needed to provide the input (forces) for physical simulations (equations) of moveable or deformable objects. • More intelligent (automated) interpolation • Particle systems – Artistically defined generation with Newtonian-based controls.
Game Physics • What is meant by Physics in games (new)? • Fluid dynamics • Deformable models • Ragdoll (non-scripted) articulation • (More) Accurate simulation
Dead Reckoning • Given the current state of a single entity, integrate it in time assuming there are no other influences. • The state consists of: • Position • Velocity • Acceleration (optional) • Angular Momentum (optional)
Collisions • Collision Detection • Collision detection is a geometric problem • Given two moving objects defined in an initial and final configuration, determine if they intersected at some point between the two states • Collision Response • The response to collisions is the actual physics problem of determining the unknown forces (or impulses) of the collision
Collision Detection • ‘Collision detection’ is really a geometric intersection detection problem • Main subjects • Intersection testing (triangles, spheres, lines…) • Optimization structures (octree, BSP…) • Pair reduction (reducing N2 object pair testing)
Intersection Testing • General goals: given two objects with current and previous orientations specified, determine if, where, and when the two objects intersect • Alternative: given two objects with only current orientations, determine if they intersect • Sometimes, we need to find all intersections. Other times, we just want the first one. Sometimes, we just need to know if the two objects intersect and don’t need the actual intersection data.
Collision Detection Complicated for two reasons 1. Geometry is typically very complex, potentially requiring expensive testing 2. Naïve solution is O(n2) time complexity, since every object can potentially collide with every other object
Collision Detection Two basic techniques 1. Overlap testing • Detects whether a collision has already occurred 2. Intersection testing • Predicts whether a collision will occur in the future
Overlap Testing • Facts • Most common technique used in games • Exhibits more error than intersection testing • Concept • For every simulation step, test every pair of objects to see if they overlap • Easy for simple volumes like spheres, harder for polygonal models
Overlap Testing:Useful Results • Useful results of detected collision • Time collision took place • Collision normal vector
Overlap Testing:Collision Time • Collision time calculated by moving object back in time until right before collision • Bisection is an effective technique
Overlap Testing:Limitations • Fails with objects that move too fast • Unlikely to catch time slice during overlap • Possible solutions • Design constraint on speed of objects • Reduce simulation step size
Intersection Testing • Predict future collisions • When predicted: • Move simulation to time of collision • Resolve collision • Simulate remaining time step
Intersection Testing:Swept Geometry • Extrude geometry in direction of movement • Swept sphere turns into a “capsule” shape
Intersection Testing:Sphere-Sphere Collision • Smallest distance ever separating two spheres: • If there is a collision
Intersection Testing:Limitations • Issue with networked games • Future predictions rely on exact state of world at present time • Due to packet latency, current state not always coherent • Assumes constant velocity and zero acceleration over simulation step • Has implications for physics model and choice of integrator
Collision Resolution:Examples • Two billiard balls strike • Calculate ball positions at time of impact • Impart new velocities on balls • Play “clinking” sound effect • Rocket slams into wall • Rocket disappears • Explosion spawned and explosion sound effect • Wall charred and area damage inflicted on nearby characters • Character walks through wall • Magical sound effect triggered • No trajectories or velocities affected
Dealing with Complexity Two issues 1. Complex geometry must be simplified 2. Reduce number of object pair tests
Collision Detection Methods • Many different methods • We will focus on two of them: • Grid method: good for many simple moving objects of about the same size (e.g., many moving discs with similar radii) • Bounding Volume Hierarchy (BVH) method: good for few moving objects with complex geometry
d Grid Method • Subdivide space into a regular grid cubic of square bins • Index each object in a bin
d Grid Method Running time is proportional tonumber of moving objects
Bounding Volume Hierarchy Method • Enclose objects into bounding volumes (spheres or boxes) • Check the bounding volumes first
Bounding Volume Hierarchy Method • Enclose objects into bounding volumes (spheres or boxes) • Check the bounding volumes first • Decompose an object into two
Bounding Volume Hierarchy Method • Enclose objects into bounding volumes (spheres or boxes) • Check the bounding volumes first • Decompose an object into two • Proceed hierarchically
Bounding Volume Hierarchy Method • Enclose objects into bounding volumes (spheres or boxes) • Check the bounding volumes first • Decompose an object into two • Proceed hierarchically
Bounding Volume Hierarchy Method • BVH is pre-computed for each object
A A C C B B E F E F D D G G Collision Detection Two objects described by their precomputed BVHs
pruning Collision Detection Search tree AA A A
A C B E F D G BB BC CB CC Collision Detection Search tree AA A A
A C B E F D G pruning Collision Detection Search tree AA BB BC CB CC
A C B E F D G FD FE GD GE G D Collision Detection Search tree AA BB BC CB CC If the pieces contained in G and D overlap collision
Performance Several thousand collision checks per second for 2 three-dimensional objects each described by 500,000 triangles, on a 1-GHz PC
Desirable Properties of BVs and BVHs BVs: • Tightness • Efficient testing • Invariance • BVH: • Separation • Balanced tree ?
Desirable Properties of BVs and BVHs BVs: • Tightness • Efficient testing • Invariance • BVH: • Separation • Balanced tree
Spheres • Invariant • Efficient to test • But tight?
Axis-Aligned Bounding Box (AABB) • Not invariant • Efficient to test • Not tight
Oriented Bounding Box (OBB) • Invariant • Less efficient to test • Tight
Comparison of BVs No type of BV is optimal for all situations
Why a Physics Engine? • Physics simulation is hard • Requires very stable integrator • Articulated bodies especially take difficult math • Optimization is important • Spring systems explode easily
Major Features • Collision detection • Newtonian forces and collision response • Buoyant forces • Friction • Articulation and jointed characters (rag doll) • Prebuilt objects for simulation
Physics Toolkits • ODE (Open Dynamics Engine) • Ageia PhysX • Newton Game Dynamics • Havok • Havok FX • Tokamak Game Physics
Rigid Body Dynamics • What is involved in this: • http://www.youtube.com/watch?v=NM0bY_IFoes&feature=related
More Complicated? • What about this one? • http://www.youtube.com/watch?v=Q7HLWrldgLQ&feature=related
Ragdoll Physics • YouTube • http://www.youtube.com/watch?v=gbuA-HEbROk • Demo • http://www.2dplay.com/ragdoll-physics-2/ragdoll-physics-2-play.htm
Fluid Dynamics • Water and other fluids are governed by the Navier Stokes equations. • http://gameplanets.blogspot.com/2007/06/physics-simulations.html • nVidia demo • http://www.youtube.com/watch?v=wWlaD_2gsIM&feature=related