So i have a humanoid rig and i want it to only do one thing - open and close arms as if hugging someone. I want to have a single control (with one degree of freedom) that moves all the bones proportionally between resting and hugging configuration. and this is the only control i want to expose to animator. I don't want animator to manually move each arms' fingers etc. this would be way too laborious for what is essentially 1 degree of freedom transition.

Is this possible?



I would recommend using Action Constraints. Here's how I would do that, and it actually works really well.

Start by making an animation, with the rest pose on frame one, and the final pose on a later frame. Make the animation fairly long, say 100 frames or so. Add whatever keyframes you need so that the animation looks like you want.

Next, you'll need a control bone or object, something to that the end animator will interact with. This can be a bone on the same rig, or a separate object entirely.

Finally, you will need to add an Action Constraint to every bone that moves in the animation you made.

In the Action Constraint settings, select your rig and control bone (or just the object). Select the action that you made, and set the action range (frames) to whatever you used. For example, if the animation you made was 100 frames long, it would start on 1, and end on 100. For the target, choose whatever transform you want to use to control the rig at the end. If you want it to behave like a slider, choose one of the 3 location options. You'll probably want to switch to Local Space as well. Then choose the target range. This defines how far you need to move the control to drive the whole animation. If you think that moving the control one Blender unit is good, set the minimum to 0 and the maximum to 1. Note, when using Local Space, the minimum will always be 0.

Now, when you move the control on whatever axis you chose, you will be able to control the action that you made at the beginning. Add this constraint to all the bones that will need to move and you're done! There may be a way to automate this to make it faster if you have a lot of bones to apply this to, but I don't know how to do that.

| improve this answer | |
  • $\begingroup$ thank you! this is exactly what I wanted $\endgroup$ – Andrew Butenko May 14 at 3:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.