Wrist Twist (yup, this again)

I’ve been digging around to find out a good way of doing this, but couldn’t really find anything (or if I did, I didn’t understand it so don’t know if if was good).

Basically I have 3 bones in the arm: upper arm, forearm and hand. I have an object the hand has an IK solver constrained to, so when I move this object the arm moves as it should. If I rotate this object the hand moves as it should. What I am trying to do is add a bone that covers half the wrist, so I can parent half the forearm mesh to the forearm bone, and the other half to this bone. I have been trying to set it up so that when I rotate the object that rotates the hand, the wrist twist bone will rotate too, but only along it’s length.
I haven’t been able to manage this, as when I rotate the hand the bone ends up sticking out the side of the forearm. I have been tyring to keep it aligned with the forearm bone, but still rotate with the hand (to try and force it to rotate only along it’s length), but again no luck.

Does anyone have any suggeestions as to how to do this? Or a good method for doing this that works?

PS. Sorry to bring this up again (found a few posts about it with search) but I haven’t really found any good help on this.

i’d use an action constraint. this is, define the roll-movement of the bone in a separate action, and set the object (the ik-constraint in your case) to drive the bone’s action constraint. see the documentation for details.

hope that helps

marin

Hmm, not used action constraints yet. I’ll look em up as you suggested, thanks again :slight_smile:

And I manged to learn some stuff from your rig too, I’ve got the spine in a similar setup and have used control objects too :slight_smile:

glad to hear that :slight_smile:

I can’t really find much explaining the action constraint. I found a blend file that showed the action constraint being used in a couple of different ways, but I’m a bit confused with some bits. There is a bit that says AC , where it seems I have to type in the kind of action I want, but I don’t know what the action types there are (or what I’d have to type for it) and there are the limits. It says starting and ending frame, I’m not sure what to do with this either. Anyone know some good walkthroughs or detailed documentation on this?

the action constraint involves the following “components”:

  • an armature
  • at least one action assigned to the armature
  • a control object.

theory:

the usual and simple way of animating is changing position/rotation/scale of given objects over time. such an animation for bones is stored in an action. you can have multiple actions assigned to an armature and switch betweeen them (but not during ananimation).

the action constraint goes one step further: instead of changing the recorded position/rotation/scale of the bones by changing the current frame, it uses the rotation value of a driver object to achieve that. it is like animating the Time-IPO for objects, but for bones.

how-to:

create an armature. insert some rotation keys, make the whole animation last 30 frames. give it a name (“bend”). create another action by clicking “ADD NEW”. it is a copy of the first one and called “bend.001”. delete all keys here.

create a control object (empty). clear it’s rotation. give it a meaningful name (“action.driver”)

select the armature, change into pose-mode. the following applies to each bone:

  • add an action constraint.
  • in"target" type in the name of the driving object - in our case the empty called “action.driver”
  • in"AC" field, type in the name of the first action (“bend”)
  • start/end: 1/30 (because our animation was 30 frames long)
  • min/max: tricky ones. it says, the min rotation value (of the driving object) will be mapped to the starting frame of the action, the max value - guess what - to the end frame. so, animate the empty so that it makes a 180° turn on one axis and experiment with min/max values (0 to 180, 0 to -180, etc) until it works as desired.

hope that helped

marin

Aha! Thanks so much! I think I know what to do now, I just need to learn how to do the keyframes now hehe, but there should be plenty of documentation on that. Thanks so much, I should be able to make my rig do lots of cool stuff now :smiley:

OK, I think I know how to do this now, just stuck at a certain spot.

“create an armature. insert some rotation keys, make the whole animation last 30 frames. give it a name (“bend”). create another action by clicking “ADD NEW”. it is a copy of the first one and called “bend.001”. delete all keys here.”

I added the bone, in pose mode I selected it, pressed I and click ROT. I moved to frame 30 , rotated the armature 180 around the axis I want, then pressed I and clicked ROT again. Now when I press Alt+A from frame 1 I can see the bone rotate 180 degrees the way I want. The problem is I don’t know what you mean when you say "give it a name (“bend”). Do you mean naming this animation? If so I don’t know how to do that. Do you mean naming the bone “bend”? I when you say create another action by clicking add new, where is “ADD NEW”? I can’t seem to find it hehe. I’m not too sure what it copies either :frowning:

I’ve been following this http://10secondclub.org/users/juicy/ to learn keyframing.

Thanks again, I am pretty sure once I understand this part the rest shouldn’t be a problem :slight_smile:

with “give it a name” i meant to rename the action-datablock (blender uses so called datablocks to store all kinds of information abt. the scene). to do that, switch any view to an action editor (SHIFT+F12). this window has it’s own header, where you’ll find a pull-down menu to choose from all actions available (there will be at least one). to rename the current one, simply click in that menu instead on the arrows. this menu is also the place where you can “ADD NEW” actions.

