Model And Rig a Character in Blender (Part 2 of 2)

In this tutorial, we will be rigging the character model we created in Part 1. If you have a different character model, that’s totally fine. You should still be able to follow this tutorial as long as it has the same general shape (two arms, legs…).

If you are just here for a finished rigged model, the .blend file can be found here. If you would prefer to view this tutorial in video format, a YouTube video can be found below.

Tutorial in video format

There are three main steps we will take to rig the character model. First, we must create the armature, next we will use inverse kinematics so we can properly move and bend the legs, and finally we will apply the armature to the mesh and ensure it moves as expected. Before we do all that though, we need to make sure the character model is an appropriate size.

Scaling the Character Model

To ensure the character model is the correct size, open up the item menu by pressing N. At the bottom of the menu you should see the dimensions of the character.

Item menu

As you can see, mine is currently 13.7m tall, which would be quite a giant. You should only have to worry about the dimensions in the z-axis as long as your character model looks proportionally correct.

Feel free to make your character model any size you want, but I’ll be aiming for a height of around 6 foot or 1.8m. To set their height, make sure your character is selected in object mode and press S to scale down until your height (the Z dimension) is the value you want. Your character may seem really small now compared to what it was before, but I promise you just had a behemoth of a character model to start with.

Now we must apply the scale. Hit Ctrl+A and select scale. In the item menu we opened with N, all the scale values should now equal one.

Now that we have a normal sized character model, the last thing we need to do before rigging him is move him up the z-axis until his feet are just resting on the x-axis.

Character model position and item tool values

Creating the Armature

Now that our character model is ready, it is ready to rig. We will start by making only the left side of the character models armature, then we can use a built in tool to mirror the left-side bones to the right, giving us the entire armature.

First, while in object mode enter front view. Go into the add menu with Shift+A and choose Armature. We want the bones to be visible even though they are inside the character model, so in the Object Data Properties tab (the running stick man), open the Viewport Display dropdown and select In Front.

Object Data Properties settings

With the bone selected, move it up so the bottom joint is on the pelvis. Go into edit mode, make sure the top joint is selected, and use G+Z to move it down in the z-axis to about the middle of the torso. You may need to select the whole bone again and move it so the bottom joint still rests on the pelvis.

Position of root bone

Select the top joint and extrude it in the z-axis to the base of the neck. Extrude again in the z-axis for the neck and once more to the top of the head.

Now, select the joint between the chest bone and the neck bone. Extrude it out to the end of the shoulder and between the top of the shoulder and the underarm. Now extrude the x-axis to the middle of the elbow, again to the middle of the wrist, and then once more to the end of the hand.

Top half of armature

It’s time to create the legs. Select the chest bone, duplicate it with Shift+D and drag it so the bottom joint is at the top-middle of the character models leg. Select the top joint and move it in the z-axis to the middle of the knee. Extrude again to the ankle. Go into side view and extrude once more on an angle from the ankle to the toes. While you’re in side view, make sure all the bones are properly aligned to match the character model. We can also add a slight bend to the knee and elbow by moving the joint in the y-axis.

Your armature should look like this

Now is a good time to rename all the bones. We should follow a specific naming convention for all the bones on the left side of the character model so they are properly copied over to the right side. This naming convention is BoneName.L. This allows blender to know which bones need to be copied to the right side and it will rename all these copied bones to BoneName.R. You can rename each bone by selecting it and pressing F2.

From bottom to top, I named my bones:
- Foot.L
- LowerLeg.L
- UpperLeg.L
- Root
- Chest
- Neck

From the neck to the hand:
- Shoulder.L
- UpperArm.L
- LowerArm.L
- Hand.L

Inverse Kinematics

We need to add inverse kinematics so the knees bend and the legs move as they should. Go into side view, select the knee joint and extrude tot the left in the y-axis. Select the new bone, clear the parent with Alt+P -> Clear Parent. Now move the bone so it is slightly above and away from the knee and rename it to PoleTarget.L.

Now, select the ankle joint, extrude behind the character model in the y-axis and clear the parent again. Rename this bone to LegIK.L.

Position of PoleTarget.L and LegIK.L

It’s time to add the inverse kinematics. Go into pose mode with Ctrl+Tab and select Pose Mode. Select the LegIK.L bone and then Shift+Select LowerLeg.L. Press Shift+Ctrl+C and select Inverse Kinematics. Now in the Bone Constraint tab, set Pole Target to Armature and Bone to PoleTarget.L.

