Chain/tentacular leg rig

Hi community,

I am having a problem regarding leg rigging. The legs of my robot are a little unusual in that they consist of a chain of small bones as in this screenshot:


The foot bones are not only the bones for the foot shapes, but also works as control bones for the legs. The most bottom leg bones have an IK modifier connected to the foot bones and reaching up to the uppermost leg bones. I hope this is clear enough.
However, when animating and posing I get the following effect, which I do not want:

The angle between the most bottom leg bones and the foot bones is too far out. What I would want instead is something like this, where the most bottom (and the most top) leg bones are at a rather stable angle, similar to all the other angles between leg bones:


I tried quite some combinations of modifiers but do not seem to get the wanted effect. Any idea anyone?
I will attach the .blend file shortly hereafter, as I am only allowed to add 3 attachments.

Also, I would have liked to share my actual model with the community for this, but as it is taken from a game, I am afraid to break some copyright by doing so.

Thanks for all bits of help!
Estajxo

Here is the .blend file with my rig so far.

Attachments

Rig.blend (682 KB)

I added another IK setup about halfway up the leg (or where you want the “knee” to be). This seemed to fix the bending backwards when the leg moves forward problem. It also lets you control whether or not the legs tilt outward, inward, or not at all.

http://fc06.deviantart.net/fs71/f/2013/289/7/9/untitled_by_jaderavenwing-d6qqr7l.png

EDIT: Actually I think I misunderstood your problem. So nevermind. Sorry. D:

I use B-bone instead of Octahedron bone. It has a setting to segment the bones to curve it with as many segments as you need. In this quick layout there is only one leg bone per leg. It is connected to hipbone at the root, and foot bone at the tip. Those end bones control the slope in and out of leg. Separate IK target is located at the foot. Foot bone has constraint to copy rotation and location of IK target. Note that for the leg to bend / pivot at the ankle and hip, it helps to make the joint to taper in.

http://i1135.photobucket.com/albums/m626/cabby24/Blender%20Pics%202013/roboleg_zpsa1e1c9c2.png

@Selena: Yes, this might solve another problem, but still thanks for the effort! :slight_smile:

@ridix: I did not know about the possibility to segment bones, interesting! However, I am unable to reproduce your effect. My bone segments do not keep their angle respective to the hip/fookIK, and the leg shapes follow the leg bones only as one big block, without any bending as shown in your screenshot.
Would you mind sending me your .blend file? This looks like it might be the solution I am looking for.

Also, I am impressed with the helpfulness here, thanks a lot! :slight_smile:

It has been a long time, still no solution. But some progress, as far as I would tell.

I am able to correctly anchor the bézier curves for the legs to the body and feet, and even to kind of attach the leg segments to the curves, both with or without bones. However, I am still stuck with two remaining problems:

  1. The positions of the segments keep according to the bézier curves, but the rotations of the feet are not followed by the segments (and presumably not noticed by the curves in the first place). Even with the CopyRotation modifier I cannot create any rotation of the leg segments along the curve direction. It seems to me that such a rotation is generally impossible for objects being children of a curve? This would be quite important for my animation.

  2. Even if I manage to create this setup correctly on my test model, I can not replicate this at my real model, which is already half animated. However, all animation directly affects only body and feet, which are not changed at all. The parts that I want to replace with the new rig are only indirectly affected by these primary animations, but I fail to cleanly just replace them without side effects. I suppose that I am missing some knowledge about axis (local, global, w/e), because the segments always end up being far from where they should be. Or is it impossible to change something at a rig once it has already been partly animated? Any hints?

Cheers, my friends!

Some of us don’t mind puzzle solving. Post a new .blend file of the new rig and model (or simplified version), and if I have time, I’ll see if I can figure out something.

And guessing from what you’re saying with beziers, have you tried hooks? It’s possible to hook to bones.

Just for the records and if anyone comes into a similar situation:

  1. Create a Beziér curve from hip to foot.
  2. Curve start and end point each be connected to a hook.
  3. The hooks be parented to the body and feet bones (or geometry). Now the curve follows the path that the leg elements shall follow.
  4. The bone closest to the foot be equipped with a IK Spline modifier, chain length be set to number of leg bones. The bones follow the Beziér curve now, but do not rotate around it yet.
  5. The rotation of the leg bones is accomplished with Copy Rotation modifiers with varying degrees of influence. The leg bone closest to the foot follows the foot rotations completely, the one closest to the body follows the body rotation completely. Each bone needs two Copy Rotation modifiers, one for the body and one for the foot. I set it up so that the first modifier in the modifier stack always completely copies the body rotation, while the second one from there on follows the foot rotation with varying influence.

To find this solution cost me quite some pain, but it works satisfactorily!

One more thing: The bones are now stretched along the curve, so they always connect the body with the feet. However, it might be difficult to stick to a fixed length for the legs, so to make this point easier I added:

  1. For each leg add an Empty to the body where the leg begins. Make the shape of the Empty an arrow. Let the arrow always point into the direction of the foor via a TrackTo constraint. Set the length of the empty to the wanted length of the leg. Set the visibility of the Empty to X-Ray, so that it is always visible during animation.
    Now whenever you animate the body and legs you can always compare the current leg length with the Empty length and adjust body and/or foot accordingly.

Happy animating, if someone will ever use this solution! :slight_smile:

couple of issues I see with your Model and Rigg…

#1 you have constructed it facing along the X-Axis…
Blender normally likes Y-Axis to act as the Front/Back facing axis…
note that when you use things like X-axis mirror when working with bones… you need your left and right sides to be aligned along the X-axis for this to work…

#2 I think in this instance … making use of bones…
your probably just as good off making all the various segments of your object just into one Object instead of in separate objects as you have them here…

you don’t have to do it that way… but I think it would be easier in this case…

#3 I think a more simplified solution would be to go with something simular to ridix solution above… instead of using the spline bone rigg you have setup there…
Spline bones are cool… I like to use them… but I think it’s over kill in this instance…

kinda like this…

RoboLeg_NorvMod_007.blend (1.09 MB)

#1 I cannot say anything about that because I never used the mirror function for armatures. But good to know for the future, before some more months get lost searching for this. :wink:

#2 Hm hard to say for me now. My solution is already a few months old, and during the year before I tried all kinds of things to make this work. I do not remember what might have been a problem with putting them together into one object.

#3 The ridix solution with the segmented bones gave me the problem that I could not easily place the feet where I want them to be without being precise on the body position. The reason is that the distance between the beginning and the end of a segmented bone is fix, just as with an unsegmented bone. Even positioning the body (and therefor the feet) slightly off would result in the feet being under the ground or floating above it (or alternatively being separated from the leg). And having the feet on a fixed position (and connected to the legs) while moving the body is rather impossible, as it seemed to me. I do not know how to explain better, an own try might clear this up greatly.

Anyway, I am impressed by your motivation looking into this, even after a solution has been found. :slight_smile: