WEBVTT

00:00.000 --> 00:01.927
Hi, my name is Demeter and in this video I would

00:01.939 --> 00:04.040
like to give you an introduction on weight painting,

00:04.260 --> 00:05.986
also called skinning in other software. The most

00:05.998 --> 00:07.880
common use for weight painting is to make characters

00:07.881 --> 00:09.766
deform during animation, and that is probably

00:09.778 --> 00:11.760
why you clicked on this video. Some people also

00:11.761 --> 00:13.279
use the terms weight
painting and rigging

00:13.303 --> 00:14.820
interchangeably, but
to me rigging means

00:14.821 --> 00:16.842
creating bones, constraints, and drivers to make

00:16.854 --> 00:18.760
a control rig, which is not the focus of this

00:18.761 --> 00:20.799
video. Weight painting usually happens after

00:20.811 --> 00:23.000
you already have a control rig, but technically

00:23.001 --> 00:24.733
nothing is stopping you from doing it the

00:24.745 --> 00:26.660
other way around. So what is weight painting?

00:26.661 --> 00:28.977
Weight painting is the altering of vertex groups

00:28.989 --> 00:31.220
in a faster intuitive way, so before we go any

00:31.221 --> 00:33.012
further than that, let's have a crash course on

00:33.024 --> 00:34.980
vertex groups. Delete everything beside the default

00:34.981 --> 00:37.818
cube, then select the cube, go on the data panel

00:37.830 --> 00:40.500
in the properties editor, and I can add a new

00:40.501 --> 00:42.501
vertex group with this plus button, and I can

00:42.513 --> 00:44.480
double click on it to change the name. Every

00:44.481 --> 00:46.397
mesh object in Blender can have any number of

00:46.409 --> 00:48.380
vertex groups, but as you can see, their names

00:48.381 --> 00:50.409
have to be unique,
so two vertex groups on

00:50.433 --> 00:52.460
the same object cannot
have the same name.

00:52.840 --> 00:55.165
If I switch to edit mode, the UI changes a bit and

00:55.177 --> 00:57.420
now allows me to assign or remove weight values.

00:57.820 --> 00:59.786
If you open the end panel and go to item,

00:59.798 --> 01:01.920
well, you'll see nothing relevant because we

01:01.921 --> 01:03.725
haven't assigned any vertices to any groups

01:03.737 --> 01:05.680
yet, so I'm going to select my hello group and

01:05.681 --> 01:07.517
click assign. Still, what I want to show you

01:07.529 --> 01:11.132
is not here because we need to have an active vertex, so I'm just going to select a

01:11.144 --> 01:13.240
vertex, and now you can see there is a vertex

01:13.241 --> 01:14.867
weights panel, and this shows the weights

01:14.879 --> 01:16.836
assigned to the active vertex. So as you can see,

01:16.860 --> 01:18.868
the hello vertex group has a weight of 1.0.

01:18.880 --> 01:21.040
Because of the terminology, you might think of

01:21.041 --> 01:23.106
group assignments as binary. Either a vertex is

01:23.118 --> 01:25.240
in a group or it isn't, but that's not the case.

01:25.560 --> 01:27.468
Each vertex group can associate a value between

01:27.480 --> 01:29.440
0 and 1 with any number of vertices on the mesh.

01:29.760 --> 01:34.620
For example, if I were to select every vertex again and set this weight value to 0.6

01:34.621 --> 01:38.740
and then hit assign, all of those vertices would have a weight of 0.6,

01:39.240 --> 01:43.020
and this will of course have a significance once we start using vertex groups to deform

01:43.021 --> 01:47.820
our mesh. So let's go ahead and do that. Let's go back into object mode and add an

01:47.821 --> 01:50.863
armature with a single bone. I will go in viewport

01:50.875 --> 01:53.440
display in front so you can see it through

01:53.441 --> 01:58.180
everything else. And so in order to deform a mesh using an armature, you need to add

01:58.181 --> 02:02.440
an armature modifier and then select that armature. Now you'll notice of course that

02:02.441 --> 02:04.247
if you just select the armature and move it,

