What options do Blender have for getting the flexibility of Maya's ribbon spines?

Hi everyone,
I have for a couple of days in Blender tried to achieve dynamic rigs like those you can make using Maya’s ribbon spine system.
In case you are not sure what I mean by Maya’s ribbon spine rigging system it is essentially:

1: Controller joints is controlling a “ribbon” NURBS curve object
2: Follicle objects are created on the ribbon NURBS object, guiding the joints that are deforming the mesh you want to have animated.

Using this method gives a lot of flexibility that in many cases surpasses IK setups in terms of the deformation and customizability you get.

Though in my opinion the biggest plus of using ribbon spines are that you are still able to make controls for the joints that are skinned to the mesh you want to animate.
A quick setup like this:

I have tried achieving it two ways in Blender:

1: Setup exactly like Maya ribbon spines, but instead of follicles guided by a NURBS ribbon, use empties parented to vertices in a ribbon. Bones are then parented to empties.
It worked somewhat OK, tho when resetting controller loc/rot, the rest of the rig hierarchy does not update, and cancelling translation also does not update the rest of the hierachy.

2: Go completely away from ribbon method and use pure constraints for achieving the same effect.
This method almost cancels itself out as double translation is bound to be an issue with a setup like this, though it is much lighter than method 1.

This is my own personal testing in Blender, but have anyone else tried to replicate these types of rigs? Do Blender have any generally accepted way of doing it?

Thanks,

The way I do this is to add Hook Modifiers to the vertices of the curve. Procedure as below:

  1. Add a Bezier or NURB curve, I generally use Bezier. Add a Bevel object (must be a curve object) to get the profile.

  2. Add bones or empties or whatever objects at the location of the vertices you want to animate.

  3. In Edit mode for the curve, add a hook modifier, select the appropriate vertex, set the Target Object (the bone/whatever)

  4. Click the Assign button - this does not show in Object Mode…

  5. Exit Edit Mode - if the curve has distorted, go back to Edit mode and click Recenter button, then assign again.

  6. Repeat for all required vertices.

You then just move/rotate the controls to animate the curve.

You can also use the Animall Add-on (activate it in User Prefs) You can then keyframe the position/tilt/ etc of the vertices, a bit clunky maybe, but good if you want to move a whole series of vertices simultaneously as you can keyframe all selected vertices as one operation.

This is one way - you could also use bendy bones, even multiple strings of bendy bones on a regular mesh. To animate a curve object with bones, you must use Hook Modifiers. The method you have described looks flawed to me and using “pure constraints” doesn’t look like it would fly either…

Just my preferred method - there are others as well I suspect.

Cheers, Clock.

Hi,

you can’t use a nurbs surface to drive follicles/bones like you do in Maya, the closest thing is using a bézier curve like clock said. This allows you to control the handles as well, which is very powerful. The only downside that I know of is the twist control that’s difficult to get right - Toka gave away his solution a while ago on this board, this is my own improvement on it : http://pasteall.org/blend/index.php?id=46075 Not perfect but okay.
For it to work good you need to start Blender with the new depsgraph, that’s the reason your setup was behaving erratically (not undoing transforms etc).

Hadrien

thanks for the reply clock,
I can’t see how I can translate the method into a rig of bones animating bones like in my example above - could you specify?
I can use the hook method to achieve first step of ribbon spine setups, though step 2 of making the curve object affect the armature is unaccounted for.

@Hadriscus
The scene you posted is very interesting, I will go through it and see how it works and see if I can replicate it

Thanks

@mStuff: Bones aren’t used to animate other bones…

I did not say that the curve affects the armature, it’s the other way around; armature affects the curve.

Picture:


Blend file: hooks.blend (478 KB)

Just move or rotate the “Fix” bones…

You can modify the rig to put “bendy-bones” between the “fix” bones or use Spline-IK if you like, this just shows the basic setup.

Cheers, Clock.

@Hadriscus: You can use “Animall” Add-on to tilt the Curve’s vertices as in this example below:


