Personal Project – Character Rigging

Week: 10 – 16 May

As planned for this week, I proceeded with the character rigging stage after the 1 to 1 session with Luke.

Model cleanup & finalisation

Before the rigging process begin, I decided to make several changes and improvement to the both character models. The previous models were actually quite rushed with some of their topologies look a bit messy. So I fixed the meshes to have more quad shapes rather than triangles, added necessary loop cuts to some areas such as on the arms, body and cloth, and ensured that layered objects to have aligned segments so they can be bent at the right area without the meshes overlapping to each other.

Last week version (left), modified version (right)
Last week version (left), modified version (right)

The most noticeable changes were the shoes models where I modified their lower and front shapes. I also removed the shoelaces on Zeo’s shoes to make the design to look cleaner. I didn’t changed the Agent character as much since both of them shared the same body components, other than few tweaks to the topologies of his cloth.

Last week version (left), modified version (right)
I implemented Luke’s suggestion to make the knee and elbow to have more rounded shape. At first, I added several more edges and faces to make the rounded cap, but it looks a bit detail and the area look too stand out for the simple character design that I want to achieve. So I ended up with much simple rounded shape.
Last week version (left), modified version (right)

I changed and finalised the color of the characters as well. And for this project, I want the characters to have a simple material color style so I didn’t apply any heavy textures to them.

For the last part, I combined some the character parts which supposed to be together into 1 object to make the rigging process easier. I also reorganised all the final objects in the outliner and renamed them properly so I can easily identify and find them during the rigging process later.

Honestly, it has been almost a year since I last did a character rigging in Blender. I didn’t used Blender as much compared to my main 3d software, 3dsmax. So I have forgotten several crucial parts of rigging in Blender like setting up IK, pole target and controllers. I quickly headed to Youtube and watched several rigging tutorials to refresh my memory.

A simple tutorial to understand the very basic of bone and skinning
This was the tutorial I watched last year when I first started learning rigging in Blender. So I watched it again for this project. Although the whole series are about Riggify plugin, the first part of it is about to setup bone manually which I decided to use for my characters.

Bone & controller placements

With everything ready, I started the rigging process. For this project, I decided to build the skeletal bone manually rather than using a template from the Blender’s Rigify plugin. Rigify is actually great which offers variety of skeletal templates for biped, bird and quadruped character, but I want to have more direct and flexible bone structure for my characters.

With my experience with Rigify several times before, the system will create proxy and instances when generating final skeletal which can be a bit tricky to revert to edit and generating the bone again. On the plus side, Rigify will make all the controllers and automate some of its bone position when posing the character such as the arm twist for example. While its great to have that, I think I prefer to create much simpler bone for this project.

I began by creating the main bone structure first which covers all the character’s body parts.

The main skeletal
Hand and finger bones

After the main bone structure was completed, I created the controller bones for the root, pelvis, hands, foots, elbows and knees.

Main controller bones

I then setup the IK the arms and legs, and Pole Target for the elbows and knees.

IK & pole target setup

Lastly, I added the facial bones for the eyebrows, eyelids, eyeballs and lip.

Facial bones

Skinning and vertex weight

During the skinning process, I used the manual vertex value instead of the standard weight painting method. I prefer the manual value method especially when the object has a low-poly state since we can select the vertices easily.

For me it is multiple time faster to skin this way. We can just select the vertices and enter the intended weight to quickly make them follow which bone we want, compared to using weight painting brush where we keep painting again and again to get the correct values for each body parts.

This manual value method is especially very effective when dealing with very narrow areas such as fingers. Using weight paint in this area instead can be very painful when it painted the wrong surfaces since they are very close to each other.

When using manual method, if I want the vertices around the character’s chest to follow 100% to the upper spine bone for example, I can just set those vertices weight value to 1.0 to that bone, and set the vertices loop between the upper and lower spine to the value of 0.2 so that it will follow the upper spine for 20% to create soft and smooth bend. It’s very fast and I can get consistent weight for all sides.

Vertex weight value
Entering vertex weight values manually can be faster than doing weight painting especially for the narrow areas such as fingers

The only annoying part of using the manual value in Blender is that it will not automatically normalize the weight value to the sum of 1.0 between multiple bones that shared the same vertices. So I will need to use the ‘Normalize All’ function every time I entered new value to the selected vertices so it will deduct and calculate the balance weight values to the other bones. If I forgot to ‘normalize’, multiple bones can effect the same vertices with the same maximum weight which can cause the shapes to not properly follow the intended bones.

I used the manual vertex weight value when skinning in 3dsmax as well, but 3dsmax will automatically normalize the value. I’m not sure if I can do the same in Blender but I cannot find the way yet, other than to use the ‘Normalize All’ function.

In Blender, we need to manually normalize the weight every time we enter the manual vertex value so that all the weights will not overlap with other bone and their sum will stay at 1.0

Leave a Reply

Your email address will not be published. Required fields are marked *