Adjusting bone positions/rotations according to object

Say you had two differerent sized objects that the player could hold with one hand. One is small enough that the fingers would need to be moved fairly close together (a book for example), while another (let’s say a sword) would have the hand open slightly. How would I achieve this? Does it have to be done with a blended animation, or can the bones be manipulated at runtime?

Here’s what I have so far, the object simply parented to a box parented to a finger bone with an offset:

This isn’t pretty to look at, the hand should be closed around the object.

#Thank You

“This basically means having anim sequences with the character in it’s default (t-pose) or idle pose with only the fingers posed.”

Oh my you finally explained to me why my attempts at additive animations neve worked!

Thanks for the explanation!

I did not know it was all related to the base pose!

Rama

As an animator, I think having a “handful” of additive hand poses is by far the easiest, cleanest solution. This basically means having anim sequences with the character in it’s default (t-pose) or idle pose with only the fingers posed. One anim for your sword pose, one for the book pose, etc. These could then be additively layered onto your animation in the character’s Anim Blueprint (using an Apply Additive node).

If you’re not familiar with or don’t have access to Maya or Max or whatever, you could still pose the fingers and switch between the poses using SkelControls in the Anim Blueprint. This method would be grungy and kinda tedious to set up as you would need to basically plug rotation values for the finger bones into the Skeletal Controls until you were happy with the hand pose you created. FYI, in the animation section of the Content Examples, there’s an example of us using a skelControl to scale a character’s head.

More info on those here: Animation Blueprint Skeletal Controls in Unreal Engine | Unreal Engine Documentation

Good luck, and let me know if anything wasn’t clear.

Yep, and you can specify what the base pose is in the animSequence itself. Under Additive Settings → Ref Pose Type. If you select ‘ABPT_RefPose’, that’s basing the additive off of your character’s t-pose. AnimFrame and AnimScaled allow you to select the animation to use as your base. So, in the above example, you could pose the fingers on top of a run animation as long as you pick that run animation as the ref pose/anim.

A handy feature in Persona (the anim viewer) is Show → Additive Base. That will superimpose a skeleton with the additive base animation over the currently displayed animation.

The “additive hand poses” sounds good. But how would I set this up inside the anim graph?