I just tilted the middle vertex 90 degrees and then keyframe it by clicking the “Insert” Button in Animall at the appropriate frame. just Activate Animall Add-on in user Prefs => Addons Tab. and find the stuff in “Animation” in the LH (T) Menu when in EDIT mode for the curve. You should be able to see that I reshaped the profile to be an ellipse. One thing to note: Animall keyframes EVERY vertex that is currently selected…

Salut, Clock. :slight_smile:

EDIT:

BTW - You cannot use bones, or anything else for that matter, to animate the “tilt” or “roll” a curve vertex, just Animall…

I remember you mentioned this on some other thread, thanks for the reminder, I had completely forgotten about it. Shame it’s not builtin, but I’ll experiment a bit to see if this can lead to a possible simplification of my rigs.

Adiù ! :wink:

Hadrien

I think we are talking about two different results - what I want is to have is the rig setup shown in the gif in the thread post, affecting mesh geometry like a torso, tail, lips etc.
That means, for your file it would be the two main controller bones and the middle would follow the two, stretching along the rig setup when it stretches, rotates when they rotate etc. just like the behavior in @Hadriscus rig setup.
How would I attach bones to the curve object is what I need.

Just for an update on the rig motivating why I posted this thread - I found a way to get the results I needed without the flexibility of a ribbon spine rig, tho I am still interested in knowing the easiest way to achieve it.

Thanks!

^^ Well I sure got the wrong end of the stick there, sorry I cannot help you with this.
Cheers, Clock.

You need to layer another two sets of bones on top of the spline to have finer control : first use a chain -not necessarily super dense- that spans the length of the curve with an splineIK constraint on the last bone, then duplicate those bones (delete the splineIK constraint on the duplicate) and parent them to the originals - they will act as controls for the second spline that you’ll create then - same idea, but this last bone chain will theoretically be the deforming chain, so you can get crazy with the number of bones in it.
Nota bene, you don’t really need those additional layers if you are making a spine rig… I made those for a tentacle-y creature so I needed this kind of flexibility…
…and the twisting is based on tracking constraints (that’s Toka’s method) : the entire setup is duplicated above it and the chain on the bottom looks at the chain on the top.

Another possibility like clock mentioned is using bbones, they basically do the same thing as a spline except they don’t have the “sliding” capability that the splineIK solver has.
http://pasteall.org/blend/index.php?id=46081

Hadrien

Hello Hadrien, I made this by way of a quick demo of what I thought up whilst sipping a good Madiran… :eyebrowlift:

Picture:


Just run the animation to see what the Blue curve object does - then move/rotate any/all of the five bones on the left of the Red curve object. I guess you will need Animall Add-on activated for it to work. Sorry, I got the problem wrong, but this is what I came up with by way of a solution. I had to have a go at what was meant by the OP, just too curious for my own good!

Here’s the blend file: spline-IK-.blend (519 KB)

I realise it is very primitive, :o but it may help someone.

Salut, Clock.

okay guys, I tried again and got it working - super simple method using parenting to extra bones and the stretch to constraint.

Thanks for the help anyways

@mStuff, for that kind of thing stretchy bbones are the way to go. I thought you were going for something more like a tentacle or a stretchy limb. Make sure you explore the bbone settings, they just got a big update, they have handles just like a spline now !
@Clock, it spins nicely… but the controls on the left ? they make the spline behave in a strange way… now the only missing thing is the bones with the splineIK constraint following the curve tilt, without that we won’t get far. :frowning:

Sorry, I just added some hooks to the blue curve so I could mess with it by moving the red curve. I will look at keeping the spline-IK in line with the tilted vertices, could be a bit tricky that, since it is very difficult to use a numbered vertex in a driver. Maybe a longer term thing to look at. But my rig doesn’t work as well as your system, so maybe we should work from yours to get the curve to rotate, and therefore twist the spline-IK.

Cheers, Clock.

Actually, I think it’s impossible right now for a bone to follow a cv tilt - unless animall allows it ?

I might be able to read the F-curve values… I will try once I have some time.

Cheers Clock.