Introducing the Isner Spine:

Drag and drop from here into XSI 2.0 or greater


Background:
I've spent about a year now working on the problem of engineering a character spine.  Prior to me releasing this the common approaches to this problem I'd found were:

1) Trying to resolve a spine as a 3D chain where the bone role was divided across the length of the chain.
2) Using a nest of constraints and expression to subdivide the vertebra poses.
3) Using a spline for the vertebra positions and rigging techniques to control the rotation.

All of these approaches in the form I'd encountered them fail because of gimbel locking.  To me good character setup is minimalist and a straight line to the optimal solution of best fit.  The spine was usually the part of a character setup that was over designed, and not functional (in all fairness on my own rigs as well :)

It seems likely this new approach will spread beyond XSI, so for the record: this is where it started.  I released an early proto-type in the default rig of XSI 2.0, but a number of significant features have been added since.


The Isner Spine Features:

1) Meets both the hip and chest in position and rotation

The simplest form of visualizing a spine is a bridge that starts at the hip and extends to meet the chest.  It's orientation matches the hip where its starts and the chest where it ends.  The vertebra roll between these two orientations and bank along the path of the spine. 

 

You can move the Hip and Chest in both position and rotation.  The spine maintains a fixed length and will reach towards the chest as much as it can.


2) Adjustable Depth

Rotation and Translation of the Hip and Chest has a depth.

Both the Chest and the Hip has depth.  Depth affects how the spine deforms in position and rotation.  If you want to modify the depth on the Isner Spine do so by moving around the nulls "ChestDepth" and "HipDepth" in compensation mode.  You can also key in them if you want to animate depth variance.  Remember, the depth of the spine is set only through parenting so the chest/hip can be end up moving independently from the depth controller if you have Contrain > "AutoChild Compensate" mode on.

3) 720 degrees of roll.

One of the best features in this spine is that it can get beyond the regular 180 roll before flipping limitation of quaternion blending.

In a regular quaternion blend, you will never interpolate a rotation blending path greater than 180 degrees.  You can visualize this by picturing two points on a sphere.  No mater where you position the two points, the shortest path will always represent an angle 180 degrees or less.  I think this is a important detail to understand about quaternion blending in general, so I'm going to explain it in a bit more detail:

Consider Sphere 1 above where you are blending between Object A and B.  As B moves away from A the distance you will be blending through increases.  In diagram one, the blend will be between 0° (A position) and 130° (B position).  Now if you consider sphere 2, B has moved beyond 180° to a position 220° away.  But at this point the best blend found by a slerp algorithm ends up being from the other side of the sphere, shown in 3.    The angle being blended between will be 140°.  For this reason you will never have a blend angle greater than 180° and less than -180°.   However my spine solution gets beyond this problem.

This spine allows you to go between ranges of 360° to -360° giving a full 720° of range, making it much more useful for dynamic spine motion, tentacles, dinosaur necks and many other character setup problems.


4) Scaleable for "squash and stretch" and character retargeting.

The scale of the spine doesn't change as you move around the chest, but it can be scaled with the a slider (localed in a custom pset underneath the visible spline it creates).

This means in the latest default rig for XSI (d+d the add-on from  here and run after loading the Rig Proportional Guide [and make sure auto child compensate is unchecked] ) every component can be scaled or animated in proportion from the bones to the spine.

5) Quick Keying without crunching.

In the last version of the spine in XSI 2.0 there are "crunching" problems if you push down the chest controller into the hip.  In this latest version the end of the spine will push out to avoid crunching.  This also is useful for keying the spine in translation with fewer keys. 

Consider the diagram above.  The chest controller in yellow is keyed at moves between positions A and B.  However this motion will end up crunching the spine at position C.  In the spine it's end vertebra (in green) will push out to avoid the crunch, giving a smooth animation in the case below with out any extra correction keying.

As a general tip, if your planning to be crunching alot keep a shallower chest depth.

6) Tool for retargeting multiple spine resolutions.

Because it generalizes the spine problem to a start and end object and two depth control objects, it also ends up being a useful tool for taking an animation of a 3 bone chain and turning it into a N bones.

For example load the chain, constraint the spine to it and then constrain a denser secondary chain to the spine.


Installing and Setting up a spine.

1) Either drag and drop the add-on here into the UI or save it and use File > Addon > Install.  It will create a toolbar with a button and install the necessary presets.
2) Press the button to run the script.
3) Pick the Hip controller (the base of the spine).
4) Pick the Chest controller (the end of the spine).
5) Define the number of verteba.

It will generate the spine for you.  Then parent/rig those components into your setup however you want.