Four Five Physics Simulators for a Human Body
Four Five Physics Simulators for a Human Body Chris Hecker definition six, inc. checker@d 6. com
Four^H^H^Hive Physics Simulators for a Human Body 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, or at least read about it in detail
Takeaway • pros and cons & subtleties of 4 different simulation techniques – all are useful, but different strengths • 2 key concepts: – degrees of freedom, configuration space, etc. – stiffness, and why it is important • all examples are 2 D, but generalize directly to 3 D • not going to be detailed tutorial
A Couple Other Related Talks • David Wu’s talk on mixing kinematics & dynamics • Saturday, 2: 30 pm - 3: 30 pm • Experimental Gameplay Workshop • Friday, 4: 30 pm - 6: 30 pm
Before Physics I Tried. . . • Cyclic Coordinate Descent IK demo – my rock climbing game • works okay, but problems: – non-physical movement – no closed loops – no clear path to adding muscle controls
Physics “Solutions” • 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 Four Techniques • 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 • demo of all four running at once
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
Augmented Coordinates • aka. Lagrange Multipliers, constraint methods • calculate constraint forces and apply them • simulate each body independently • constraint forces keep bodies together 6 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
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 (x, y) • example, 2 D point, on line • “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)
Augmented vs. Generalized Coordinates, Revisited • augmented coordinates: dynamics equations + constraint equations • general, modular, plug’n’play, breakable • big (often sparse) linear systems • simulating useless DOF • generalized coordinates: dynamics equations • complicated, custom coded • small dense nonlinear 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 • kinematically animating objects can be arbitrarily stiff • animating the position with no derivative constraints
Handling Stiffness • You want to handle as much stiffness as you can! • gives designers control • can always make things softer, that’s easy • it’s very hard to handle • explicit integrator will not handle stiff systems without tiny timestep • that’s almost a definition of numerical stiffness! : )
Stiffness Example • example: exponential decay dy/dx = -10 y • demo of increasing spring constant
Explicit vs. Implicit Integrators • explicit jumps forward to next position • blindly leap based on current information • implicit jumps back from next position • find a next position that points 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 apply forces to bodies integrate bodies forward in time • RK explicit integrator • 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 • Shampine’s ode 23 s adaptive timestep, or semi-implicit 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 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 • f = fjoints + fext = mv • Forward Dynamics Algorithm • given joint forces, compute velocities (accelerations) • v = (fjoints + fext)/m • Inverse Dynamics Algorithm • given velocities (accelerations), compute joint forces • fjoints = mv - fext • you can use an IDA to check for equilibrium given a velocity • if fjoints = 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 gives F(q, q’) • when F(q, q’) = 0, then system is moving correctly • 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
Problem: Solving F(q 1’) = 0 can be hard! (but it’s very well documented) • 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: • the ode 23 s adaptive 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 ode 23 s, 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: 28