Spline IK deformation problem

Hello

I am trying to set up a spline IK chain for a spine rig. Overall it appears to do what I want as the final result, but it has some very strange effects on the rest of the rig :frowning:

In the first image the spline IK is turned off, so that is the rest pose of the rig.
If I now turn the spline IK on (second from the left) it deforms the spine bones along the curve. Even if that was tolerable it also deforms all the rest of the rigā€™s bones (IK chain lenth is correct). Initially that was even much worse that what is visible in the picture. Tuning off ā€œinherit scaleā€ in all the non-spine bones lessened the deformation a bit, but it is still very noticeable.

According to this tutorial:
http://users.xplornet.com/~gimble/blender/tutorials/spline_ik/spline_ik.htm
tuning off the ā€œY stretchā€ option should do the trick, but the result of that you can see in the third picture :frowning:

Oh and the ā€œchain offsetā€ option (whatever that does exactly) rotates the spine very strangely 90Ā° to the side and messes up the rest of the rig (not pictured).

Anyone got an idea how to fix that? Did anyone implement a spline IK successfully as a spine control for a human rig already? It seems like this is pretty much an undocumented and buggy feature???

thanks for the help!

Edit, if anyone needs the .blend I am happy to supply it, in general the rig can be found here (but so far without the spline IK spine rig):

No one? I think it might actually be a bug in Blender :frowning: I am basing this hypothesis on the fact that regardless of whether or not I press the ā€œeven divisionsā€ modifier check-box (in the Spline IK dettings) it seems to do just that, e.g. even divisions. Thus if I elongate the IK chain it fits more bones evenly on the curve and when I shorten it it tries to fit less on it.

Is there any place where I can force a certain setting while overriding the gui?

Here is a quick .blend which shows the problem (not very clear though). Obviously far from a real spine rig, but it has the basic setup (licensed CC0/public domain).

When you tun on and off the spline IK it makes the bones along the curve jump into evenly spaced positions and of course all the bone child of these move with them.

Strangely enough with this rig build from ground up it doesnā€™t show the y-strech behaviour of the rig show before. Never the less it doesnā€™t do what is it supposed I think.

Attachments

splineIK_spine.blend (332 KB)

Firstā€¦lemme say spline IK isnā€™t a quick spine sort of rig. A spline is a curve, a spine is a human back.

I assume you played with the official demo file and all that. From what I understand is that the spline IK constraint snaps bones to a curve, which is what your demo file does. I see nothing wrong with that part of it.

I do see the problem with the children bones. When I played with this, I made the control bones and the rest of the rig the same armature, then the spline IK bones the separate armature. The bones that you have as children of the spline IK chain are just that, children of the ik spline chain. When using the ik spline constraint, you have to make another armature object that controls it. So all the bones that control the rig need to be 1 armature, the spline ik chain needs to be another. AFAIKā€¦

And donā€™t be surprised at no response to your post on the subjectā€¦ I got one post to my question on the subject here

So yea, I donā€™t think there are many people using it, Iā€™m unsure if itā€™s still a wip feature, etcā€¦ I dunno

Randy

Yes I am aware that a spline isnā€™t a quick spine rig, but I think it could be used very well for that (IMHO a human spine is very similar to that in reality too).

So you think by making the child bones yet another armature (the control bones already are) it will fix the deformation? Hmmmā€¦ actually by turning off the inherit scale option it does fix that more or less already (a bit difficult to see as there is the other deformation problem effecting them too).
My problem with the spline IK is that it really deforms and scales the bones. Ideally I would like it just to keep their original positions and be deformed according to the curve, or at least only snap to the curve and not be scaled to be equal distance along the curve.
Because especially the latter is causing the child bone to be dragged along with them, causing a badly deformed rig.
I think the behavior that I would like to have is intended to work with the ā€œkeep offsetā€ turned on and both the ā€œequal distanceā€ and ā€œy-strechā€ check boxes tuned off. But the former rotates the rig 90Ā° for some reason I canā€™t figure out, while the latter two donā€™t seem to work at all and are permanently activated (regardless if the box is checked or not).
Based on this I assume this is actually a Blender bug :frowning:

But thanks for your reply! Does anyone know by chance who implemented the spline IK function in Blender? Maybe it would help to send him an email and ask about it, if there are not a lot of people around here who have experiemented with spline IK.

Because especially the latter is causing the child bone to be dragged along with them, causing a badly deformed rig.
I think the behavior that I would like to have is intended to work with the ā€œkeep offsetā€ turned on and both the ā€œequal distanceā€ and ā€œy-strechā€ check boxes tuned off. But the former rotates the rig 90Ā° for some reason I canā€™t figure out, while the latter two donā€™t seem to work at all and are permanently activated (regardless if the box is checked or not).
Based on this I assume this is actually a Blender bug

Just reset your curve objectā€™s Y rotation from -90 to 0 - that will fix the ā€œkeep offsetā€ bug you mentioned.

I think I know what your getting at in regards to goals of your spline IK rig. Maybe make a NEW armature that has bones location- constrained
to your spline-ik armatures bones, then their rotation.

But I believe the goal of the spline IK is to have a deforming bone chain along a curve, thatā€™s the idea. Iā€™m unsure what kind of end-usage your going for by trying to just move along a curve.

Ahh, I never checked the the orientation in object mode, stupid me :wink: Thanks

However it does not do what I though it wouldā€¦ it just makes it possible to have the entire bone-chain at an arbitrary position in relation to the curve, but the bones are still snapped and scaled to the curve.

Maybe that really is how it is supposed to work. I am starting to think that I can probably adjust the originals boneā€™s rest positions to fit to the Spline IK pose onesā€¦ itā€™s not such a big difference and might work too. If I then turn of the inherit scale the changes in positions of the child bones should be minimal.

My end goalā€¦ well I think I am a bit unsure myself about that still. I have experimented with good spine rig setups, and I really donā€™t like pure FK setups, while the normal IK/FK setup I have come up with (see link if first post) somewhat works but I am not really happy with it either.
But when looking at some non-blender rig videos I noticed that the really nice ones have a movement that very much looks like it follows a bezier curve (as in if you bend the lower part, it also gives a small counter movement at the top), that it why I think it would be great to use the spline IK for that. Besides that it also gives a more realistic representation of how a real spine works.
I think the current spline IK setup I have already does what I imagine to a certain extend, but of course currently you really only have the hook bones to control the curve in a very FK fashion (spline IK isnā€™t so much ā€œIKā€ after all), but it is IMHO only a question of further setting up meta controls for the curve hooks, while the general behavior of the spine is there already.

However if this really turns out to be a good setup, I still have my doubts.

Edit: All rubish what I wrote here. Why does it keep scaling the bones along their Y axis in really strange ways???

Ok here is another illustration of the main problem, I really donā€™t understand why it is doing this:

http://i.imgur.com/pZoi8.jpg

Left: Spline IK turned off; Right: turned on

It seems like it is scaling the bones exactly the oposite of what I wantā€¦ itā€™s not even equal distance (that checkbox doesnā€™t seem to do anything), but just strange :frowning:

Hey Julius,

Cheers for catching this! Iā€™ve just fixed this in svn (r33302).

That last screenshot example you posted was the most useful - from that, I quickly pinpointed the problem.

Apologies for the inconvenience caused,
Aligorith

Ahh thatā€™s great to hear, thanks!