Jump to content
  • Advertisement
Sign in to follow this  
Dirk Gregorius

Spline Ik and Fullbody Ik

This topic is 1529 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am looking for some references on Spline Ik and Fullbody Ik. I found tons of good material on basic Ik solvers like Jacobian methods, CCD, analytical and particle methods, but I failed to find anything about these two topics. I must assume I lost my Google Fu :)


For Spline Ik my understanding is that your are given a bunch of joint pivots and find a curve through all these points. Then while moving the spline control points you reconstruct the bone chain. There are some tricky details for the twist.


Fullbody Ik seems to combine different kinds of Ik solvers (e.g. spline solver for the spine, and maybe analytical methods for arms, etc) and then solve those in some hierarchical way with constraints between the Ik handles.


Any information is welcome! Thanks!

Share this post

Link to post
Share on other sites

A while ago when I was looking into setting up FBIK, after scanning some of the literature (which I did not save any references to, unfortunately), I decided to just try out a standard PGS/SI style constraint solver in a somewhat-dynamic simulation.


It turned out very well:



Some notes on the implementation:

  • Since it's just a SI constraint solver, there are no requirements on graph layout. Cycles are perfectly acceptable. Target constraints can be applied to any bone.
  • The constraint graph is traversed as a preprocess to collect the active constraint set. This process also heuristically assigns 'masses' to the bones to reduce the chances of instability from ratio issues and to make the rig more responsive. It computes the stressed paths between target constraints and pins and gives less mass to bones which are more distant from the stressed paths. In practice, this has mostly eliminated ratio-related instability.
  • All velocity is effectively damped out after every single frame of simulation. This makes the simulation more controllable (no overshooting), though it does tend to require more simulation time to reach goals.
  • While it is pretty much a dynamic simulation, that doesn't mean it has to behave like one. It can converge to goals rapidly enough that it's possible to solve from a distant base pose. The video shows both dynamic (using the results of the previous 'ik solve' as the starting pose) and nondynamic (starting from the same base pose each time) modes.
  • It supports the concept of hard pins which fix a bone in place. Impulses cannot propagate through a pinned bone, like a static/kinematic body. The idea was to use it as a sort of optimization and guarantee that no motion would get transferred through to the rest of the graph. In practice, the performance didn't really matter for the blender addon, and highly rigid target constraints tended to do the job well enough while allowing a more intuitive transition to softness. These might still get used when the IK system is applied in a game.
  • It supports 'fixer' iterations, which are just frames of simulation where the target constraints are not solved. The idea was to close any gaps that the targets might have opened in the bone structure. In practice, these are almost never necessary and can actually cause unintuitive behavior.
Edited by Norbo

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!