Top Banner
40

Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans [email protected] How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Oct 16, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection
Page 2: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Anatomy of a Physics Engine

Erwin [email protected]

Page 3: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

How it fits together

» Terminology» Rigid Body Dynamics» Collision Detection

» Software Design Decisions» Trip through the Physics Pipeline» Typical Optimizations

» Beyond Rigid Bodies» Softbody and Fluid simulation» Networked Physics

Page 4: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Modeling and Simulation

Physical SystemIdealization

Mathematical ModelDiscretization

Discrete ModelComputation

Discrete Solution

Page 5: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Simplified Model

» Objects are rigid, no deformation» The static environment is

indestructible» Approximate the shape of objects

collision detection, ray cast, inertiaCan have multiple representations

» Can add deformation, destruction and more realistic representation later

Page 6: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

» PositionCenter of mass

» OrientationPrincipal axis of inertia

» No scaling, shear

Rigid Body Transform

Page 7: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Moving Things Around» Kinematics

Describes motionUses position, velocity, momentum, acceleration

20

12t ix t atvx += +

Page 8: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Moving Things Around» Kinematics

Describes motionUses position, velocity, momentum, acceleration

» DynamicsExplains motionUses forces...and impulses

*F m a=

Page 9: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Moving Things Around» Kinematics

Describes motionUses position, velocity, momentum, acceleration

» DynamicsExplains motionForces (F=ma)Impulses

» RotationTorqueAngular momentumMoment of inertia

*Iτ α=

Page 10: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Newton’s Laws of Motion

1. Law of Inertia

1. Velocity stays constant without force

2. Force is mass times acceleration

3. Action = - Reaction

*F m a=

Page 11: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

2nd Law for Rotation

» Torque = Inertia times angular acceleration

» Around the principal axis, center of mass

» Inertia is mass distribution over the shape

*Iτ α=

Page 12: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Newton’s Laws andSpatial, Temporal Scale

» Object size should be not too smallBigger than an atom, or pebble

» And not to largeUnlike planets or the universe

» Speed of objects << light speed

Page 13: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Simulation Baggage

» Flipbook syndrome» Things mostly

happen in-between snapshots

» Curved trajectories treated as piecewise linear

» Terms often assumed to be constant throughout the frame

Page 14: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Unconstrained Motion» How to compute

the next position and velocity from current position and velocity?

» This process is called integration;

» An algorithm for doing this in an integrator

» Which integration method to use?

Page 15: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Position Integration

» Euler Integrator

» Simplectic Euler

First update velocity, then position

» Runge KuttaAccuracy often not worth it

» See Erin Catto's talk on integrators

1 *t t tx x v dt+ = +

1 1 *t t tx x v dt+ += +

Page 16: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Position Integration

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

Solve constraints

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

IntegratePosition

ComputeAABBs

ContactPoints

Predict Transforms

Page 17: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Applying Gravity

» Update the acceleration

» Then update the velocity

1 *t tv v a dt+ = +

1 /t taa F m+ = +

Page 18: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Apply Gravity

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

Solve constraints

IntegratePosition

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ApplyGravity

ComputeAABBs

ContactPoints

Predict Transforms

Page 19: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constrained Motion

» Reducing the degrees of freedom» Collision Impact» Non-penetration» Friction» Joint connections

Page 20: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constraints andDegrees of Freedom

Page 21: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constraint Solver

» Calculate new velocities to satisfy constraints between objects

1. Impact/collision constraints2. Non-penetration constraints3. Friction constraints4. Joint constraints

Page 22: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Iterative Constraint Solver

1. Measure the relative velocity and penetration error between pairs of objects

2. Apply impulse to correct this error3. Repeat step 1 and 2 for all pairs,

a small number of times (10)

» See Erin Catto's talk for details

Page 23: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constraint Solver

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

IntegratePosition

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

Solve constraints

ComputeAABBs

ContactPoints

Predict Transforms

Page 24: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

» Check if any objects overlap

Collision Detection

Page 25: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

» Position, normal and distance of closest points

» Conventions:positive distance = separationnegative distance = penetrationnormal points from B to A

Collision Narrowphase:Contact Points

Object A B

Page 26: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Narrowphase Collision Detection

Forward Dynamics Collision Detection

DetectPairs

Forward Dynamics

SetupConstraints

Solve constraints

IntegratePosition

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ComputeAABBs

ContactPoints

ComputeContacts

Predict Transforms

Page 27: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Pairwise tests

» Need to compute contact info based on both type of collision shapes

» See Gino van den Bergen's talk

Page 28: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

The Problem

» If collisions are checked only for the sampled moments, some collisions are missed (tunneling).

» Humans easily spot such artifacts.

» See Gino van den Bergen's talk

Page 29: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Brute Force Physics Pipeline

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

Solve constraints

IntegratePosition

ApplyGravity

ComputeAABBs

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ContactPoints

Predict Transforms

Page 30: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Counteracting Goals

» Fast ComputationsInteractivity

» Robustness Works no matter what

» Accuracy Physical correct or plausible

» Problem sizeThe whole world

Page 31: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Common Optimizations

Page 32: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Collision Broadphase

» Avoid costly narrowphase using1. Approximate bounding shape2. Spatial data structure and/or

spatial sorting to avoid n^2 tests

Page 33: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Broadphase acceleration structures

» Sweep and prune, uniform grid, dynamic BVH tree

Page 34: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Broadphase Collision Detection

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

Solve constraints

IntegratePosition

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ComputeAABBs

ContactPoints

Overlapping

Pairs

Predict Transforms

Page 35: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constraint Setup

» Precompute info that is constant during all the iterations

Friction, jacobian data, cross products

» Split the constraints for parallel processing (batching)

Page 36: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Constraint Setup

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

Solve constraints

IntegratePosition

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ComputeAABBs

ContactPoints

SetupConstraints

Predict Transforms

Page 37: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Simulation Islands

» Simulation islands can “go to sleep” when they become stable

i.e. when forces and motion remain unchanged

» When an object enters the island’s bounds...

Page 38: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Simulation Islands

» Simulation islands can “go to sleep” when they become stable

i.e. when forces and motion remain unchanged

» When an object enters the island’s bounds...

» ...the island wakes up

Page 39: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Trip through the Physics Pipeline

Forward Dynamics Collision Detection

DetectPairs

ComputeContacts

Forward Dynamics

SetupConstraints

Solve constraints

IntegratePosition

ApplyGravity

CollisionShapes

MotionstateTransforms,

Velocities

RigidBodies

Mass,Inertia

Overlapping

Pairs

Constraintscontacts,joints

ObjectAABBs

Collision Data Dynamics Data

ComputeAABBs

ContactPoints

Predict Transforms

Page 40: Anatomy of a - GameDevs.org...Anatomy of a Physics Engine Erwin Coumans erwin_coumans@playstation.sony.com How it fits together » Terminology » Rigid Body Dynamics » Collision Detection

Questions?

http://bulletphysics.org