Sixbirds Rigging Solvers (UPDATE V1.3)

January 19th, 2010 by Helge Mathee - Viewed 32764 times -

Hey folks!

Edit: I upgraded the addon to version 1.3, see the 13th solver for new description of the Nulls 2 Nurbssurface. Additionally I fixed two bugs and removed some nasty logmessages from the Null 2 Curve solver. Some solvers are NOT compatible with the version 1.3, so I will keep the link to the previous versions around.

So finally after a good first round here at Sixbirds in Spain we decided to release some of the tools we are using for production to the community. At this point we are sharing our rigging solvers, a collection of custom operators for “solving” certain equations, like IK, Bezier projection, curve lookup etc. The collection includes 12 different solvers. Please have a look at this video, which gives you a quick runover of the technology…

embedded by Embedded Video

vimeo - Direct link to

Requirements: Softimage 2010 SP1, Windows 32, 64 or Linux 64 with installed Python 2.52 or higher. For installing python see

The addon also includes a very handy custom command, called “sixbirds_rigging_inspect_op”, which allows you to look at the settings of the solvers without having to dig for them in the explorer. I usually map this command to F4, since I don’t use the F4 UI Slider feature all that much. Furthermore the addon provides a simple toolbar to apply all of these solvers, and adds a new simple “bone” primitive to the Get->Primitive menu, which is handy when creating custom IK chains. Also the addon will come with a sample project, one scene for each solver demonstrating the features.
The addon is provided under the GPL license, without warranty, and, as we like to say in R&D: As is. Please don’t ask for fixes or further features at this point, we don’t have the resources.

All of the solvers are applied by selecting objects in a particular order and creating the solver. I want to quickly summarize these selection orders so you can properly use the addon.

One note: All solvers use X as their main axis. This decision was made since the Softimage Bone primitive uses X as the axis along the bone. So all other solvers use this axis as well. This means, for example, that you will have to rotate controllers or the spline solvers or the squash and stretch for example, if you want the spline to point along Y.

1. SRT Spring
This is a solver which is able to simulate a simple transform based spring. You can select the channels you want to use for simulation (scaling, rotation and/or translation). To apply this solver just select any 3d object and it will create a null as a child of this object with the solver applied.

2. Direction Spring
The direction spring solver simulates a spring which is driven by a global direction, not an orientation. Just select any 3d object and it will create a bone as a child, with the solver applied. To see the difference between the SRT Spring and the Direction Spring just play with it or have a look at the sample scenes.

3. IK 2 Bone
This solver can calculate one of the different outputs of a typical IK chain, but also provides soft stretching and some more features like inverting the solve etc. To use this solver, please select a) the root, b) the effector, c) the upvector and d) the output object. This solver does not create 3d object by itself, so if you want to apply to a bone you will have to create a single bone first (Get->Primitive->Bone). The solver also creates a property on the root object to drive all output objects (if you create more than one) in a central place.

4. IK FK 2 Bone
This solver has the most complicated selection order of all solvers provided in the addon. To apply it you nee to select a) The root, b) the IK effector, c) the IK upvector, d) the FK first bone, e) the FK second bone, f) the FK effector (wrist for ex) and g) the output object. This solver, like the IK 2 Bone, does not create output objects itself. This solver also creates a centralized property on the root object.

5. Simple Spline
This solver calculates a transform on a piece-wise-bezier defined by as many 3d objects as you want. The tangent of the bezier are the local X axis of the 3d objects driving the solver. To apply it simply select at least 2 objects (or more) an apply the solver. This solver creates a null as a child object of the first controller. The Simple Spline also creates a property on the first controller, to drive all created output objects in a central place.

6. Rolling Spline
This solver calculates the same bezier transform, but requires a secondary layer of controls to allow for continuous rolling along the spline. For using this solver you need to have a two level hierarchy (like parent_ctrl -> child_ctrl) or at least two controllers. Please select the child controllers ( at least 2 ) and apply the solver. It will create a null as a child of the first selected controller. Please have a look at the sample scene to get a better idea. The rolling spline, as the simple spline, creates a centralized property on the first controller.

7. 4 Point Surface
This solver computes a transform on a iso surface build by 2D bezier curves. These curves are defined by 4 controllers (the corners of the iso surface). To use this solver select 4 objects, it will create a null object as a child of the first corner object.

8. Interpolated Pose
The interpolated pose solver calculates a pose in between two other poses. To use it simply select two 3d objects and apply the solver, it will create a null as a child of the first selected object.

9. Squash and Stretch
This solver can calculate a scaled output transform based on the distance of two objects. The scaling for this effect is done along Y and Z. To apply the solver, select the first object of the distance calculation (hip, for example), the second one (chest) and the parent object for the new null. This can be for example a vertebra on the spine.

10. Null 2 Curve
This solver projects  an object onto a curve. This is useful for facial rigging and for anything that has to travel on a path, while being driver by a visual controller. To use this solver select a) the driver ctrl, b) the upvector ctrl, c) the input curve) and (optionally) d) the output curve. The solver will create a null as a child of the output curve (or the input curve if you just had one curve selected).

11. Curve Sliding
This solver reprojects a curve along itself while maintaining the length. This is useful for keeping the length on a curve, even it is deformed. To use this solver, just select one curve and apply it. If you want to use the sliding on top of enveloping, for example, ensure you have the animation construction mode selected before applying it.

