Part 2: Assigning Vertices to Bones

 

The next step in setting a model up for animation is assigning the vertices of the model to the bones (you are actually assigning vertices to joints but the word bones is used). This process is sometimes complicated, the level of complexity depending on how densely populated your model is with vertices and bones.

The reason you need to assign vertices to bones is so that MilkShape 3D (and any other application you may export it to) knows which parts of the model move in relation to the joints they are assigned to. If you don't assign bones then animate your model, only the skeleton will move, the model won't.

It is best to think about how you will assign vertices to bones when modelling so you know where to place vertices to give the best mesh deformation. The model I made contains logically arranged vertices that originate around where I thought I would be placing the joints.

It is important to familiarise yourself with the process of assigning vertices to joints the steps are:

  • Select the desired joint in the Joints tab of the toolbox (its best to do it this way rather than select in a viewport).
  • Use the Select tool with the Vertex modifier to select the vertices you want to assign to the joint.
  • Press the 'Assign' button on the Joints tab of the Toolbox.

To confirm the assignation of the vertices to the joint de-select the vertices, click the joint again then click 'SelAssigned'. This will select the vertices assigned to the selected joint. Now to assign the vertices.

1. Make sure you are not in animation mode.
2. Select the 'cranium' joint from the Joints tab of the Toolbox.
3. Use the Select tool with the vertex modifier and drag a box over the vertices that make up the head to select the joints shown below.

The white box shows my region selection with tool Select Vertices (Left-Click Drag).
4. When you have selected the vertices the joint will turn to the default colour again (blue in this case) indicating that it is not selected but don't worry the name of the joint in the Joints tab of the Toolbox is still highlighted so all you have to do is press 'Assign'. Now deselect the vertices (just click in the empty workspace in the viewport) and click 'SelAssigned', the vertices you just assigned will be selected again confirming that the 'Assign' action worked.

I won't bother going through the whole process of assigning every vertex in the model to a bone but I will highlight some scenarios such as limb movement...

When I first started modelling I used to assign the vertices that formed the joint in the limb to the bone, I later found out after rotating joints around in animation mode that the way I had assigned vertices was totally wrong. You see, the vertices that are assigned to that joint are the ones that will move when that joint is moved. I left out the vertices in the middle of limbs because they weren't vertices that formed a joint, therefore I thought that they would move because the rest of the vertices moved, if you see what I mean - I was wrong. The image below shows an example of the scenario I'm talking about, the joints that I assigned to start with and the ones I should have assigned...

You might think that there is no problem with this but when we come to animating the right knee joint watch what happens...

The view on the left shows that the unassigned vertices stayed in the same position because they were not assigned to the joint, this creates the abnormality you see circled in red. The view on the right shows the correct way in which the vertices were assigned therefore making the vertices rotate with the joint. Keep this in mind when you are assigning the rest of the vertices to bones throughout the model.