How to prevent a foot from passing through the floor?

After some messing around with rigify that got me nowhere, i’ve decided to just build and reuse my own rig. I’m presently working through tutorials and documentation regarding IK

So far, i’ve setup an IK constraint on my character’s left toe, as well as some intelligent angle limits on other parts of the leg chain. I can move the target object around to point his toe at something, that’s good.

However, if i grab the hip joint, and lower that down, his heel sinks through the floor, his leg remains straight, and his toes point up towards the target. It of course looks silly.

What i would like to happen in that situation, is for the foot to not move down at all, and everything above it move to accomodate that. but so far i can’t think of a way to accomplish this that doesn’t require setting up an additional target for the foot, and that sounds messy. In fact, i can’t seem to make him bend at the knee, at all

Give me some pointers in this regard?

This is precisely what IK is for of course, and from my experience, the rigify system has quite a nice IK foot rig.

I’d suggest checking into specific tutorials on leg and foot rigging, including Humane Rigging.

e.g. https://www.youtube.com/watch?v=0U3NjTvwdWI

There are a number of factors to consider in building a successful leg rig. Hope this gets you going.

And once you’ve had some more rigging experience you might find it worth giving rigify another go. It’s honestly such a timesaver and quite a flexible system.

Good luck.

Yes, Humane Rigging is a staple. Generally speaking, you will probably find that it is best to simply specify new positions for the entire series of bones, whether-or-not you rely upon IK to do all or part of that. Then, finally, be sure that the camera isn’t actually pointing at the feet. Although you certainly don’t want the floor to appear “spongy,” a little bit of error might be un-noticeable.

I spent all of yesterday preparing the meta rig and then fed it into rigify, only to have it spat back out, presumably becausew i’d removed several bones.

That plus advice from others has made me think maybe i should learn how these things work from the ground up, first.

i will watch humane rigging, thank you :smiley:

i’m watching a couple of tutorials, and so far i’ve gotten the idea of making a second target at the ankle, and putting a constraint on the shins to point to it.

But i’m still failing miserably, and i don’t understand why.

As i lower the character’s hips down, the leg makes only a token effort to keep to the constraint, before sinking into the ground unnaturally. The knee refuses to bend until i move the target to the most extreme position up and behind the armature.

I have a rotation constraint on the shin bone, like so:

I’m pretty sure this should allow it to only bend backwards, but it will not bend almost at all. If i disable that constraint, it will bend forwards only, the way a knee shouldn’t bend. But either way it will still not hug the ik target when it should be perfectly able to. it seems pefectly happy to keep the leg straight and completely overshoot the target, than to bend to meet it. As i move it around it will suddenly snap into a properly bent knee only at some very extreme positions.

I’ve found that if i turn off my Z axis limit on the shinbone, that DOES allow it to track the IK target properly, but it does so by tilting the knee at very odd angles, which i obviously created the limit to prevent.

Like so:

The chain length of the constraint is set to 2, and the thigh bone above it currently has no axis limits at all, so surely it would be moving that bone however is necessary to meet the target , to compensate for the constraints that are on itself?

It seems like the shinbone is trying to not bend on the X axis, and trying to not move the thigh bone very much, when doing either of those things would allow it to hit the target perfectly. i don’t understand why

Basically, things are not behaving the way they do in other people’s demonstrations, so i am currently unable to follow a tutorial any farther :frowning: i need help

A couple of things worth looking into. Pole targets are pretty much essential in blender IK arms and legs. They are a helper bone that tells the IK chain which way to point. Also it may help if your knee pose position is slightly bent in the first place as that helps the IK solver work out which way to go as well.

Feel free to post your .blend file as it makes it much easier for others to troubleshoot your rig and see what’s going on. Use pasteall.org

Good luck.

But it doesn’t need to know which way to go. there’s only one way TO go because i’ve completely prevented it’s rotation in the other direction.

As far as i can tell, what’s happening is that the IK simply isn’t aware of the angle limits, and it’s posing the bones as if there were no limits, instead of finding a valid bone arrangement within the limits.

Is this likely to be the case? how can i fix it?

her’es a stripped down version of my blend, i removed everything but the rig, or so i thought:

http://www.pasteall.org/blend/33668filesize is still large, it must be from packed textures.
The object ShinIK is used as the target for the lower leg, move that around and see

no response?

To be clear, the question i’m really asking at this point is, why doesn’t blender properly work within the angle limits i’ve set, and find a valid solution (when there definitely is one) while the shin’s rotation is tightly limited?

I’ve read up on pole targets, and i understand that in this case they’d be used for determining where the knee points. But for this particular moment, i don’t CARE where the knee points as long as the IK solver produces a valid bone layout, and right now it doesn’t. See the example in the above post