02:04.259 --> 02:06.200
that's not going to move the cube. And in fact,

02:06.201 --> 02:07.888
even if you go into pose mode and move the

02:07.900 --> 02:09.761
bone, that's still not going to move the cube.

02:10.020 --> 02:12.960
Unfortunately, the armature modifier can't read our minds, so we need to make sure

02:12.961 --> 02:14.900
that there is a clear association between the

02:14.912 --> 02:16.820
vertex groups and the bones. This is done by

02:16.821 --> 02:18.727
ensuring that the bone name and the vertex

02:18.739 --> 02:20.840
group name are in exact match. So this default

02:20.841 --> 02:23.139
bone is of course just called bone with a

02:23.151 --> 02:25.800
capital B. Let's go and rename our vertex group

02:25.801 --> 02:31.380
accordingly to bone. And now if we move the bone in pose mode, it will move our cube.

02:32.340 --> 02:34.128
Note though that if you move the armature in

02:34.140 --> 02:35.980
object mode, it's still not going to move the

02:35.981 --> 02:38.121
cube. If you want to do that, you would have to

02:38.133 --> 02:40.240
parent the cube to the armature using control.

02:40.780 --> 02:44.940
P. Although doing this is not necessary, it is standard and you can even do these two

02:44.941 --> 02:46.829
things in one step. That is, parenting the cube

02:46.841 --> 02:48.821
to the armature and adding the armature modifier.

02:49.340 --> 02:51.634
You can also undo that in one step. So if I

02:51.646 --> 02:54.220
select the cube and I hit alt P to clear parent,

02:54.760 --> 02:58.440
notice that it automatically removes the armature modifier for me. So now if I go

02:58.441 --> 03:01.641
and with the cube selected, shift select the armature and press control P again,

03:01.820 --> 03:03.558
but this time I choose armature deform, it's

03:03.570 --> 03:05.440
going to parent the cube to the armature object

03:05.441 --> 03:07.565
as well as add this modifier for me. Now, you

03:07.577 --> 03:09.760
might have noticed something unexpected when I

03:09.761 --> 03:12.065
was moving this bone in pose mode, which is

03:12.077 --> 03:14.500
that even though we assigned a weight of 0.6,

03:14.501 --> 03:18.140
this cube seems to be following completely, even though you probably expected it to be

03:18.141 --> 03:20.486
following only 60% of this bone's transformations.

03:20.498 --> 03:22.760
This is because the armature modifier normalizes

03:22.761 --> 03:24.785
vertex weights that are used for the deformation

03:24.797 --> 03:26.620
before applying set deformation. To help me

03:26.621 --> 03:28.469
explain what I mean by normalization, let's do

03:28.481 --> 03:30.260
a couple of things. First, let's add another

03:30.261 --> 03:33.527
bone to this armature. I will duplicate this

03:33.539 --> 03:37.040
one and I'll call this other. Then let's create

03:37.041 --> 03:40.293
a vertex group for it and assign a value of

03:40.305 --> 03:43.720
1 for all vertices, as well as assign a value

03:43.721 --> 03:47.129
of 1 for the original vertex group. So now, just

03:47.141 --> 03:50.560
to double check in this panel, for all vertices,

03:51.020 --> 03:52.774
both groups are assigned 1.0. Now if we go

03:52.786 --> 03:54.720
back and try to move these bones in pose mode,

03:55.080 --> 03:56.808
you see that each bone appears to be moving

03:56.820 --> 03:58.640
the cube by about half of its transformation.

03:59.220 --> 04:03.980
So if I were to move this bone by 6 units on the x-axis, it looks like the cube has

04:03.981 --> 04:08.620
moved 3 units. Now, you might be catching on to what's going on here. Even though the

04:08.621 --> 04:10.735
weights of each bone is 1.0, the armature

04:10.747 --> 04:13.080
modifier sees the normalized values, that is,

04:13.081 --> 04:15.201
as if each weight on each vertex was divided

04:15.213 --> 04:17.200
by the sum of all weights on that vertex.

04:17.740 --> 04:21.900
So in this case, 1 plus 1 is 2. That's the sum of all weights on a given vertex.

