Spline Ik and Fullbody Ik

Started by
0 comments, last by Norbo 9 years, 10 months ago

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!

Advertisement

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:
[media]https:

[/media]

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.

This topic is closed to new replies.

Advertisement