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)
±->Pelvis_CTRL_Null
±–>Curve_1 (curve object)
±–>flexmotion
+--->Curve point 1
+--->Curve point 2 (which defines the depth of the pelvis)
±->Chest_CTRL
+--->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…
Step2
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
Step3
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:
- 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?
- 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…