04:22.340 --> 04:24.869
So for both vertex groups, 1 gets divided by

04:24.881 --> 04:27.480
2 and you're left with 0.5, meaning each bone

04:27.481 --> 04:29.289
will deform the cube by half of its movement.

04:29.301 --> 04:31.201
Now if you think back to what happened earlier,

04:31.300 --> 04:35.960
when we had a vertex weight of 0.6 and nothing else, the sum of all weights was 0.6.

04:36.180 --> 04:40.520
So 0.6 was divided by 0.6, giving us 1. And that's why the cube followed the.

04:41.580 --> 04:43.699
60% of the way. I hope this is at least starting

04:43.711 --> 04:45.620
to make sense, because I think it is rather

04:45.621 --> 04:47.379
important. Of course if you do a lot of maths

04:47.391 --> 04:49.160
in your daily life, you might be rolling your

04:49.161 --> 04:52.520
eyes by this point, because this is very obvious to you. But it's understandable to

04:52.521 --> 04:55.500
be confused, because there is a disconnect between the numbers that you see here in

04:55.501 --> 04:59.180
the end panel versus the deformation that you see when you move the bones. Also when

04:59.181 --> 05:02.660
you enter weight pain mode, it commonly causes confusion that even though a bone's

05:02.661 --> 05:06.260
influence is red, which represents the maximum, the mesh is still not necessarily

05:06.261 --> 05:09.760
moving 1 to 1 with the bone, which is the case here. The good news is that there

05:09.761 --> 05:13.000
are ways to avoid this confusion. For starters, there is a Normalize All

05:13.001 --> 05:16.440
operator, which lets you normalize your vertex groups. Make sure you don't

05:16.441 --> 05:19.521
mistake this for the Normalize operator, which has a much more niche purpose.

05:20.060 --> 05:23.180
So let's see what happens if you do Normalize All. Well, that's probably not

05:23.181 --> 05:26.240
what you expected, because one of the weights just turned into 1, and the other

05:26.241 --> 05:29.300
turned into 0. This is because of a rather unfortunate default parameter of

05:29.301 --> 05:32.700
this operator. If you go in the operator settings, you'll see that Lock

05:32.701 --> 05:35.700
Active is enabled by default, which completely defeats our purpose, so

05:35.701 --> 05:38.820
untick that. And now we get the result that we expected. The two weights

05:38.821 --> 05:42.580
are now 0.5 and 0.5, which matches the deformation that you see when you move

05:42.581 --> 05:45.520
the bones in pose mode. The other important feature that lets us deal with

05:45.521 --> 05:48.020
this is Auto-Normalize, which will normalize your weights every time you

05:48.021 --> 05:50.480
make a stroke while in weight pain mode. But let's not get ahead of

05:50.481 --> 05:53.960
ourselves. First off, how do we even enter weight pain mode? You can of

05:53.961 --> 05:56.460
course simply enter weight pain mode from the Object Mode drop down menu

05:56.461 --> 05:59.060
like I just did, but when working with an armature you probably want to

05:59.061 --> 06:01.560
be able to select the bones, which would allow you to quickly switch

06:01.561 --> 06:04.180
between the relevant vertex groups. But as you can see, that's not working

06:04.181 --> 06:06.880
right now. In fact, I can't even so much as select the armature object.

06:06.881 --> 06:10.900
There's two ways around this. One is to go into Edit, Lock Object Modes, and

06:10.901 --> 06:14.520
disable this option, which will allow me to select the armature object, then I

06:14.521 --> 06:17.700
can go into pose mode and go back to my cube. Alternatively, if you don't

06:17.701 --> 06:20.480
want to do that, the way you want to enter weight pain mode is that you

06:20.481 --> 06:23.840
first select the armature, then you shift select the cube, and then you

06:23.841 --> 06:26.560
enter weight pain mode. And now you can select individual bones, which

06:26.561 --> 06:29.521
will also activate their corresponding vertex groups, as you can see here.

06:30.780 --> 06:33.580
Although these two vertex groups happen to be identical at the moment,

