View Full Version : Isner Spine...So close... Helpme!

09 September 2006, 10:55 AM
I've been trying to make an isner spine, well actually a stretchy one a la Jason Shleifer, and have tried every approach I can think of.

Just when I think that I've got it working I try to put it into a rig and encounter one kind of strange behaviour or another....

Heres a description of what I've tried and the problems that I've encountered

any help or advice will be appreciated!

Step 1
Create a basic isner spine (constant spine length):

Created a bonedeform effect and 10 bones going off in Z.
In setup mode I have rotated the bonedeform through -90 on pitch so that the spine bones go vertical. I've also made 10 cube primitives and made them children of the spine bones so that I can visualise the rotation

Add a flexmotion effect then create the curve points
(flexmotion set to Relative length and all options unchecked.
4 point Curve created vertically from the pelvis up

Point1 at pelvis Point2 defining pelvis depth, Point 3 at the bottom of the ribcage defining depth of the chest and point 4 at the base of the neck.

The curve itself is set to Rail rather than Vector following some of the posts about flipping

Put the points into a heirarchy (inplace):

Torso_CTRL_Null (for moving the whole of the torso)

+--->Curve_1 (curve object)

+--->Curve point 1
+--->Curve point 2 (which defines the depth of the pelvis)


+--->Curve point 4 (the topmost point of the curve @ the root of the neck
+--->Curve point 3 (which defines the depth of the pelvis)

(Not critical, but I thought I'd mention I made expressions to allow a slider to modify the pelvis and chest depth)

Finally I set up a ChainTwist in the command tab which uses the PelvisCTRL heading as root twist and ChestCTRL heading as end twist...

Hey presto, An isner spine rig that maintains spine length and works....
To finish it off I plan to make an FK spine heirarchy of nulls with the isner spine a child of that for fine tuning...

The trouble is that I want a stretchy spine.... In this usage it will be much more solid and harder to break when animating....

Create a stretchy isner spine

Easy, Right? I just go to Flexmotion and change the match tool from relative to absolute length.

Looking at the bones this just works HOWEVER, those boxes that are children of the spine bones just get left behind and more than that, the last box which is a child of the end bone scales HUGE....

No problem I think, I'll just not use the final box and try the checkboxes under the flex motion tab... Nothing works

Then I think If I want children I'll use MOVETO and ALIGN expressions That'll be safe I think because there's no squash and stretch to mess up the heirarchy... Doesn't work I just get weird offsets....

Ok Lets try another approach

Try Expressions rather than Flex motion.

I create a MoveToCurveParam for each of the spine bones and get rid of the flex motion effect.....

Because the bones are in a heirarchy they get a weird "double transform" and don't match the curve

So I unparent all of the spine bones Now they constrain to the spine properly but they no longer align....

I use targetstretch for each spine bone to make them all point at each other and squash and stretch as desired. This (works Hurrah!) except my Chaintwist expression doesn't work anymore as the spine bones are no longer a heirarchy.... I'm also begining to worry about portability of the setup, but hey if it works....

Ok, I now add an expression for each spine bone to blend the pelvis rotation up the spine and the Chest rotation down to re create the effect of the ChainTwist
I now have a working stretchy isner spine!.

To tidy things up I decide to parent my spine bones under the character null...

Suddenly my Target stretch is going haywire with the boxes Zscale being twice what it should be.... I check my character null and it is at the origin with a scale of one and no rotation... What could be wrong?

This doesn't sound like to much of a problem, "Deal with it!" i hear you all cry...
But I want this to be a re-usable component that i can save as a setup... By the time I start adding Puppet master and applying this to the torso whilst having the rest of the rig as well.. Let alone dealing with more than one character in the scene I'm concerned I'll be getting double transforms everywhere....

My next suggestion is to use Target rather than Target stretch and then get the vector length from one bone to the next and apply a scale factor to the bones the long way based on there rest length...

This is getting incredibly long winded (like this mail... Apologies)

To sum Up:
1) Has anyone had success with children of a flex motion chain in Absolute mode.. Is there a work around?

2)Is there a way to make the MOVE TO CURVE expressions work on a heirarchy in a predictable way or do I just have to live with them being completely unparented?

3)Does target stretch just not play nicely with Move to curve Param?

4) should I just give up and go with the Fixed length Isner spine? It's certainly much neater...
So far though I'm concerned that when I put it into a full rig I'm going to encounter more problems....

If anyone can help I can e-mail the files....

09 September 2006, 12:16 PM
I don't know the details of the Isner spine, but some time ago I had tried a similar setup (for tentacles, not for a spine). I think you have most control with the 'MoveToCurveParam' and a 'TargetStretch' expressions (as you did in your third try). The bones should not be in a hierarchy. I think you can achieve a twisiting effect by twisting the points of the curve (e.g. you parent the lower points to the hip bone and twist the hip bone; do the same for the upper points and the neck bone).

Maybe you can post the files you created so far.

09 September 2006, 01:30 PM
Some info on the isner spine:

09 September 2006, 01:47 PM
Suricate, I'll try a version using twist on the Curve points and see what happens... I'm still concerned about the weird scaling for children though...

In another test I made the spine bones children of the bone deform (at the origin) which was itself a child of the character null (again at the origin) and got three times the scaling issue.
I'm mystified as to why this should be... (A bug in target stretch?) If it is a bug, it only manifests when using target stretch and MovetoCurveParam together.

Private message me your E-mail and I'll send you the file.

Nichod, I have that Link, and the first thing i tried actually works like that!
(well, excpt for "crunch compensation" when you move the chest straight down.
The problem comes when trying to make a stretchy version (like the Jason Shleifer WETA rig)

This gets around the animation problem of getting nice arcs for the torso by making the chestctrl a child of an FK rig (asif the spine had 3 bones) but the pelvis and chest nulls can be tweaked off, rotated and translated independantly. Doing this with a spine that maintains constant length is very easy to break, Th estretch makes it a bit more "idiot proof" and allows the animatort to fake to get the moton they need.

09 September 2006, 03:38 PM
Ok, sent you my email address.

CGTalk Moderation
09 September 2006, 03:38 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.