Your armature may look messed up now but we will fix it. Set Chain Length to 2 and Pole Angle to 90 degrees.

Inverse Kinematics Settings

We also don’t want the LegIK or PoleTarget bones to deform the mesh, so go into the Bone Properties tab (the bone icon) and uncheck Deform for both bones.

We also want the foot to keep its rotation when moving around the leg so select the foot bone, open Bone Properties, expand the Relations dropdown, and uncheck Inherit Rotation. This means the foot won’t rotate when the leg is moved which is good, but we do still want to be able to control the foots rotation.

To control the foot rotation, we will have the foot bone copy the rotation of the LegIK bone. Select the LegIK bone, then Shift+Select the foot bone. Shift+Ctrl+C to open the Bone Constraints menu and select Copy Rotation.

In the Bone Constraints tab and under the Copy Rotation constraint, set Target and Owner to Local Space. You can try rotating the LegIK now and invert as needed.

Go into edit mode, front view, select all the bones, press F3 and type in “Recalculate Roll”. Select the View Axis option.

Recalculate Roll > View Axis option

Press F3 again but this time type “Symmetrize”. Select the Symmetrize option. All the left-side bones should now be copied over to the right side.

Full Armature

Go back into Pose Mode move around the bones to make sure everything works as expected. If the legs are acting weird, go into the Inverse Kinematics settings for each LowerLeg bone and adjust the Pole Angle until they bend as expected.

It’s finally time to apply the armature to our character model. Go into Object Mode, select the character and Shift+Select the armature. Ctrl+P and under the Armature Deform option, select With Automatic Weights. This will automatically assign a weight map to our mesh which determines how each bone will influence each part of the mesh. We may need to edit this weight map ourselves, but this still saves us a lot of work.

If you select the armature and go into pose mode, you should be able to move the armature around and it will move the mesh too. You can finally move your character model around! However, you may notice that moving some bones moves other parts of the body around weirdly. This is where our weight map comes in.

Select both the armature and the character model. Using the modes menu, go into Weight Paint. If you Shift+Select a bone, it should show where on the mesh that bone has influence. The dark blue means no influence and as it shifts towards red, it means there is more influence.

Influence of UpperArm.L on mesh

So before editing the weight map, go back into Object Mode -> Pose Mode, and see if there’s anywhere that appears to be influenced when it shouldn’t be. In my case, one issue seems to be when I move the leg, the waist moves way more than it should.

Waist moves more than it should

To fix this, go back into the Weight Paint mode and set the weight of the brush to 0. A weight of 0 will remove influence and a weight of 1 will add influence for the selected bone. Shift+Select the bone whose influence you want to change and start clicking around where you want to remove influence. In my case, I had to select the UpperLeg bone and start removing weight around the waist.

Removing the weight from the waist

Now going back into Pose Mode, we can see that the waist moves much less than it did before. Keep in mind that even if you remove the weight from one bone, the mesh might still be influenced there from another bone which is connected and moves with it (For example, the shoulder and upper arm bones).

Waist moves considerably less

So go ahead and repeat this process for any bones you feel need it. After that, you now have a fully rigged character model! If you go into pose mode you can pose it however you’d like. Keep in mind if you do anything too crazy with the legs, you may have to move the PoleTarget bones around too.

That’s all for this tutorial, though I will likely be posting a tutorial on animating this character and also importing it into Unity later on, so make sure to follow and keep an eye out for that if it’s what you’re looking for. I hope you learned something and have fun with your new fully rigged character model!

--

--

--

I am a freelance full-stack developer who loves to help others. 💻https://josephtalon.ca

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Winning hackathons devops style!

Top 7 Serverless AWS Services

Creating a Cloud Hosting company with $0 investment

Debugging Techniques for Python Programmers

Never, however, have I seen patients as sick as those with COVID-19.

Docker Deep Dive — Part 1

CLOUD COMPUTING !!!

How Low-Code Increases ROI Exponentially

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Joseph Talon

Joseph Talon

I am a freelance full-stack developer who loves to help others. 💻https://josephtalon.ca

More from Medium

⚙️Weekly Gearbox #000

Reachy just gained mobility with an open source omnidirectional mobile base

5G-Tours: The mobility-efficient city — Summary

[Paper Review] Neural Radience Fields (NeRF)