06:33.740 --> 06:36.140
but before we start weight painting, I would like to apply a subdivision

06:36.141 --> 06:39.060
modifier on this cube, so we have some more vertices to play with. So I'm

06:39.061 --> 06:42.860
going to go back to object mode, press Ctrl 2 on the cube, and then hit

06:42.861 --> 06:47.060
apply on this subdivision modifier. Also note that selecting bones will

06:47.061 --> 06:50.700
only work if this armature modifier is present. If you remove it, you

06:50.701 --> 06:52.940
won't be able to select bones no matter what you do. So let's undo

06:52.941 --> 06:55.580
that. At this point, you can forget about a lot of the UI that I've

06:55.581 --> 06:58.460
shown you so far. You will no longer need to worry about the vertex

06:58.461 --> 07:01.540
weights panel, nor the vertex group lists, or adding vertex groups

07:01.541 --> 07:04.220
manually. And to show you why you don't need to worry about it, let's

07:04.221 --> 07:07.100
delete all the vertex groups and then go back to weight paint mode.

07:07.720 --> 07:10.080
Now just select a bone of your choice and left click anywhere on the

07:10.081 --> 07:13.700
mesh. As you can see, the vertices inside the brush circle have all

07:13.701 --> 07:16.640
snapped over to this bone called bone, and its vertex group got

07:16.641 --> 07:19.380
automatically created. And if I try moving this bone, all those

07:19.381 --> 07:21.900
vertices are going to move with it. And if I reset that bone to its

07:21.901 --> 07:24.600
original position, then our sphere looks like a sphere again.

07:25.640 --> 07:28.080
And this is what I meant in the very beginning of the video when I

07:28.081 --> 07:30.380
said weight painting is the offering of vertex groups in a fast

07:30.381 --> 07:33.320
and intuitive way. Painting with brush strokes is a lot faster and

07:33.321 --> 07:36.400
intuitive compared to assigning weights manually vertex by vertex.

07:36.620 --> 07:38.880
As you can probably tell, the values of weights are represented

07:38.881 --> 07:41.880
by colors. Where blue means zero, red means one, and there's

07:41.881 --> 07:44.860
shades of aqua, green and yellow in between. You can customize

07:44.861 --> 07:48.720
these colors under edit, preferences, editing, weight paint,

07:48.920 --> 07:51.540
use custom colors. But I recommend you only do that if you are

07:51.541 --> 07:54.060
color blind, and for example, have a hard time seeing the

07:54.061 --> 07:57.400
difference between the yellow of a 0.8 versus the red of a

07:57.401 --> 08:00.920
1.0, because then you're going to have a bad time. But actually

08:00.921 --> 08:03.960
turns out Blender itself is quite color blind. What I mean by

08:03.961 --> 08:06.580
that is by default, there is no distinction between an assigned

08:06.581 --> 08:09.660
weight of zero versus no assigned weight at all, which I think

08:09.661 --> 08:12.020
is a bad thing, and I will explain why when I talk about

08:12.021 --> 08:14.940
auto normalize. But to fix this, go in the overlay settings

08:14.941 --> 08:18.080
and set the zero weights option to active. This way,

08:18.220 --> 08:20.520
weights with the value of zero will still be blue, but

08:20.521 --> 08:22.880
when a vertex is not assigned to a group at all, it will

08:22.881 --> 08:25.560
be black. There is no downside to turning this option on, so

08:25.561 --> 08:27.361
please do. It can save you a lot of headache.

08:27.620 --> 08:29.540
All right, I think this is a good time to end the first

08:29.541 --> 08:31.760
video. If a lot of the information here was new to you,

08:31.880 --> 08:33.340
please take some time to play around with what you've

08:33.341 --> 08:35.660
learned so far and digest. Although weight painting will

08:35.661 --> 08:37.560
never be the most thrilling thing you can learn in

08:37.561 --> 08:40.480
Blender, this was definitely the boring theory part. In

08:40.481 --> 08:42.200
the next video, we will start weight painting an actual

08:42.201 --> 08:45.941
character, looking at the brushes settings and more. See you then.
