Créer une présentation
Télécharger la présentation

Télécharger la présentation
## Jason Clark (jason@essentialmath)

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Inverse Kinematics**Jason Clark (jason@essentialmath.com)**Inverse Kinematics**• Actors are animated in game. • Animations are independent of the world • Want to have more realistic response to what the Actors are interacting with. • Need a mechanism for reacting to goals specified during the game. Essential Math for Games**Kinematics**• Have a hierarchical skeleton structure • Each joint is defined local to its parent • Rotation • Constant Translation • defines set for entire structure.Is the global position of end joint Essential Math for Games**Kinematics**• Consider the kinematic chain below. Essential Math for Games**Inverse Kinematics**• Animations can be thought of as driving the kinematics in a game • Want reaction to world. I.e. Position a limb based on a goal defined by game situation. • Need method given goal position to update to achieve it. Essential Math for Games**Inverse Kinematics**• Kinematics. • Therefore Inverse Kinematics is. As a general problem this is hard. G D1 D3 Q2 E Q1 Q3 D2 Essential Math for Games**Types of solutions**• Analytical • Equation that can be directly solved • Preferred, practically impossible as a general solution • Numerical • Expensive • In-accurate • Unfortunately only practical option for general solver. Essential Math for Games**Three Common Methods**• Jacobian (Numerical) • Cyclic Coordinate Descent. (Numerical) • Anthropomorphic. (Analytical? Depends) Essential Math for Games**The Jacobian**• What is it? A linear approximation to • Matrix of partial derivatives of entire system. • In this case, defined relative to • Defines how changes relative to instantaneous changes in the system. Essential Math for Games**The Jacobian**• Linear approximation Actual E Linear Approximation Essential Math for Games**The Jacobian**• Limiting discussion to positional goals only. Essential Math for Games**The Jacobian**Essential Math for Games**Not quite right**• Jacobian defines changes in relative to changes in • Want to know how a desired change in maps to changes in • Recall that the equation of inverse kinematics is defined as • Therefore we need Essential Math for Games**Inverse Jacobian Problems**• Typically system is over specified (under defined) • Ameliorate problem by limiting joints. E.g. Specify elbow as a 1DOF joint. • No guarantee it is invertible. • Typically not a square matrix. • Singularities. Essential Math for Games**Cheat. Pseudo Inverse**• Square so can be inverted. • But why is it okay to use this? • Principle of Virtual Work Essential Math for Games**Principle of Virtual Work**• Tends towards the right solution. (I.e. It’s the right idea, if not completely accurate) • Take small steps to minimize error. • Calculate error, and if too large adjust step size, or size of • Error = Essential Math for Games**Calculating the Jacobian**• Given angle and axis of rotation • is relative to as defined by • Velocity of relative to change in • Gives one column of Jacobian V1 V2 N2 E N1 Essential Math for Games**Algorithm**• Only considering positional goals. • Define the following variables – end effector – ith Joint position – ith Joint axis of rotation Essential Math for Games**Algorithm**• Calculate the Jacobian • Calculate: • Calculate: • Determine error = • If error > tolerance thenrepeat 4 till within tolerance. Essential Math for Games**Algorithm**• Calculate: • Apply to entire system • Repeat until Or max steps is reached. Essential Math for Games**Addendum**• Minimizes joint angle rates. Configuration produced may not be natural looking • Add gain values for each joint. Add “stiffness” I.e. Bias which joints are moved • Add constraints, Clamp joint angles. • Both these ideas slow down convergence of the algorithm. Need more steps • as force. transforms to internal velocities Essential Math for Games**One last thing**• As stated previously, the Jacobian is a linear approximation to the problem. • Using the pseudo inverse is an approximation to solve for intractability of the problem. • So already cheating, why not cheat more? Can simply use as approximation. Slower convergence, but much cheaper to compute than Essential Math for Games**Cyclic Coordinate Descent**• The Jacobian is hard. It deals with entire system as a whole. Good results, more complicated to code, and expensive. • That’s too much work, lets deal with each joint individually. • Heuristic only. Not as mathematically grounded as the Jacobian. Essential Math for Games**CCD**• Reduce problem to local consideration at each joint. Start at leaf and move up. • Calculate change in joint needed to minimize “error”. Error = • Calculate Essential Math for Games**CCD**• Calculate rotation necessary to align into • Modify current joint by and adjust entire chain below. This is important. • Move up chain and repeat. • Repeat over entire chain till. • Done! Essential Math for Games**Addendum**• Pretty easy. Much simpler than the Jacobian. • Problems. Takes more updates of chain and steps than Jacobian does. Simpler individual steps, need more of them. Essential Math for Games**Addendum**• Moves end joints first. Heuristic inherently favors them. Local minima problem • Results in unnatural configurations. E.g Wrist bent oddly to reach goal. Worse than Jacobian about this. • Basically Gauss-Seidel. SOR can help. Essential Math for Games**Demo**• Snake • From Jeff Lander • darwin3d.com/gdm/1998.htm Essential Math for Games**Anthropomorphic**• Other 2 solutions are general purpose solutions • Most games have people. We know something about them. • Standard principle of computer science. Use knowledge of problem domain to simplify problem Essential Math for Games**Rainbow 6: Lockdown**• Leave wrist alone. Inaccurate, but good enough and difficult to get right. • Treat elbow as a 1DOF joint. Not precisely accurate. But good enough. • Treat the shoulder as 3DOF joint with no constraints. Again, not entirely true but good enough. Essential Math for Games**Rainbow 6: Lockdown**• Leg can be run through same algorithm as Arm. (mostly) • Knee can be simulated as a 1DOF joint. (Elbow) • Hip can be simulated as a 3DOF joint (Shoulder) • Have second pass to fix Ankle. Essential Math for Games**Algorithm**• Elbow defines the distance between the shoulder and the end effector. • Simple Trig problem • Law of Cosines B Q A C Essential Math for Games**Algorithm**• After that, simply run one step of the CCD algorithm on the shoulder. • Done! Simple, accurate within a tolerable margin, and cheap. Essential Math for Games**References**• Welman, Chris, “Inverse Kinematics and Geometric Constraints for Articulated Figure Manipulation”, Simon Fraser University. 1993. • Meredith, Michael and Maddock, Steve, “Real-Time Inverse Kinematics: The Return of the Jacobian” University of Sheffield • Tolani, Goswami, and Badler, “Real-Time Inverse Kinematics Techniques for Anthropomorphic Limbs”, University of Pennsylvania. 2000 • Blow, Jonathan, “Oh My God! I Inverted Kine”. Game Developer. September 1998 • Parent, Rick, “Computer Animation: Algorithms and Techniques”, Morgan-Kaufmann, San Francisco, 2001. Essential Math for Games