0
$\begingroup$

I have motion capture data for arm joints as 3 empties: Shoulder, Elbow and Wrist. The motion capture data only includes 3D location with no rotation information.

I wish to place bones between the points so I can use the motion capture data to animate my model. I have used Copy Location and Stretch To constraints which place the bones correctly, however, I'll often find the elbow bending backwards or sideways depending on the position of the empties.

Bones

I would like the elbow to behave in a more "elbow-like" way and have the bones automatically rotate to pass through the empties. Is this possible? How would I go about doing it?

$\endgroup$

1 Answer 1

1
$\begingroup$

In order to reach the empties while constraining the rotation of the elbow to a single axis, you can use a locked track constraint on the upper arm bone, like so:

enter image description here

I've enabled the display of bone axes, so we can see what's happening more easily. When the upper arm's rotation is unconstrained, as in the middle armature, the lower arm cannot reach the "wrist" target without bending freely (rather than constrained to a single axis.) But when we rotate the upper arm to point its Z axis at the wrist, via a locked track constraint, then the lower arm will only ever bend in a single axis to reach the wrist. Here, lower arm is still using a damped track constraint to reach wrist, but if I wanted, I could just as easily use a locked track (lock X, track Y) to reach wrist.

I'm using damped track constraints instead of your stretch-to constraints, which I would recommend, but there isn't any difference; as long as the markers remain a proper distance from each other, a stretch-to acts exactly the same as a damped track. (Copy location is also unnecessary, provided that the bones have a proper hierarchy; they'll get their location from their parents' tails being at the marker locations.)

$\endgroup$
1
  • $\begingroup$ This works perfectly! It's also a really great example of how the locked track constraint works. $\endgroup$ Commented May 7, 2023 at 5:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .