Five Physics Simulators for Articulated Bodies Chris Hecker
Five Physics Simulators for Articulated Bodies Chris Hecker definition six, inc. checker@d 6. com
Prerequisites • comfortable with math concepts, modeling, and equations • kinematics vs. dynamics • familiar with rigid body dynamics – probably have written a physics simulator for a game, even a hacky one, – or at least read about it in detail, – or are using a licensed simulator at a low level
Takeaway • 2 key concepts, vital to understand even if you’re licensing physics: – degrees of freedom, freedom configuration space, etc. – stiffness, stiffness and why it is important for games • pros and cons & subtleties of 4 different simulation techniques – all are useful, but different strengths • all examples are 2 D, but generalize directly to 3 D • not going to be detailed physics tutorial
Problem Domain Highly Redundant IK • Simulate a human figure under mouse control – for a game about rock climbing. . . demo • Before going to physics, I tried. . . – Cyclic Coordinate Descent (CCD) IK – works okay, simple to code, but problems: • • non-physical movement no closed loops no clear path to adding muscle controls gave a GDC talk about CCD problems, slides on d 6. com
Solving IK with Dynamics • rigid bodies with constraints • need to simulate enough to make articulated figure • 1 st-order dynamics • f = mv • no inertia/momentum; no force, no movement • mouse attached by spring or constraint • must be tight control • hands/feet attached by springs or constraints • must stay locked to the positions
I Tried 4 Simulation Techniques integration type coordinate type explicit integration augmented coordinates generalized coordinates Lagrange Multipliers Composite Rigid Body Method implicit integration Stiff Springs Recursive Newton-Euler • Wacky demo of all 4 running simultaneously. . .
Obvious Axes of the Techniques • Augmented vs. Generalized Coordinates – ways of representing the degrees-of-freedom (DOF) of the systems • Explicit vs. Implicit Integration – ways of stepping those DOFs forward in time, and how to deal with system stiffness
Degrees Of Freedom (DOF) • DOF is a critical concept in all math • find the DOF to understand the system • “coordinates necessary and sufficient to reach every valid state” • examples: • • point in 2 D: 2 DOF, point in 3 D: 3 DOF 2 D rigid body: 3 DOF, 3 D rigid body: 6 DOF point on a line: 1 DOF, point on a plane: 2 DOF simple desk lamp: 3 DOF (or 5 DOF counting head)
DOF Continued • systems have DOF, equations on those DOF constrain them and subtract DOF (x, y) • example, 2 D point, on line 2 DOF • “configuration space” is the space of the DOF x = 2 y • “manifold” is the c-space, usually viewed as embedded in the original space (x, y) = (t, 2 t) 2 DOF - 1 DOF = 1 DOF
Augmented Coordinates • aka. Lagrange Multipliers, constraint methods • simulate each body independently • calculate constraint forces and apply them • constraint forces keep bodies together 3 DOF + 3 DOF - 2 DOF = 4 DOF f
Generalized Coordinates • aka. reduced coordinates, embedded methods, recursive methods • calculate and simulate only the real DOF of the system • one rigid body and joints q 3 DOF + 1 DOF = 4 DOF
Augmented vs. Generalized Coordinates, Revisited • augmented coordinates: dynamics equations + constraint equations • general, modular, plug’n’play, breakable • big (often sparse) systems • simulating useless DOF, drift • generalized coordinates: dynamics equations • • small systems, no redundant DOFs, no drift complicated, custom coded dense systems no closed loops, no nonholonomic constraints
Stiffness • fast-changing systems are stiff • the real world is incredibly stiff • “rigid body” is a simplification to avoid stiffness • most game UIs are incredibly stiff • the mouse is insanely stiff. . . IK demo • FPS control is stiff, 3 rd person move change, etc. • kinematically animating objects can be arbitrarily stiff • animating the position with no derivative constraints • have keyframes drag around a ragdoll closely
Handling Stiffness • You want to handle as much stiffness as you can! • gives designers control • you can always make things softer, that’s easy • it’s very hard to handle stiffness robustly • explicit integrator will not handle stiff systems without tiny timestep • that’s sometimes used as a definition of numerical stiffness!
Stiffness Example • example: exponential decay position • phase space diagram, position vs. time dy/dx = -y dy/dx = -10 y • demo of increasing spring constant
Explicit vs. Implicit Integrators Non-stiff Problem • explicit jumps forward to next position • blindly leap forward based on current information • implicit jumps back from next position • find a next position that points back to current
Explicit vs. Implicit Integrators Stiff Problem • explicit jumps forward to next position • blindly leap forward based on current information • implicit jumps back from next position • find a next position that points back to current
Four Simulators In More Detail • Augmented Coordinates / Explicit Integration • Lagrange Multipliers • Augmented Coordinates / Implicit Integration • Implicit Springs • Generalized Coordinates / Explicit Integration • Composite Rigid Body Method • Generalized Coordinates / Implicit Integration • Implicit Recursive Newton Euler • spend a few slides on this technique • best for game humans?
Four Simulators In More Detail Augmented / Explicit Lagrange Multipliers • form dynamics equations for bodies • form constraint equations • solve for constraint forces given external forces – the constraint forces are called “Lagrange Multipliers” • apply forces to bodies • integrate bodies forward in time • forward euler, RK explicit integrator, etc. • pros: simple, modular, general • cons: medium sized matrices, drift, nonstiff • references: Baraff, Shabana, Barzel & Barr, my ponytail articles
Four Simulators In More Detail Augmented / Implicit Springs • form dynamics equations • write constraints as stiff springs • use implicit integrator to solve for next state • e. g. Shampine’s ode 23 s adaptive timestep, or semiimplicit Euler • pros: simple, modular, general, stiff • cons: inexact, big matrices, needs derivatives • references: Baraff (cloth), Kass, Lander
Four Simulators In More Detail Generalized / Explicit Composite Rigid Body Method • form tree structured augmented system • traverse tree computing dynamics on generalized coordinates incrementally • outward and inward iterations • integrate state forward • RK • pros: small matrices, explicit joints • cons: dense, nonstiff, not modular • references: Featherstone, Mirtich, Balafoutis
Four Simulators In More Detail Generalized / Implicit Recursive Newton Euler • form generalized coordinate dynamics • differentiate for implicit integrator • fully implicit backward Euler • solve system for new state • pros: small matrices, explicit joints, stiff • cons: dense, not modular, needs derivatives • references: Wu, Featherstone
Generalized / Implicit Some Derivation Warning: 2 slides of hot and heavy math! • f = fint + fext = mv • Forward Dynamics Algorithm • given forces, compute velocities (accelerations) • v = m-1(fint + fext) • Inverse Dynamics Algorithm • given velocities (accelerations), compute forces • fint = mv - fext • Insight: you can use an IDA to check for equilibrium given a velocity • if fint = 0, then the current velocity balances the external forces, or f - mv = 0 (which is just a rewrite of “f = mv”)
Generalized / Implicit Some Derivation (cont. ) • IDA computes F(q, q’) (ie. forces given state) • when F(q, q’) = 0, then system is moving correctly • we want to do implicit integration, so we want F(q 1, q 1’) = 0, the solution at the new time • implicit Euler equation: q 1 = q 0 + h q 1’ • q 1 = q 0 + h q 1’. . . q 1’ = (q 1 - q 0) / h • plug’n’chug: F(q 0 + h q 1’, q 1’) = 0 • this is a function in q 1’, because q 0 is known • we can use a nonlinear equation solver to solve F for q 1’, then use this to step forward with implicit Euler
Solving F(q 1’) = 0 can be hard, even impossible! (but it’s a very well documented impossible problem!) • open problem • solve vs. minimize?
The 5 th Simulator • Current best: • implicit Euler with F(q’) = 0 Newton solve • lots of wacky subdivision and searching to help find solutions – want to avoid adaptivity, but can’t in reality • doesn’t always work, finds no solution, bails • Idea: • an adaptive implicit integrator will find the answer, but slowly • the Newton solve sometimes cannot find the answer, no matter how slowly because it lacks info • spend time optimizing the adaptive integrator, because at least it has more information to go on
Summary • simulating an articulated rigid body is hard, and there a lot of tradeoffs and subtleties • there is no single perfect algorithm • yet? • stiffness is very important to handle for most games • generalized coordinates with implicit integration is the best bet so far for run-time • maybe augmented explicit (? ) for author-time tools • I’ll put the slides on my page at d 6. com
- Slides: 27