Hips and IK arms: How do i make this do what i want?

I have my character’s arms and legs setup with IK, so they remain at the same place in the world when moving other things (like the hip)

After playing with that for a while, i found it to be a little inconvenient. Sometimes (not always) i want the arms to move with the hip, and only the feet to stay fixed.

The solution i found to this was to add another bone (hipsupperbody) and parent the hip, and the arm IK controllers to it. In terms of posing things, this does exactly what i want. I can move the hip when i want all limbs to stay fixed, and i can move this bone when i want only the feet to stay fixed.

However, this seems to be coming with problems now. I’m making a run animation, which involves arm movement and hip sway. For the arm movements what i basically want is for the arm IK controllers to interpolate linearly, so that they move through world space in a straight line. And i figured linear interpolation would accomplish this.

However, it does not. because these controllers are parented to HipsUpperBody, as mentioned. When that twists, the arms move too, and as a result interpolating linearly between two positions causes them to move in a sort of arc. it’s frustrating.

What i really want is for the hipsupperbody to continue manipulating the hands and hip, as it does, but i don’t want to keyframe it. I’d ideally like all keyframes assigned to it, to be assigned to the hip instead. I basically want it to exist only as a helper for posing, and not be treated as part of an animation timeline.

I don’t think i can keyframe the hip directly, since i’m technically not moving or rotating the hip. It stays neutral relative to it’s parent (hipsupperbody) and assigning any keyframes to it would basically do nothing.

Have any of you ever attempted to do something like this? Is there a better way to accomplish it than what i’m doing? At the moment the only option i see is to strip it out

The ideal simple solution would be to make a bone interpolate through world space, instead of local space. But i have no idea how to do that, or if its even possible. I can’t even figure out any way to key world transforms, Rotation/Location seems to key it relative to its parent bone.

I have an idea of my own actually. I could unparent the hip from this hipsupperbody, and then put a copy transforms constraint on the hip with hipsupperbody as the target.

This would make things simpler, but i’d still have the problem of them both being keyed, and so i’d have to manually delete keyframes for hipsupperbody whenever im done with a frame.

Is there any way perhaps, to make a bone un-keyable? if i could prevent keyframes from being assigned to any channels of hipsupperbody, that might solve this completely.

Edit: Nope, this doesn’t work. The copy transforms constraint prevents the hip from moving or rotating when hipsupperbody doesn’t

;-;

Well, I don’t think there’s a universal rig possible. Which is why I’ve said in other threads, the whole thing could do with a rethink. FK and IK just don’t work comfortably together, so you need different rigs depending on what the animation is. The logical alternative (to me) would be, for most rigs (i.e. humans, animals, machines etc) to not have IK following bones or other objects, but an internal system in which any bone tip can be fixed or unfixed in space on the fly, and the bezier for IK calculated from that. Which I think is what most people animating a rig would want to do, most of the time. But as things are, it just doesn’t seem to me to be predicated on the idea of creating one universal rig, and then doing all your animations with that. You need to choose a rig appropriate to the actions being animated.

You might be able to do what you want by adding a driver to counter rotate the arms… Mainly, I agree with jaxtraw. When you said you were creating a walk cycle, my first thought was, “Ok, turn off the arm IK.”

are you suggesting i should keep seperate rigs, one with ik and one without? an swap the character between them?

Is this possible? how might i go about doing it

it’s not quite so easy to turn off, and honestly i wouldn’t want to either. the way i have it set up, i’ve got a control bone for each hand which i scale to open/close the fist, and move it around to control ik for the arm (and rotate it for the hand)

If i just turn off ik on the arm, then i’ve got that control bone sitting in space, and i still need to select and alter it for the hand’s rotation and closing. it’s just dirty and messy.

A cleaner solution, and the one i’ll probably do for now, is just to set the cursor at the hip bone’s head, and rotate around the cursor. Selecting both handcontrollers and the hip bone, whenever i want to do this operationm. it’s still uwieldy bvut at least more logiccal to me.

Could you elaborate on a driver solution?

Additional specific questions, please try to answer these <3

  1. Is there any way to redirect keyframes applied to one bone, to another (with the same transform data)
  2. Is there any way to keyframe a bone’s world transforms. Or even just transforms assuming it’s parent is untransformed
  3. Is there any way to prevent a bone from being keyed

That would appear to be how it is generally done. It’s very hard to create a universal rig. In another thread I gave an example of somebody crawling on hands and knees; that needs different IK chains again to somebody walking. Put them on a bicycle, you need a different rig again. I don’t think there’s a universal rig.