you
re very close right now :slight_smile:

if you want some advanced use of action constraints, check this out:

mapping actions to sliders tutorial

Ah sweet, I wouldn’t have thought of that hehe. I’ll have to give those sliders a go when I set up the face for expressions and lip syncing. Now back to Blender… :slight_smile:

Yay, got it working :smiley: Still requires a little tweaking, but I’ve managed to add other things in too. I think what you have written in this thread should probably go into the documentation for it, as it is very well explained (and easy to follow).

A different question now: I have built one side of the rig (and the stuff in the middle like the spine/head bones etc.). Should I now skin that half of the mesh, and later on mirror everything (mesh, armatures and vertex weights) and combine the two halves? If so, what is the best way of doing this. Each bone/control object I have used on this side (left side) of the mesh ends with the suffix .L , I think I read you can duplicate all the stuff, mirror it then change everywhere that says .L to .R

Any idea how to do this? I’d rather not spend ages doing something then find out I did it wrong and have to backtrack a lot.

letme think… as soon as you mirror, everything duplicated will have the suffix “001” attached, e.g. “femur.L.001”. so, yes, go ahead and simply rename the mirrored bones.

for the mesh, be careful. duplicate and mirror it in OBJECT-MODE. unfortunately, vertex groups aren’t duplicated in edit-mode. so, make a copy in object-mode, enter edit-mode and rename all vertex groups from xxx.L to xxx.R. then mirror around the center and join the two meshes. now bone names will perfectly correlate to vertex-group names, so skinning should be no problem.

save a copy of the original scene, though :slight_smile: i use to have version numbers throughout all my projects.

glad to see everything works fine :slight_smile:

marin

Will do, thanks again. Yeah when I save my progress I increase the number to keep track of my work, incase I need to backtrack hehe.

Now to learn how to skin :slight_smile:

PS. I REALLY like the action constraint, it receives the coveted ‘Lupus’ two thumbs up’ :smiley:

Gaarrrrrggh! Ok, new problem. My rig is currently 2 armatures, I have tried combining them together to make just 1 armature, but when I do that and try to set the constraints again, it ends up doing some wierd stuff. Is there a way I can keep it as 2 armatures?

nope.

mirror the bones in edit mode, this way the pivot of the armature will stay where it was. you’ll have to rename the suffices of the bones and reassign the constraints on the mirrored side… no great news, but that’s the way it goes rigth now.

marin

Maybe it will help a little if we take a “big-picture” look at what an action is (for).

We could define an action such as MakeAFist_L which causes an armature’s left hand (thus, a whole slew of individual bones) to make a fist. (Actions can be applied in varying degrees so we can have anything from an open hand to a tight fist.)

We can also define an action like TouchYourNose_L which causes the left arm to move into a position that would have the figure touching his own nose. Once again we can have anything from a neutral-arm position to nasal-contact.

Things get interesting (and absurd…) now if we define an Action constraint that causes the MakeAFist_L action to vary depending on TouchYourNose_L. As our poor schlep moves his hand toward his face, his hand gradually bunches up into a fist so that he’s doomed to forever punch his nose! :smiley:

But both of these “real-world” ideas … making a fist and touching your nose … are the essence of what Blender “actions” are all about. Through the magic of the NLA (non-linear animation) editor, you can now describe the movements of an actor in terms of actions being applied, and perhaps repeated, over time.

To get the wrist-motion you want, the way that God did it :wink: was to implement two bones in the forearm. Since our capabilities are somewhat :wink: more limited, we can achieve a similar effect by observing carefully how the wrist moves in relation to the forearm, or how the forearm moves in relation to the wrist. (It’s a choice; not exactly the same thing!) We can use two actions to describe each of the two movements. Having done that, we can use an Action constraint to link them. We can also use two NLA strips, applied simultaneously. The resulting object is not “built” the way God did it, but it convincingly-enough matches its moves.

Well, I have my rig nearly finished (both sides) but there is some strange problem I don’t understand. I create a couple of bones to use with the action constraint. All I did was place one where I wanted, duplicated and mirrored it across (edit mode) and parented them to the appropriate bones. When I do this they move away a bit from where I placed them. If I go into pose mode,move them to where I want and go back to object mode they are fine. BUT, I have saved at this point, and whenever I load, they jump back to where they were before I fixed them. I have tried moving them in edit mode, but when I go back to object mode, they are againt out of place.

Can anyone please explain what is happening?

you probably have the action active, so it’s keyframes affect the armature.

I don’t even have an action setup for them at this time (I went back and started the rig from scratch). I’m basically just placing them in their initial positions at the moment, but when I parent them to the appropriate bone, they jump out of place.