I was going to post a new thread, but this one seems closely related to my question so I’ll ask it here: I’m trying to rig IK so that a foot (or hand) will stay absolutely stationary “Pinned” when I move the rest of the armature. But when I apply an IK bone, whatever it’s attached to, e.g. the foot bone, seems to “squirm about” when I move the rest of the rig. How can I lock a bone rock solid so that it does not move at all, or rotate, or anything? I want to glue my character’s feet to the ground, basically.

The armatures in this blend file don’t squirm about - does this help you?

ik-chains.blend (453 KB)

Run the animation or move the feet (control) bones or move the tail of the top bones.

Update:

Well the right most one does, but it has silly stiffnesses deliberately applied to prove another point…

BTW I agree whole-heartedly with K Horseman’s comments above!

Thanks for the comments to my comment. I must admit I’m getting a bit frustrated with all this, having similar problems to Warkirby. The whole thing seems kind of clunky.

I appreciate that it’s a bit rich for a n00b like me to be criticising a complex software package, but it’s like FK and IK don’t really want to work together at all. I’d think it is routine for an animator to want knees and elbows and other joints to obey constraints, and to be able to pin a hand or foot to some spot and they’d be routine functions on every armature; instead the solutions all look a bit workaround-ish; extra bones here and there, and effectively needing several rigs at once. There is no way to switch from FK to IK elegantly, without apparently using scripts.

I mean, all I want to do- and it seems Warkirby too- is stick my character’s feet to the floor and move the body up and down without everything franging up. I’ve just spent about an hour fiddling with IKs and I’ve got her knees bending backwards, legs sticking straight backwards, all sorts, like Blender has a half hearted look at the rotation constraints then just goes “oh screw that” and ignores them.

Current mood: ranty.

IK legs that work the way you guys are asking for are quite simple to set up. I’ve already described exactly how. There is no need for using a lot of extra constraints. Here is an example Mr_Genericlegs.blend (414 KB), in case my instructions were unclear. Grab the hips to control the location of the torso. No matter what you do with the body in this way, the feet will stay planted on the floor or wherever else you put them. The IK targets in the heels are parented to the master bone, as is the hip bone. Every other bone in the body is parented either directly or indirectly to the hips. To keep the feet from rolling downward when you crouch the body, make sure Inherit Rotation is turned off for the foot bones’ parenting settings, as in this example. The master bone should only be moved in order to move the whole armature for basic placement, not for moving the body itself.

Yes, IK/FK switching is somewhat complicated to set up. You don’t necessarily need to do scripting unless you want to create UI elements for the switch. I usually use a driver on a non-deforming bone as the switch, but IK/FK switching is a off topic for this thread. If you need help with that particular task, I suggest starting your own thread for it.

Am I missing something?

skeleton.blend (474 KB)

Just press play or move bone “body” about…

jaxtraw, If you want a generic rig with IK/FK switching, use the Rigify addon. Rigify can be adapted for most character forms quite easily, even non-humanoid with only a little extra work. Making your own is only necessary if you have specific customized needs or if you just like rolling your own.

clockmender you haven’t done anything I recommended. Create a master bone at the level of the floor and parent your IK targets to the master bone. Your ik targets should be bones, not empties. You should have a hip bone, not just a single body bone. Otherwise rotation gets strange because the origin for the thighs is essentially in the shoulders. But if you’re talking about the jerky motion when you try to grab and move your rig, it’s because you have turned on snapping. Turn off the little magnet icon. skeletonFixed.blend (411 KB)

Mr. Horseman,

Thank-You! This is my first skeleton rig, I was just trying to get the feet and hands to stay still. My next development was to be adding hips, shoulders, etc. Then I was going to add your base bone to see if it worked differently to empties (why can’t I use empties - am I confused or missing some fundamental piece of knowledge). I presume I also need several bones in the back so it can arch. This is the start of a new learning curve for me, I was probably over simplifying it to see if I could get hands and feet to stay still. I guess all my knowledge gleaned on mechanical models doesn’t apply here.

I did take on board what you said BTW - thanks again.

PS. I know about snapping - I usually leave it on and hold CTRL while moving or rotating things around if I want smooth movement (this is probably bad practice also).

Update:

Just looked at your fixes to my efforts - much better isn’t it…

Using empties as targets simply makes the rig more clunky to manipulate. Keeping everything together as part of a single object makes for a simpler and easier to use rig. It’s easier to place the whole rig in space without losing the pose, it’s easier to append or link the character to new files, it’s easier to create reusable actions and poses because the data is all connected to a single object. It’s easier to export to other programs. And in general there is no reason to complicate matters with extra empty objects unless you are in a very special use case that requires the use of non-bone targets.

Thanks again, all clear to me now - I now have “him” doing press-ups and hand stands!

I already have a rig. It’s all weight painted and everything.

Well, you said you wished there were a generic rig with IK/FK switches. There is one: it’s called Rigify. If you want to make your own, you have to make your own.