• Maya

Adding upper arm twist controls

Configure upper arm twist controls for more stable and natural shoulder movement during arm movements.


00:04

First, let's duplicate these twist joints

00:08

and we also need to move them out of the hierarchy.

00:12

There we go.

00:13

Let's rename these to follow instead of twist

00:17

because the twist joints are going to follow these joints,

00:20

we will call this one follow tip as it's the end joint.

00:25

OK. Let's move these back now behind the arm.

00:29

Next, we need a locator,

00:31

call it

00:32

upper arm aim left

00:36

and match its position to the follow joint using the match transformations tool.

00:42

Now move this back to so we can see it,

00:46

we need the locator to move with the follow joint. So parent it to it

00:52

there, we can see it in the hierarchy.

00:55

So as this joint rotates, the locator follows with its offset distance.

01:01

What this set it will do is let us force the twist joint to always point at the locator

01:06

which will keep it steady, meaning the shoulder won't twist

01:10

even though the arm is,

01:12

but it will allow us to still raise and lower the arm too.

01:16

So we will get a more stable and natural shoulder movement.

01:20

OK? So we need the Z axis to aim at the locator.

01:24

But we also need the Y axis to stay fixed onto the elbow.

01:28

So how do we do this?

01:30

Well, we can use an aim constraint which will keep the axis aligned for us,

01:36

select the elbow joint

01:38

and then the twist joint

01:41

and go to constrain.

01:43

A

01:44

let's reset this.

01:47

Now, if you prefer, you could experiment with the aim matrix node. Instead

01:52

if you're wanting a more economical setup,

01:55

we're using a constraint because we need the

01:57

translation values available on the actual joint.

02:01

So any animation can be baked and exported later.

02:06

So first we need the aim vector.

02:08

So looking at the joint, we want the Y axis to point at the elbow.

02:12

So set the second column which represents Y to one

02:17

and zero out the X column

02:20

with the up vector. We want to use the axis which is going to point at the aim locator.

02:25

This is the Z axis.

02:27

But because the Z axis is pointing forwards, we need to use a negative value.

02:31

So it looks behind the joints instead.

02:34

So set the third column, which is the Z column to minus one

02:39

set world up type to object up because we want to use an object to help drive the Z axis.

02:46

And now we input the name of the locator.

02:50

So upper arm aim left

02:53

and apply that

02:56

ideally, you don't want any rotation values appearing here.

03:01

Let's test this. Now

03:03

actually let's show the rotational axes. So we can see how the joints are rotating

03:10

and this one

03:13

so I can raise and lower the arm

03:16

and also move it forwards and backwards.

03:20

But if I twist it, the shoulder stays steady

03:24

because the Z axis is staying locked onto the locator.

03:28

If I move the locator,

03:30

you can see it's following. Now,

03:32

that's the first part done.

Video transcript

00:04

First, let's duplicate these twist joints

00:08

and we also need to move them out of the hierarchy.

00:12

There we go.

00:13

Let's rename these to follow instead of twist

00:17

because the twist joints are going to follow these joints,

00:20

we will call this one follow tip as it's the end joint.

00:25

OK. Let's move these back now behind the arm.

00:29

Next, we need a locator,

00:31

call it

00:32

upper arm aim left

00:36

and match its position to the follow joint using the match transformations tool.

00:42

Now move this back to so we can see it,

00:46

we need the locator to move with the follow joint. So parent it to it

00:52

there, we can see it in the hierarchy.

00:55

So as this joint rotates, the locator follows with its offset distance.

01:01

What this set it will do is let us force the twist joint to always point at the locator

01:06

which will keep it steady, meaning the shoulder won't twist

01:10

even though the arm is,

01:12

but it will allow us to still raise and lower the arm too.

01:16

So we will get a more stable and natural shoulder movement.

01:20

OK? So we need the Z axis to aim at the locator.

01:24

But we also need the Y axis to stay fixed onto the elbow.

01:28

So how do we do this?

01:30

Well, we can use an aim constraint which will keep the axis aligned for us,

01:36

select the elbow joint

01:38

and then the twist joint

01:41

and go to constrain.

01:43

A

01:44

let's reset this.

01:47

Now, if you prefer, you could experiment with the aim matrix node. Instead

01:52

if you're wanting a more economical setup,

01:55

we're using a constraint because we need the

01:57

translation values available on the actual joint.

02:01

So any animation can be baked and exported later.

02:06

So first we need the aim vector.

02:08

So looking at the joint, we want the Y axis to point at the elbow.

02:12

So set the second column which represents Y to one

02:17

and zero out the X column

02:20

with the up vector. We want to use the axis which is going to point at the aim locator.

02:25

This is the Z axis.

02:27

But because the Z axis is pointing forwards, we need to use a negative value.

02:31

So it looks behind the joints instead.

02:34

So set the third column, which is the Z column to minus one

02:39

set world up type to object up because we want to use an object to help drive the Z axis.

02:46

And now we input the name of the locator.

02:50

So upper arm aim left

02:53

and apply that

02:56

ideally, you don't want any rotation values appearing here.

03:01

Let's test this. Now

03:03

actually let's show the rotational axes. So we can see how the joints are rotating

03:10

and this one

03:13

so I can raise and lower the arm

03:16

and also move it forwards and backwards.

03:20

But if I twist it, the shoulder stays steady

03:24

because the Z axis is staying locked onto the locator.

03:28

If I move the locator,

03:30

you can see it's following. Now,

03:32

that's the first part done.

Was this information helpful?