3
$\begingroup$

Hiyo!

I'm trying really hard to come up with a way to take a bone chain, for example of 5 bones, and use a Spline IK to match this bone chain to a curve WHILE controlling the exact position of both the starting and ending bone.

And I want to do this WITHOUT the scaling option that makes the bone stretch to the end of the curve.

What happens currently in the Spline IK is that the root of the IK chain is firmly tied to the beginning of the curve, but then throughout the chain, the chain simply "points" toward the end of the curve, like a damped track. But what I would like is for the chain to actually 100% end with the bone at the same position of the last point of the curve.

I am completely aware that without stretching of any kind, this is not physically possible without restrictions to the length of the curve relative to the bone chain. But assuming that the bone is within the allowed distance, I want it to behave in a way where I can definitively move the end bone along with the end point of the curve, as if the bone was a child of that curve endpoint. And all of this inside a Spline IK for the whole bone chain.

I realize I might be asking for a unicorn, but I've been privately trying to figure this out forever, so I figured I may as well see what other people think.

The application is that I want to create a "Human-Spine Controller" where I can position both the head and the pelvis as endpoints of the bezier, with the bezier deciding the curve of the spine but not affecting the location or rotation of the head and pelvis.

$\endgroup$

1 Answer 1

3
$\begingroup$

Positioning the head is easy: parent the curve to another bone. One that is not involved in the spline IK, that is not dependent in any way on any bone that is involved. Then, to position the first bone of that chain, all you have to do is position the curve's parent bone.

I'm not sure if your problem is with bone chains that are longer than the curves or bone chains that are shorter than their curves. If with chains that are longer, where you would like to adjust bones after the curve ends, you can do this by duplicating your spline IK chain, but instead of controlling this duplicate via spline IK, you give them copy rotation constraints, on before-original mode, targeting their spline IK counterparts. Then, you this second chain will have the same orientation as the spline IK chain until you pose it, which you can do freely, starting with any bone in the chain.

If your problem is with bones that are shorter than the curve, the solution is to use your new curve parent to rotate the entire curve. You can rotate this such that the final spline IK bone ends wherever you want, within the given radius from the spline. Rotation isn't quite the same as just putting the end someplace, but it's appropriate given the problem: given a certain chain length and a certain spline, the end of the chain will always be a fixed distance from the beginning, describing a rotation, a sphere.

$\endgroup$
3
  • $\begingroup$ For your 3rd paragraph, I understand rotation gets me where I want, but that's what standard-rig human animation is already; i.e. to keep the head in place and move the body/pelvis, you place 3D cursor at the head bone and then use it as the pivot for rotation moving the pelvis controller. The disadvantage is I can not do any Location constraints (like child-of) to move that pelvis independently. If such a constraint is on the whole curve, it moves the head, defeating the purpose. Nevertheless, thanks so much for the thoughtful answer. It confirms the logical limits of what can be achieved. $\endgroup$
    – Ryth Azhur
    Commented May 14, 2022 at 5:46
  • 1
    $\begingroup$ @RythAzhur The problem is that any constraints you use for that purpose are going to have to operate within another constraint, which is being constrained to the surface of the sphere, and none of Blender's tools are designed to satisfy that constraint in conjunction with another positional constraint-- they will override each other. You can duplicate your spline and chain to measure the exact length, and then damped track a bone with a limit distance (surface) constraint targeting your curve parent, but that's not going to be any easier to use, and is much more complex to set up. $\endgroup$
    – Nathan
    Commented May 14, 2022 at 5:50
  • $\begingroup$ Understood, thanks for the breakdown explanation. I'll fiddle with it and see what feels like the best workflow for my own animation style. $\endgroup$
    – Ryth Azhur
    Commented May 14, 2022 at 5:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .