PDA

View Full Version : Better hand / finger controls


jomoj
09-22-2006, 12:21 PM
This is also posted as a reply to a thread on 3dBuzz but it's proving quite a useful method so I'll cross post here...




Being unhappy with MB's IK/FK fingers I've just set up a hand control in quite a different way, it still needs some tweaks but it's a good base and has more control than animating the effectors. It's done with relation constraints and a character face - I'll try to explain so bear with me.




Create an object separate from your character and attach a character face to it, drop the object into the cluster groups box on the character face definition pane and add a shape. You can now click [add] in the expressions box, switch to the character face animation tab and click the [A] button next to the expression slider, making it animatable.




What this does is creates a slider that can output a value from 0 to 100, you can add more sliders just by adding more expressions. These sliders are normally used for animating the face shapes and expressions but will be used here to drive the animation of the fingers. In my example below this slider is called 'index flex'. The separate object just acts as a holder for the character face - like a remote control.




The next step is to add a relations constraint to the scene this will be used to connect the output of the sliders to the rotation values on the skeletons fingers. Four important things:




Use a non-MB standard way of naming your finger joints, you do NOT want them to be included in the character or control rig or this method will not work.

Make sure that the local axes of your finger joints are aligned how you'd like them to bend in place

Be consistent in the orientation of the bones so they all rotate about the same axes.

For the initial position rotate the joints in the fingers so they are flexed at one extreme of movement. You will be able to fine tune this as you build the constraint up.




http://static.flickr.com/86/249657053_36ffb022b4_o.jpg




In the relations constraint add each bone as both a sender and a receiver, for each bone drag in a vector to number converter, add box and number to vector converter. Then drag in the character face as a sender called 'hand control here - if you cannot see your expression slider as an output then make sure its [A] button is ticked.




In this example the output of the index flex slider is added to the Y rotation value of each finger joint, the X & Z rotations are unaffected. As the value of the slider increases so does the rotation of the finger joints, resulting in the finger curling up. Now, depending on how your joints are aligned this may need to be subtracted to work or applied to another axis.




http://static.flickr.com/88/249663216_e5ad296b70_o.jpg







In the case of the thumb, I wanted the tip to curl more than the second joint so the slider value was divided by 2 before being added to the joint rotation.




http://static.flickr.com/80/249657090_660c2b3955_o.jpg




I then went on to add sliders to spread the fingers by rotating them at their first joint each joint required a different value so the slider value was fed into a divide by box before going into the add to box. The thumb has separate sliders to spread it and roll allowing for most basic hand positions to be created.




http://static.flickr.com/80/249660829_dacfc330ff_o.jpg




Hopefully you get the idea, the character face is not used for the face and neither is it made active, it just allows you to use the sliders to make a control panel for the hand or whatever you wish. Position the hand how you like, key the sliders then when you are ready to export, select all the bones and plot their animation.




As an extra to this, I'm also experimenting with using a slider to create preset hand positions since the character poses will not work. This uses a relations constraint to check the value of the preset slider and if it is between certain values, to apply a set of pre-determined values to the finger sliders that overwrite their current values. When the preset slider is at the set value, a 'Between A & B' box (in Numbers) outputs a boolean value of 1. This then triggers the 'If Condition then A else B' boxes which set values for each finger slider. When the preset slider is not at the bracketed value the 'between A & B' output is 0 so the 'If condition etc..' box allows the finger sliders values to pass through unchanged.




http://static.flickr.com/83/249657072_89a3821478_o.jpg




Each preset needs its own relation constraint but once you've set one up, just copy it and change the values accordingly.




Well hope that all makes sense. MB really ought to have the options to create custom control panels but in their absence, the character face can be adapted for a number of uses.




Good luck!

stewartjones
09-23-2006, 11:20 AM
Ah mister Money!


Good first post dude! See, I've pushed you into this rigging business and now you can't get away! hahaha! :D :arteest:

chellescreations
09-25-2006, 08:43 PM
I also posted this response in 3D buzz, but I wanted to post it here as well in case you checked these forums first.

Basically what you just did with a character face can be achieved by adding custom properties to the IK hand effector. And the fingers can be characterized and have both FK and IK control. It's much easier to set up, and when you select the hand controller to pose the arm, you have the sliders for the fingers right there. You don't have to go and track down the character face to select it. For an idea of what I'm talking about, watch the hand rig VTMs...they're in the last set of VTMs on 3DBuzz. They use expression constraints, and it's a little buggy when transferred over to MB 7.0, but I've recreated a better version using Macros and Relations constraints. I've also set it up so you have a slider that will turn the curl constraints on and off, which allows you to have basic curls controls over certain fingers and complete FK control over others.

If anyone wants me to post my version of the constraint, let me know. I'll be happy to help.

jomoj
09-26-2006, 12:31 PM
cheers, I'll take a look at that.

LoneCanuck
09-27-2006, 10:17 AM
Or ... you could just use Poses. :D

My only problem, when using constraints for any object, wether it's hands or regular objects, is that once constrained, you can't keyframe on top of it. At least you can't until you bake the animation on to the object, then, you can work in a layer or edit the keyframe-on-every-frame plot.

Until MB has a way to constrain an object and selectively keying on a given frame, with that constraint active, you are often better off keying it by hand - I know...hard work but in the end...

Having sliders is cool and it's nice to have the ability to add custom controls, but how many poses in a hand do you need to make a closed fist? Three, maybe four tops? There is always the thumb, as well, which doesn't behave the same as the other four fingers, so you will need a custom control for those digits as well.

chellescreations
09-27-2006, 04:09 PM
Or ... you could just use Poses. :D

My only problem, when using constraints for any object, wether it's hands or regular objects, is that once constrained, you can't keyframe on top of it. At least you can't until you bake the animation on to the object, then, you can work in a layer or edit the keyframe-on-every-frame plot.

Until MB has a way to constrain an object and selectively keying on a given frame, with that constraint active, you are often better off keying it by hand - I know...hard work but in the end...

Having sliders is cool and it's nice to have the ability to add custom controls, but how many poses in a hand do you need to make a closed fist? Three, maybe four tops? There is always the thumb, as well, which doesn't behave the same as the other four fingers, so you will need a custom control for those digits as well.

That's true, you need controls for each finger. But I've modified the constraints so I have sliders that will key frame the weight of my curl control constraints on and off for each finger. So you can use the curl controls or use straight up FK or IK in the same shot. Or you can use curls for 3 fingers and FK for the fourth. Poses are nice, and I agree that I don't use them as often as I'd like, but I personally hate having to go through and do FK control for my fingers for every shot, particularly when it's just little finger twitches to keep the hands alive. With poses you either have it open or closed, there's no percentage of the pose you can use for stuff like that. I guess in my opinion the constraints just give a little bit more flexibility. I agree that if you were stuck with just the constraints active, it wouldn't be, but keying the weights on and off is possible...and that really seems to work well for me.

jomoj
09-28-2006, 10:27 AM
yes you can use poses but my whole problem with the hands in MB is the crude way the manipulators work so I'm favouring the slider approach despite the longer setup time. Thanks for the pointer towards the custom properties Michelle - MB has appallingly bad documentation but I've worked it out and adapted the setup to use the custom controls. Keying is a bit of a pain admittedly, if only MB had a way to add a button to key a selected group of joints.. or have I missed that as well?

In addition to the finger controls described above I've added a knuckles only rotation so you can make 'claw' and fine finger tip to thumb shapes, and also a index finger 'scissor' so that finger can be crossed over the middle or widened out. I think that will do for the time being.

One a different character the custom properties have come in handy for controlling a shoulder/deltoid correction bone and driving a breathing cycle which uses 3 different character face expressions but controlled by one slider via a relation constraint.

chellescreations
09-28-2006, 05:22 PM
If you select the hand effector, and go to the properties window and select the finger controls you want to key they should key when you hit the K (Or S in the Maya Settings) key. This only works if you've got the actual properties selected (highlighted). If nothing is highlighted it doesn't key every property, it just keys the hand. And for future reference that works for the Character face as well.

I found this out because if you lock the properties window with those finger controls selected and start keying other body parts, it will key those fingers at the same time. That was a pretty annoying discovery. :)

zsz98781
09-29-2006, 09:07 AM
can you paste on your mb sourcefiles ? i am hard understand this.

chellescreations
09-29-2006, 04:01 PM
I'm not sure if you're asking me or jomoj to post our MB files...but I can't post files due to an NDA. However, I'm typing up how to do my version of the hand constraints to post on 3DBuzz and I'd be more than happy to post that here too if you'd like to see it. Sorry I can't be more help than that!

robotbob
06-18-2007, 03:12 PM
this looks very interesting thanks for posting.

i have gone thru a few hand set-ups from the 3dbuzz set up back to posing then back to buzz. a big problem i find with the custom properties set-up, that some hand genius might be able to clear up for me, is i dont get any hand feedback on my render ( from MB )

The custom properties do not render any keyframe movement. for this i have to plot it out.

at the moment i am keyframeing within story ( although the custom properties keys always get set to the base layer ) and have multiple characters in the same scene. The strange thing is i see my keyframed finger movement in the editor viewer, just not in the render.

any ideas ?

cheers

p

jomoj
06-19-2007, 05:10 PM
well a bit of time has elapsed since I first posted and after going through various setups I've come round to Michelle's way of thinking and am using constraints to set a whole hand pose and just keying the weights on the constraint. To create a new pose, just duplicate the constraint, change the values and add it to your properties window.

There's really no perfect solution but this is as good as any, I'll post a file when I find a min.

Joe

robotbob
06-19-2007, 05:26 PM
hmmm that is an interesting approach - ill try that also. BTW jojoj i just sent you a PM.

pedro

CGTalk Moderation
06-19-2007, 05:26 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.