280 likes | 295 Views
Learn the pros & cons of 4 sim techniques, focusing on degrees of freedom, stiffness, 2D/3D examples. Includes explicit/implicit integrators.
E N D
Four Five Physics Simulators for a Human Body Chris Hecker definition six, inc. checker@d6.com
Four^H^H^Hive Physics Simulators for a Human Body Chris Hecker definition six, inc. checker@d6.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 2D, but generalize directly to 3D • not going to be detailed tutorial
A Couple Other Related Talks • David Wu’s talk on mixing kinematics & dynamics • Saturday, 2:30pm - 3:30pm • Experimental Gameplay Workshop • Friday, 4:30pm - 6:30pm
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 • 1st-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 f 6DOF - 2DOF = 4DOF
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 3DOF + 1DOF = 4DOF
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 2D: 2DOF, point in 3D: 3DOF • 2D rigid body: 3DOF, 3D rigid body: 6DOF • point on a line: 1DOF, point on a plane: 2DOF • simple desk lamp: 3DOF (or 5DOF counting head)
DOF Continued • systems have DOF, equations on those DOF constrain them • example, 2D point, on line • “configuration space” is the space ofthe DOF • “manifold” is the c-space, usuallyviewed as embedded in theoriginal space (x,y) x = 2y (x,y) = (t,2t)
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 • demo of increasing spring constant dy/dx = -y dy/dx = -10y
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 / ExplicitLagrange 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 / ImplicitImplicit Springs • form dynamics equations • write constraints as stiff springs • use implicit integrator to solve for next state • Shampine’s ode23s adaptive timestep, or semi-implicit Euler • pros: simple, modular, general, stiff • cons: inexact, big matrices, needs derivativesreferences: Baraff (cloth), Kass, Lander
Four Simulators In More Detail Generalized / ExplicitComposite 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 / ImplicitImplicit 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 / ImplicitSome 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 / ImplicitSome Derivation (cont.) • IDA gives F(q,q’) • when F(q,q’) = 0, then system is moving correctly • we want F(q1, q1’) = 0, the solution at the new time • implicit Euler equation: q1 = q0 + h q1’ • q1 = q0 + h q1’ ... q1’ = (q1 - q0) / h • plug’n’chug: F(q0 + h q1’, q1’) = 0 • this is a function in q1’, because q0 is known • we can use a nonlinear equation solver to solve F for q1’, then use this to step forward with implicit Euler
Problem: Solving F(q1’) = 0 can be hard!(but it’s very well documented) • open problem • solve vs. minimize?
The 5th 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 ode23s 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 ode23s, because at least it has more information to go on
Summary • simulating an articulated rigid body is hard, and there are 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 d6.com