12. Curve Collision
This solver does a simple collision with soft distance of a curve to a nurbs surface. This is useful for having curve being pushed by a teeth proxy in a facial rig, for example. You can use this solver in conjunction with the curve sliding solver. To use it, select a) a curve and b) a nurbs surface. Ensure that the surface is closed, please test with a nurbs sphere first. The collision object is supposed to be really, really simply to give you good feedback.

13. Null 2 Surface
This solver projects  an object onto a nurbssurface. This is useful for facial rigging and for anything that has to travel on a surface, while being driver by a visual controller. To use this solver select a) the driver ctrl, b) the upvector ctrl, c) the input surface) and (optionally) d) the output surface. The solver will create a null as a child of the output surface (or the input surface if you just had one curve selected). The solver uses a relative mapping, similar to a pen table (tablet space to screen space). Feel free to post questions if you need additional assistance.

Ok, after all of this information let’s have a look at a second video, in which I will go over each solver, reapplying it and test-driving it.

embedded by Embedded Video

vimeo - Direct link to

I hope you all enjoy the videos and find something useful in them. We are trying to design more tools in a way that they are easy to share, and we at Sixbirds want to follow that move of being able to publish more production tools.

Please let us know what you think at

development (at)

Or feel free to post comments here at XSI-BLOG.

Last but not least: Thanks to all of the other providers of free software / plugins and the helpful Softimage Community!

There you go!

(older versions:)


Miquel & Helge @ Sixbirds

26 Responses to “Sixbirds Rigging Solvers (UPDATE V1.3)”

  1. Martin says:

    Hi Helge, hi Miquel,

    looks great, thanks for sharing


  2. Great stuff! These will come handy. Thanks for sharing : )

  3. Robert Okker says:

    Look’s great guys.
    Gonna play with it today.

    Really great you’re willing to share this with the rest.


  4. slux says:

    Looks great. You have some very useful tools here. Thank you very much for making it available to the public! :)

  5. duncan says:

    pure awesomeness. Some of these solvers look like the types of things I often use in my rigs but never had the time to encapsulate them into neat little tools like this. This will save me lots of time.

    Thanks for sharing

  6. Miles says:

    It’s great,it’s very useful and it is very fast!
    I’ve long been looking for a spline alternative in XSI.
    I will not use XSI default spline again!
    And the 4 PointSurface remind me of CAT MUSCLE system.

    I just have problem on mirroring the rig to the other side.(from L to R)
    Seems the system didn’t accept negative scale value….

    Anyway, Thank you very much for sharing!

  7. Jason McKeeman says:

    The rolling spline is awesome, thanks!

  8. juan says:

    thank you very much indeed.
    still on 7.01 but hopefully i will get the chance to have a look at soon.
    cheers again!

  9. Steven Caron says:

    hey helge,
    not sure if you are reading the comments, but i have a question about springs always having to start at frame 1. whats your suggestion for getting the simulation to start at another frame? should we change the expression getting the frame number? or can we key frame the ‘scale’ parameter off then on?

  10. Enoch Ihde says:

    Hey Helge,
    Steven and I also noticed that value logging appears to be turned on during interaction. Is there a toggle somewhere to turn this off?

  11. Steven Caron says:

    doh! going to send my questions to the email you provided…

  12. Helge Mathee says:

    hey Steven,

    you can change the spring parameter “fr” to whatever frame you want to use for the reset frame.
    Also the logmessages yes, I saw them, it is some debug stuff which I forgot to clean up. I will release a new version of the addon sometime next week.

    Thanks all for the feedback!

  13. james says:

    Hey – Thanks for sharing this stuff, I’m looking forward to testing it out!
    I’m having trouble, though, since it doesn’t show up in the key map settings after installing the addon. I’m not too technical in xsi, so I could be missing something simple… is there anything to double check if its not showing up in the keymapper? is there a way to run it from the script editor?

  14. Kalone says:

    Doesn`t work here, below each solver`s buttons “missing” is indicated – whatever IS missing. Installed Python64 but didn`t understand that UAC thing as I have Windows7.

  15. Jan says:

    great rigging tools!
    thanx a lot for sharing!!

  16. Babaloo says:

    Big up!

    Absolutely amazing!
    Superb set of tools, thank you so much!

  17. Flaye says:


    Technical issue…when installing the addon, an error stating Unable to create this file: ” …\sixbirds_rigging_solvers.ncb” comes up.

    The files and the toolbar is installed, but stays grayed out.


  18. Archer} says:

    Hi Helge !
    Maybe it’s a slightly offtopic, but what about your object fragmentation tool ?
    have you a progress in it ? Thanks

  19. Hi Helge Mathee, this is great stuff, but I have issues installing thee addon.
    # ERROR : 2000 – Unable to create this file:
    # C:\Users\agovela\Autodesk\Softimage_2010_SP1\Addons\sixbirds_rigging_solvers\Application\Plugins\src\sixbirds_rigging_solvers.ncb
    # The file may already exist.

    I checked the path and there is no file there, The toolbar shows up but when I click on buttons error messages pop up.

    Softimage 2010SP1 Python 2.6 vista 64


  20. Helge Mathee says:

    FMX 2010 is coming!

    We will make public soon our new addon, based on our new company label! Stay tuned for AutoWeighting features!

  21. Pete says:

    Thank you so much for sharing these great rigging solvers!

  22. spooky says:

    Download link for 1.3 is down :( , anyone got a mirror ?

  23. spooky says:

    ok, its now called brigks and found at tnx for the help ;)

  24. MMg says:

    Links are done dead.
    Any one have backup of 1.3? Thanks.

  25. Michael says:

    Too bad the video links are dead too.