420 likes | 434 Views
Learn about various types of constraints and their applications in game development, including box constraints, bead on a wire, spring constraints, cloth simulation, articulated bodies, and angular constraints. Understand how to solve these constraints using linear systems.
E N D
Constrained Dynamics Marq Singer (marq@essentialmath.com)
The Problem • What are they • Why do we care • What are they good for Essential Math for Games
The Basics • Constraint – something that keeps an entity in the system from moving freely • For our purposes, we will treat each discreet entity as one particle in a system • Particles can be doors on hinges, bones in a skeleton, points on a piece of cloth, etc. Essential Math for Games
Box Constraints • Simplest case • Movement constrained within a 2D area Essential Math for Games
Box Constraints P 0 100 Essential Math for Games
Box Constraints (cont) • Restrict P to extents of the box • Recover from violations in position (last valid, rebound, wrap around) • Simple, yet the basis for the rest of this Essential Math for Games
Bead on a Wire • The Problem: • Restrict bead to path • Solutions: • Explicit (parametric) method • Implicit method Essential Math for Games
Parametric Constraints Essential Math for Games
Bead on a Wire • From Baraff, Witkin N = gradient f = force fc = constraint force f‘ = f + fc Essential Math for Games
Implicit Representation legal position legal velocity legal acceleration Essential Math for Games
Implicit Representation Constraint force = gradient vector times scalar l Essential Math for Games
Spring Constraints • Seems like a reasonable choice for soft body dynamics (cloth) • In practice, not very useful • Unstable, quickly explodes Essential Math for Games
Stiff Constraints • A special spring case does work • Ball and Stick/Tinkertoy • Particles stay a fixed distance apart • Basically an infinitely stiff spring • Simple • Not as prone to explode Essential Math for Games
Cloth Simulation • Use stiff springs • Solving constraints by relaxation • Solve with a linear system Essential Math for Games
Cloth Simulation Essential Math for Games
Cloth Simulation • Forces on our cloth Essential Math for Games
Cloth Simulation • Relaxation is simple • Infinitely rigid springs are stable • Predetermine Ci distance between particles • Apply forces (once per timestep) • Calculate D for two particles • If D != 0, move each particle half the distance • If n = 2, you’re done! Essential Math for Games
Relaxation Methods Essential Math for Games
Relaxation Methods Essential Math for Games
Cloth Simulation • When n > 2, each particle’s movement influenced by multiple particles • Satisfying one constraint can invalidate another • Multiple iterations stabilize system converging to approximate constraints • Forces applied before iterations • Fixed timestep (critical) Essential Math for Games
More Cloth Simulation • Use less rigid constraints • Vary the constraints in each direction (i.e. horizontal stronger than vertical) • Warp and weft constraints Essential Math for Games
Still More Cloth Simulation • Sheer Springs Essential Math for Games
Still More Cloth Simulation • Flex Springs Essential Math for Games
Articulated Bodies • Pin Joints • Hinges Essential Math for Games
Angular Constraints • Restrict the angle between particles • Results in a cone-shaped constraint Essential Math for Games
Angular Constraints • Unilateral distance constraint • Only apply constraint in one direction Essential Math for Games
Angular Constraints • Dot product constraint • Recovery is a bit more involved Essential Math for Games
Stick Man • Uses points and hinges • Angular (not shown) allow realistic orientations • Graphic example of why I’m an engineer and not an artist Essential Math for Games
Using A Linear System • Can sum up forces and constraints • Represent as system of linear equations • Solve using matrix methods Essential Math for Games
Basic Stuff Systems of linear equations Where: A = matrix of coefficients x = column vector of variables b = column vector of solutions Essential Math for Games
Basic Stuff • Populating matricies is a bit tricky, see [Boxerman] for a good example Isolating the ith equation: Essential Math for Games
Jacobi Iteration Solve for xi (assume other entries in x unchanged): (Which is basically what we did a few slides back) Essential Math for Games
Jacobi Iteration In matrix form: D, -L, -U are subparts of A D = diagonal -L = strictly lower triangular -U = strictly upper triangular Essential Math for Games
Jacobi Iteration Definition (diagonal, strictly lower, strictly upper): A = D - L - U Essential Math for Games
Gauss-Seidel Iteration Uses previous results as they are available Essential Math for Games
Gauss-Seidel Iteration In matrix form: Essential Math for Games
Gauss-Seidel Iteration • Components depend on previously computed components • Cannot solve simultaneously (unlike Jacobi) • Order dependant • If order changes the components of new iterates change Essential Math for Games
Successive Over Relaxation (SOR) • Gauss-Seidel has convergence problems • SOR is a modification of Gauss-Seidel • Add a parameter to wG-S Essential Math for Games
Successive Over Relaxation (SOR) • = a Gauss-Seidel iterate • 0 < w < 2 • If w = 1, simplifies to plain old Gauss-Seidel Essential Math for Games
Gauss-Seidel Iteration In matrix form: Essential Math for Games
Lots More Math(not covered here) • I highly recommend [Shewchuk 1994] • Steepest Descent • Conjugate Gradient • Newton’s Method (in some cases) • Hessian • Newton variants (Discreet, Quasi, Truncated) Essential Math for Games
References • Boxerman, Eddy and Ascher, Uri, Decomposing Cloth, Eurographics/ACM SIGGRAPH Symposium on Computer Animation (2004) • Eberly, David, Game Physics, Morgan Kaufmann, 2003. • Jakobsen, Thomas, Advanced Character Physics, Gamasutra Game Physics Resource Guide • Mathews, John H. and Fink, Kurtis K., Numerical Methods Using Matlab, 4th Edition, Prentice-Hall 2004 • Shewchuk, Jonathan Richard, An Introduction to the Conjugate Gradient Method Without the Agonizing Pain, August 1994. http://www-2.cs.cmu.edu/~jrs/jrspapers.html • Witken, Andrew, David Baraff, Michael Kass, SIGGRAPH Course Notes, Physically Based Modeling, SIGGRAPH 2002. • Yu, David, The Physics That Brought Cel Damage to Life: A Case Study, GDC 2002 Essential Math for Games