• Maya

Making the arm follow the spine

Make the arm follow the spine by refining its IK and FK controls, then using the Node Editor to blend the shoulder movement.


00:04

The next step is to now make sure the arm follows the spine.

00:08

You see, as we manipulate it, the arm just floats here and doesn't move,

00:12

which isn't natural.

00:14

First, we need the left arm group back.

00:17

So let's create it again

00:19

and move it into the rig systems group

00:22

and rename it.

00:25

Move the

00:26

IKK and world space group into it.

00:30

Now create two new groups.

00:33

We want two so we can store both the IK and FK positions of where the arm should be,

00:41

rename them. So the first is shoulder left I care world space

00:46

and the second is shoulder left FK, world space.

00:51

Now match these to the arm root control.

00:55

So they are in exactly the same place.

00:58

Actually, this should be left FK. So I'll change that to L

01:04

parent the ICA group to the ICARE shoulder control. So it follows it

01:09

and the FK group to the spine three control.

01:13

Let's also clean the attribute values too.

01:16

Again, moving them down to the offset parent matrix section.

01:21

There we go.

01:23

And now back to the node editor,

01:27

I'll just clear this

01:29

bring in the new ICA and FK groups

01:32

and also the left arm group,

01:35

all we want is a left arm group to blend between these two shoulder groups.

01:41

So as the animator blends between IK and FK, the arm will move to the correct spine.

01:47

So to do this, we need another blend matrix node,

01:51

rename this to shoulder IKFK blend.

01:56

Connect world matrix zero from the IK group

01:60

to the input matrix attribute on the blend matrix node,

02:04

go to the attribute editor and add a new item to the blend matrix node.

02:09

Now connect the world matrix zero attribute from the FK group

02:14

to the target zero matrix attribute.

02:19

Now connect output matrix to the arm root group's offset parent matrix attribute.

02:26

Now if I rotate the FK spine,

02:29

the arm follows

02:31

I'll just move this.

02:34

If we switch to IK,

02:36

nothing happens.

02:37

But that's because we also need to tell the blend

02:39

matrix node to swap to the IK group too.

02:44

Add the co control to the node editor.

02:47

Let's find the IKFK switch attribute

02:51

and connect that to the envelope attribute on the blend matrix node.

02:56

Now the arm follows when using the IK spine,

03:01

we can also blend between the two

03:03

and the arm follows.

03:05

Let's test the main root control again. Now things have changed.

03:09

Ah Right.

03:11

So we have the double transform issue again.

03:14

So all we need to do is remove the root's influence again. Just like we did earlier,

03:19

let's make some room

03:21

and create a new malt matrix node

03:24

call this shoulder left IK malt

03:29

duplicate this

03:32

and update the name to FK instead of IK

03:36

and remove that one.

03:38

Let's add the root control to the node editor two

03:42

connect world matrix zero from the shoulder I

03:45

group

03:47

to the shoulder I

03:49

mult nodes matrix in attribute.

03:52

Now connect to the root controls. World inverse matrix attribute.

03:57

Remember

03:58

we use inverse because we want to take these values away.

04:02

Connect this to matrix A one.

04:05

Now we repeat this for the FK side.

04:08

So world matrix zero to matrix N

04:12

and then world inverse matrix from the root control

04:17

two matrix in one,

04:19

we now need to connect these to the blend matrix node.

04:23

So matrix sum

04:25

to input matrix

04:28

and matrix sum from the FK mult matrix node goes to target matrix

04:33

under target zero. Just here

04:37

we can rotate the root now and the arm stays in position.

04:41

You will also notice that the arm isn't rotating with the spine.

04:45

It's just staying almost level.

04:48

This is because we have its world orient attribute set to stay in world space.

04:53

If I change this to zero,

04:57

the arm now stays orientated with the spine.

Video transcript

00:04

The next step is to now make sure the arm follows the spine.

00:08

You see, as we manipulate it, the arm just floats here and doesn't move,

00:12

which isn't natural.

00:14

First, we need the left arm group back.

00:17

So let's create it again

00:19

and move it into the rig systems group

00:22

and rename it.

00:25

Move the

00:26

IKK and world space group into it.

00:30

Now create two new groups.

00:33

We want two so we can store both the IK and FK positions of where the arm should be,

00:41

rename them. So the first is shoulder left I care world space

00:46

and the second is shoulder left FK, world space.

00:51

Now match these to the arm root control.

00:55

So they are in exactly the same place.

00:58

Actually, this should be left FK. So I'll change that to L

01:04

parent the ICA group to the ICARE shoulder control. So it follows it

01:09

and the FK group to the spine three control.

01:13

Let's also clean the attribute values too.

01:16

Again, moving them down to the offset parent matrix section.

01:21

There we go.

01:23

And now back to the node editor,

01:27

I'll just clear this

01:29

bring in the new ICA and FK groups

01:32

and also the left arm group,

01:35

all we want is a left arm group to blend between these two shoulder groups.

01:41

So as the animator blends between IK and FK, the arm will move to the correct spine.

01:47

So to do this, we need another blend matrix node,

01:51

rename this to shoulder IKFK blend.

01:56

Connect world matrix zero from the IK group

01:60

to the input matrix attribute on the blend matrix node,

02:04

go to the attribute editor and add a new item to the blend matrix node.

02:09

Now connect the world matrix zero attribute from the FK group

02:14

to the target zero matrix attribute.

02:19

Now connect output matrix to the arm root group's offset parent matrix attribute.

02:26

Now if I rotate the FK spine,

02:29

the arm follows

02:31

I'll just move this.

02:34

If we switch to IK,

02:36

nothing happens.

02:37

But that's because we also need to tell the blend

02:39

matrix node to swap to the IK group too.

02:44

Add the co control to the node editor.

02:47

Let's find the IKFK switch attribute

02:51

and connect that to the envelope attribute on the blend matrix node.

02:56

Now the arm follows when using the IK spine,

03:01

we can also blend between the two

03:03

and the arm follows.

03:05

Let's test the main root control again. Now things have changed.

03:09

Ah Right.

03:11

So we have the double transform issue again.

03:14

So all we need to do is remove the root's influence again. Just like we did earlier,

03:19

let's make some room

03:21

and create a new malt matrix node

03:24

call this shoulder left IK malt

03:29

duplicate this

03:32

and update the name to FK instead of IK

03:36

and remove that one.

03:38

Let's add the root control to the node editor two

03:42

connect world matrix zero from the shoulder I

03:45

group

03:47

to the shoulder I

03:49

mult nodes matrix in attribute.

03:52

Now connect to the root controls. World inverse matrix attribute.

03:57

Remember

03:58

we use inverse because we want to take these values away.

04:02

Connect this to matrix A one.

04:05

Now we repeat this for the FK side.

04:08

So world matrix zero to matrix N

04:12

and then world inverse matrix from the root control

04:17

two matrix in one,

04:19

we now need to connect these to the blend matrix node.

04:23

So matrix sum

04:25

to input matrix

04:28

and matrix sum from the FK mult matrix node goes to target matrix

04:33

under target zero. Just here

04:37

we can rotate the root now and the arm stays in position.

04:41

You will also notice that the arm isn't rotating with the spine.

04:45

It's just staying almost level.

04:48

This is because we have its world orient attribute set to stay in world space.

04:53

If I change this to zero,

04:57

the arm now stays orientated with the spine.

Was this information helpful?