Blender
357 rating
Rigging with Rigify (4.2) - crash course + fixing errors
Oleh Janfon1
2024 update - rewritten for Blender 4.0+
While it won't replace manual rigging, it does save a lot of time when done right. In this tutorial, you'll learn how to create an advanced, functional rig for any type of character in less than a day using Rigify AND how to fix common errors regarding this tool.
9
4
19
4
4
   
Penghargaan
Favorit
Difavoritkan
Batalkan favorit
Intro

Learning how to effectively use Rigify took me a lot of time and effort. Most of it was spent searching the Blender forums for answers, trial and error and reverse engineering. I would like to save at least a couple poor souls from having to experience the same fate.


Rigify is a powerful tool that can save you a 3/4 of the entire rigging process with only a small portion of manual tweaking left to do. It automates the process of creating IK/FK controls, creates tweak bones from scratch and allows you to customize each part of it. Learning how to use it is definitely a time saver if you're interested in e.g. asset ripping or converting models from other platforms (SFM, Garry's Mod, UE, Unity) to Blender.


With this guide you should be able to create a full functioning rig in less than a day. You'll also learn a lot about just rigging character models in general, making use of the wide array of quality of life tools Blender provides.

Rigi-All addon
If you're using models with preexisting armatures and want a quick, efficient way to rig them, you can use this addon to speed up the process. Highly recommended!


https://github.com/hisprofile/rigi-all/releases/
WORD OF WARNING
This guide was made with using Rigify for animation in mind - while you can use this method to rig models for 3d printing or modding, the rig will most likely not suit your needs entirely.
Why bother using Rigify when one can use Mixamo?
I'm stating this question because I genuinely asked myself this at some point during my first months with Blender. Was a newbie, wanted to skip the time-consuming parts of creating a rig and weight painting, looked for cheap alternatives to hard work.


There's no taking shortcuts with some things. You won't get quality results using a free 2-click service online. If you want real results, some manual work has to be put in. Rigify in and of itself spares you of a lot of tedium already, it's worth taking a day or two to learn it.
tl;dr
Why I didn't mention AutoRig Pro first
I don't own the addon, nor do I understand it to such depth as Rigify, so I can't really go about comparing the two and state which one is objectively "the best". I can make some light comparisons, though, based on my small experience with it.


On surface level, AutoRig automates the process of generating a metarig kinda like Mixamo, but with more control over the final result. Rigify doesn't have that, the process of adjusting the metarig remains manual. That's definitely one advantage worth mentioning.

I have seen and toyed around with some AutoRig Pro rigs. One clear downside it has over Rigify in my opinion is the unintuitive bone naming conventions. With DEF-f_index.01 you can at least tell it's a DEForm bone. What the hell is a root.x?


I'm certain the addon is worth the price tag. Rigify can most likely offer the same quality, but with more manual work being necessary to reach that level.
Preparing the mesh - general first steps
In order to make things easier for Rigify, let's strip the mesh to its basic components and fix anything that could affect the weight painting.

BEFORE DOING ANY MAJOR CHANGE, MAKE A BACKUP .BLEND FILE OR A DUPLICATE MESH. Avoid cornering yourself into an irreversible situation.

Merge By Distance everything (cautiously)
The mesh might be made out of smaller parts that are disconnected from one another even though they shouldn't be, say, seams that separate the torso from the arms/legs or common stuff like how the Xnalara importer often breaks the mesh down into weird chunks. That can lead to a lot of issues down the line as you apply automatic weights.

Huge warning, BE CAREFUL WHEN MERGING BY DISTANCE, ESPECIALLY WITH THE VERTICES OF THE LIPS. Last thing you want is finding out you accidentally sewn the mouth together! Consider avoiding that part of the mesh altogether unless necessary.


Always, just in case, select the entire mesh (except for the lips in some cases) using A in Edit Mode, then Merge By Distance with settings set to 0.000. Enable Sharp Edges to fix shading issues, especially for geometric objects like weapons.



Doing just that should connect everything together, ranging from hundreds to thousands of vertices. In case it results in 0 merged vertices, it means the mesh is actually okay. Whether's that's true or not, you will find out when Parenting with Automatic Weights. That's explained later down the line.

Make sure that the UV Maps for each object are named the same way. Otherwise the UVs will break and the textures will get messed up irreversibly. The "UV Maps" tab can be found under Object Data Properties, go there and rename your UV Maps to, say, "UVMap".

Shapekeys of the following objects are combined and should mostly remain uncorrupted even after removing doubles.

Separating bodyparts

Once you spot and recognize which parts of the mesh you can separate, this can be achieved in two methods:

  • carefully
  • dump everything

The careful method revolves around selecting individual elements one by one. Once you've selected parts of the mesh, you can press P to separate them, placing them in a new object. Once you're done with weight painting later down the line, it's as easy as selecting them, then the main mesh, and pressing Ctrl+ J to merge then back together.

This can be done in a multitude of ways:
  • selecting vertices/faces of meshes and pressing L to select them in full,
  • going into mesh materials and selecting bodyparts that way (assuming the accessories use a different material),
  • using the UV editor to track down meshes using their UVs,


If you're impatient, the other method is using Separate By Loose Parts to automatically split the mesh into smaller parts. This option is hidden inside Edit Mode's Mesh -> Separate -> By Loose Parts.


In Edit Mode, select Mesh -> Separate -> By Loose Parts. The mesh will be then automatically separated into all individual parts. Usually those include:

  • head mesh
  • body mesh
  • tongue, teeth
  • eyes
  • eyelashes
  • hair
  • clothing
  • clothing accessories
  • armor pieces
  • disconnected arms, legs, depends on the model
  • fingernails
  • etc.

Once you're done, the mesh should be nice, clean and easy to automatically weight paint later down the line. Just make sure you don't delete the stuff you separated, that's not the point.
Preparing the mesh - preexisting weight painting

REMINDER: If you have both an existing armature and vertex groups, USE RIGI-ALL

If the model comes with its own rig/has preexisting vertex groups, you can save a lot of time by having Rigify use those instead! Naturally, this minimizes any issues caused by Automatic Weights by simply depending on them as little as we can.

Simply rename the bones of the model's rig to ones used by Rigify.
Make sure the model is parented to the rig or the changes won't affect its vertex groups! By now I remember 3/4 of the Rigify armature by heart, but you may want to have a metarig on the side to copy.

For example:

  • waist ---> DEF-spine

  • spine1 ---> DEF-spine.001

  • chest ---> DEF-spine.003

  • head --->DEF-spine.006

  • clavicle_l ---> DEF-shoulder.L

  • knee_l ----> DEF-shin.L

  • elbow_r_stretch ---> DEF-forearm.R.001

If the model doesn't have bones you could use for the tweak bones (upper_arm.R.001, shin.L.001), you can simply ignore those. They're not necessary and you can even delete them later if they don't generate well. If you're having trouble finding the right bone to rename (3 bones in the same spot), peek into the mesh's vertex groups for reference.

You can skip the finger bones/face bones and leave that to automatic weight painting, unless Rigify completely ♥♥♥♥♥ the bed. Then you can also take the time to rename the original finger bones to counter this issue. It's always a 50/50 with Blender whether or not any serious issues occur, so it's good to have a backup plan.

Why rename the bones and not the vertex groups themselves?

It saves time. As you rename the bones, the vertex groups of the meshes parented to this armature are automatically renamed. If the model comes with separate parts/clothing/accessories, they will all have their vertex groups renamed, too. No need to rename them one by one when you can do all at once.

Once you're done renaming all the bones you want, make sure to Lock the vertex groups of each mesh so that they're not overwritten as you apply Automatic Weights. Choose the Lock All option. It also includes those vertex groups you're not planning to use/haven't renamed, just in case.


Afterwards, you can Sort By Bone Hierarchy to make this list easier to look through.

And just like that, by cleverly reusing preexisting vertex groups, we've saved ourselves a lot of headaches.
RIGGING A MODEL - PREPARATIONS

For this section, we'll be using a cheeky bugger from Killing Floor. Exported from the game files using Umodel [www.gildor.org]and imported using a .psk importer addon[github.com]

PREPARING THE MESH


(If you haven't done that already, install Rigify. Edit -> User Preferences -> Addons -> type in Rigify and voila!)

Make sure to check if the model is facing the front view (1 on numpad). If that's not the case, e.g. it's facing the back view, enter top view and rotate it by typing in R and then 180. We're doing this simply to make things easier for ourselves.

Place the model in the World Origin

Press Shift+S -> Cursor to World Origin.
Once that's done, select the rig (not the mesh) and press Shift+S -> Selection to Cursor. The model should be in the middle of all the axis.

If your mesh is without a rig, you can perform the same action. Just mind the warning in the WHY section.



WHY:
  • It's generally better to have the model in the middle of the viewport display. That way, if you were to import it to another Blender file, it wouldn't get lost
  • It's important to have it in the middle so the X-Axis Mirror works as intended.
  • If a rig is made out of multiple meshes (head, body, hands, fingernails etc.), if you were to only select the meshes and send them to the cursor, they would all pile up in the middle, ruining the mesh. However, if connected to the rig, they won't (since the rig controls their transformation).
    A temporary solution is to ctrl+j articles of clothing to the main body mesh. They will copy the origin of it and move along with it. Once you're done moving them, enter Edit Mode, use "L" hotkey to select separate meshes and press "p" to separate them By Selection.

Disconnect the mesh from any preexisting rig

Select the mesh (not the rig) (also select clothing, hair etc.), press alt+p (or go to Object -> Parent) and choose Clear and Keep Transformation. If at any point you resized the rig, say, made it the size of that tiny cube between the model's feet, disconnecting the mesh from the rig would lead to resetting it back to the giant size.

If you posed the model and want to retain this transformation, Apply the Armature modifier for each mesh affected by it. Will not work if your mesh already has shape keys.


Then select the rig and press X to delete it.

Unless you're planning on adding custom bones for the accessories, hide any additional content such as clothing, jewelry, guns etc. using the "h" hotkey (alt + h to unhide) or doing it manually in the Outliner. Put them in a separate Collection if possible, just to keep things clean and tidy. You don't need them right now for the metarig.




WHY:
  • The mesh is connected to an armature, a.k.a. the rig.


    If you do any sort of scale, location, rotation changes to the rig and THEN disconnect it from the mesh (or straight up delete it), it will reset all those changes done to the mesh, usually ending up with the model becoming gigantic (notice how small the cube is compared to the model).

    whoops

    However, if you edit the mesh and not the rig, the rig remains the same size. If you were to delete the rig, the mesh wouldn't reset.

    an example of what happens when the mesh and the rig aren't the same size


The armatures

Make sure Pivot Point is set to 3D Cursor so the armature spawns at its location.


Having done that, press Shift + A -> Armature...

WHICH ARMATURE FOR WHICH PROJECT

  • HUMAN (META-RIG) - HAS HAND FINGERS AND FACE
  • ANIMALS --- CAT (META-RIG), WOLF (META-RIG)... - HAVE PAW FINGERS AND FACE

    The armatures listed above are for characters that demand movable fingers/face. However, if your character does not necessarily need those elements, you can either remove them from the rig yourself or use the rigs listed below.

  • BASIC --- BASIC HUMAN, BASIC QUADRUPED - ARE WITHOUT FINGERS OR FACE BONES

My character will use the HUMAN (META-RIG) with manually removed face bones.

If you've done everything correctly up to this point, the armature should spawn at the 3D Cursor.
Make sure you have In Front selected so you can see it at all times.


Check if the rig has been selected. If it is, enter Edit Mode and scale it up to fit the model.

Shoulders are usually the best indicator for the scale.

RIGGING A MODEL - BASIC BONES
Fourth - placing the bones


You can switch the Pivot Point back to Bounding Box Center when editing, we only needed it to place the armature and scale it.

Press N to open up the right sidebar and Tools select X Axis Mirror. It will make mirroring bones much easier.


Let's explain the workflow of setting up the bones. The face bones have their own separate chapter.

If your model has a preexisting rig, try to follow its bone structure as close as possible.

  • Make use of the radial selection tool (c hotkey), it's useful when dealing with fingers and bone connections. Use the scroll on your mouse to change the size of the selected area.

  • DON'T LET ANY OF THE BONES DISCONNECT FROM EACH OTHER, OTHERWISE IT WILL LEAD TO THE RIG REFUSING TO GENERATE!!!



  • Start with the knees and elbows. Make sure they're slightly bent so the tool knows which way it's supposed to bend. Heels should be on the same horizontal line as the toes.

  • ALWAYS check up on the rest of the rig in case you accidentally selected a bone somewhere else.

  • Double check if X Axis Mirror is still on before starting to work on the fingers.
  • Be extra careful when posing fingers, observe them from all angles to make sure they don't fly off to the side, are centered inside the mesh etc.


  • Try and don't move the palm bones too much, it might disrupt the way the tool weight paints the hand.


  • You can look from the inside of the mesh to see if the bone is lined up correctly.
  • Don't be afraid of scaling the bones if it makes them fit the hand more. I made my finger bones a bit larger so they would fit the size of the hand.


  • Don't forget to look at them from all angles.

  • The shoulder bases always stick out at an angle while most armatures have them perfectly horizontal. Adjust them by select the should bone, pressing S, then Z to scale along the Z axis and 0. It should make the bone perfectly straight. Then rotate it accordingly.

  • The last top bone of the spine is the head. Make sure it's base is somewhere near the jaw level and the top - at the top of the head.

ADDING/REMOVING BONES IN METARIG
IN-DEPTH MATERIAL - 4.0 Feature Showcase, the Bone Collections manual[docs.blender.org]

With the addition of Bone Collections in Blender 4.0, adding new bones has become easier than ever before. Instead of needing to figure out layer numbers, it's as simple as adding a new collection, then telling Rigify where to put it in the generated UI (+ giving it a fancy color).



Upon creating new collections and assigning bones to them (via the Assign button), you can redirect yourself to a tab a little lower on the list called Bone Collection UI. Any new collections you have made are listed there and need to be manually given a color set and added to the UI.


Newly added bones will not be recognized by Rigify and need to be given a rigify type. You do that by selecting the bone in Pose Mode, then going to the Bone Properties tab -> Rigify Type tab.


There's a sizable list of bone types to choose from, the ones I use the most are in the list below.

Most used Rigify Types by me
Full list of all Rigify Types in Blender's docs[docs.blender.org]

  • basic.super_copy - a bone with no extra bells and whistles, can be given a bone shape (my personal favorites are Bone and Cube)


    • basic.copy_chain - simple bone chain, can be granted a bone shape


  • limbs.simple.tentacle - bone chain that automatically rolls up, can be stretched using multiple tweak bones


  • spines.basic_tail - a tail that can be rolled up using one main bone and also rolled using its each individual bones. Can also be set to either follow the torso or not.


  • limbs.spline_tentacle - a bone chain with control points (similar to a method done with curves and Hook constraints), basically IK with extra steps. Can be given as many extra control points as you want


WARNINGS REGARDING ADDING EXTRA BONES

READ THE ♥♥♥♥♥♥♥♥ RIGIFY TUTORIAL PAGE
You can always depend on the ♥♥♥♥♥♥♥♥ manual if not on me.
For more information on what you can do with each bone type, go to the ♥♥♥♥♥♥♥♥ Blender tutorial page.[docs.blender.org]

BONE CHAINS ONLY NEED A BONE TYPE AT THE ROOT BONE
If you have a bone chain, only the first bone needs a type.

NEW BONES WITHOUT A TYPE WILL NOT BE GENERATED
If the bone doesn't have a set Type, Rigify ignores it and it will not appear in the rig.

WORK ON ONE SIDE, THEN SYMMETRIZE IT TO THE OTHER
Upon symmetrizing bones their bone types carry over to the mirrored side.

ALWAYS REMEMBER TO PARENT THEM TO APPROPIATE BONES OF THE METARIG, OTHERWISE THEY WON'T MOVE WITH THE RIG

ALWAYS CHECK ONE BY ONE IF THE NEW BONES WORK WITH "GENERATE RIG" AND IF THE WEIGHT PAINT IS APPLIED CORRECTLY
It will save you a lot of headaches later on.


Symmetrizing

When naming bones that will appear on left or right side, use names that contain side indicators. That way the Symmetrize and X-Axis Mirror will work correctly when editing custom bones.

Let's take a look at how Rigify names bones.

shoulder.R
shoulder.L
lid.T
lid.B



Once your left or right side is finished, use the Context Menu ("w" hotkey") or go to Armature -> Symmetrize to mirror the bones. If everything has been named correctly they will even automatically parent to their respective bones.


HOW TO REMOVE THE FACE RIG

If you're certain your character would be better off without a face rig or that the face will be posed using shapekeys, you can remove the face rig entirely. Unfortunately you can not keep any part of this rig, it must be either completely intact or removed entirely.

You can select all face rig bones by pressing Select on the Face bone collections.


Once you have done that, delete the bones. Done!
METARIG - BODY RIG EXAMPLES




RIGGING A MODEL - THE FACE
Seeing the face bones for the first time can be a terrifying experience. Besides the stern, pride-shattering stare, the luscious lips and wide ears, the sheer amount of what could go wrong is enough to break a man.


Not you, however. You'll learn to tame this beast. The pros are worth the cons.

Buy first off, make sure to ask yourself this question - do you need a face rig? Could you get better results with simpler controls or working with shape keys? For all intents and purposes you can avoid creating the face rig and achieve better results without it. If your answer to the first question is still yes, keep reading this chapter lol


HOW TO SET UP A FACE RIG (as foretold by the ♥♥♥♥♥♥♥♥ Blender tutorial)
  • You can not delete any part of this rig. If the mesh doesn't need the ears, just leave them be. You can just not use them, hide them etc.

  • Maintain symmetry. Try to keep as close to the Z axis as possible.


    If the mesh's head is slightly to the left or right, you'll notice it doesn't fit the face rig. The ear will be off, the eye, the temple bones. You can solve this by temporarily moving the mesh a little to the correct side. Once you're done, simply reset the mesh back into position and (with X-axis mirror disabled), select the face bones and move them.

  • Mouth corner positioning. Keep the "jaw." bone near "ear." bone. Make sure the top and bottom lips bones are no too close to each other so they don't sew the mouth shut with weight paint. Also, keep the chin. bones inside the mesh so as to minimize automatic weight painting errors (chin. bones weight painting the chest amor etc.) With more advanced meshes (or just meshes in which the bottom lip goes under the top one) you have to unfortunately ♥♥♥♥ it up and just edit the weight paint by hand in that case.)

  • Set the eyebrow bones as needed, but keep the forehead bones far away from that area! Preferably place them at the top half of the forehead so they don't interfere with weight painting the eyebrows.


    With a bit of trial and error, you should be able to end up with a good result.


    "Upgrade your face rig"

    Since a few versions ago, you can upgrade the Rigify face rig to have a few QoL tools. The lip bones now have a new control bone that allows you to rotate, move and scale the lips together. The eyebrows now have control bones that serve a similar purpose.


    The lip bone is especially useful, as it lets you achieve facial control that otherwise would be quite tiresome to do by hand. When used in tandem with regular animation of lip bones, you can use it to add extra detail, whether subtle or not.


    Since it adds a bunch of new bones, I usually activate this after I finish posing the face, but not before doing a backup save. Trouble is, the way Rigify tries to make these bones is faulty and doesn't always connect the new bones correctly.

    Example of an error:
    RIGIFY ERROR: Bone 'cheek_glue.T.L.001': Could not match control node for ORG-cheek_glue.T.L.001
    Incorrect armature for type 'base_generate'



    Troubleshooting this isn't difficult as it usually means you just have to track down that unconnected bone and do it yourself. The newly added bones have "glue" in their names and need to be perfectly situated between other bones in the rig. This can be done using the world cursor.

    • click on the end of the octathedral that the bone is supposed to be attached to
    • Shift + S -> World Cursor to Selected
    • the world cursor is now at perfect coordinates
    • select the end of the glue bone
    • Shift + S -> Selection to World Cursor
    • ???
    • What do you mean it still doesn't work?
    • If painstaking tweaks didn't help, starting over with a new face rig might be necessary

METARIG - FACE EXAMPLES






RIGGING A MODEL - GENERATING RIG
Once you're generally done with the bones, you can try to create a prototype of the rig.

Apply Rotation and Scale

Enter Object Mode, press ctrl+a and Apply Rotation and Scale. We're doing this so the rig stays the way it is and doesn't suddenly shrink when we apply the Armature Deform etc.. That might happen if you scale the armature in Object Mode instead of doing that in Edit Mode.


Go into the Advanced Options to give the rig a name.


Moment of truth...

Generate Rig.


Fingers crossed... it worked. You'll end up with a wonderful looking rig. It's not connected to the mesh, it doesn't have vertex groups, it's just the controls themselves.


If you don't, if Rigify says something akin to Bone heat weighting: failed to find solution for one or more bones or the rig is mispositioned, please jump to the Troubleshooting section below.




NECESSARY TO DO AFTER GENERATING THE RIG

Make sure to check if the finger roll bones are working correctly! Change the Pivot Point to Individual Origins and scale the Orange Finger bones. The green finger bones will follow suit and either clench the hand into a fist or spread the fingers.


If the green finger bones are going sideways or in a wrong direction in general, a fix for this is explained in the Rig Troubleshooting section.

CLEAN UP THE EYE/TEETH/TONGUE BONES

Update: Rigify now has DEF- bones for eyes and teeth. This part used to teach you about using MCH-eye stuff but that's unnecessary now.

Rigify weight paints eyes in a weird way. The eye, when weight painted automatically, is spread between all individual bones of the eyelids instead of having its own dedicated bone. It's pretty odd since it does have its own dedicated eye bones. And the teeth, too. None of the mesh except for the eyes/teeth/tongue themselves need to be weight painted to those bones.

  • separate the eyes if you haven't already
  • clear all Vertex Groups from the eyes
  • add both DEF-eye.L and .R vertex groups
  • 100% Assign for respective eyeball.
  • (optional) you can glue half-sphere eyes to the sockets by assigning their back edges to DEF-spine.006


Done! The stretchy eyeball syndrome should be fixed.

Same situation as with the eyes for the teeth. This time they're:

DEF-teeth.T
DEF-teeth.B


Create them as Vertex Groups for the teeth. Use the UV editor to manually paint the top and bottom sides with 1.000 Weight.

As for the tongue, separate it, then automatic weight paint it again. Remove all vertex groups except for DEF-tongue ones.
RIG GENERATION TROUBLESHOOTING
Once the rig has been generated, you can hide the metarig for now. You will need it later, so store it somewhere in the background instead of deleting it.

Examine the rig. Turn on In Front in the Armature Tab -> Viewport Display so you can see all bones.

Make sure to check if the bones fit both sides of the mesh, they might not be symmetrical. You can adjust just one side of the armature by returning to the metarig, turning off X-Axis Mirror and editing one side only.


A rig that looks like this NEEDS to be fixed.


POSSIBLE ISSUES

Input to rig type must be a chain of 2 or more bones.
Incorrect armature for type 'chain_rigs'

Anything akin to that means you either deleted too many bones from somewhere or the new bone chain doesn't fit the requirements of the Rigify Type you gave it. This specific error is for the limbs.super_finger but there are countless other Rigify Types inside the metarig of yours. If all else fails, just delete it and start over with a fresh metarig.
Read the Adding/Removing Bones section for more detailed info.

The finger roll bones roll fingers sideways

Something went wrong when you were posing the fingers in the metarig.

The first simple solution is to clear roll of the finger bones. You can do this by selecting the bones and clicking alt+r. Make sure the flat surface of the octathedral (that's what the funky bone shape with spheres is called) is facing down. You can also go in edit mode and edit the Roll property of bones in the side panel menu. On top of that, make the fingers in the Metarig bent a little, so Rigify isn't confused as to which direction they're supposed to rotate.


Feet of the rig are not flat on the surface but curved to the sides
Happened to me once, doing the mesh from scratch (or switching to a new .blend file) fixed it somehow.

Rig is not at the mesh, it generated somewhere to the side, above it, below it...
You can just select it in Object Mode and move it to the mesh by hand. Perhaps you forgot to Apply Rotation and Scale, try applying Location.
If it's so messed up that the root is somewhere far away from the feet, I'd try and look into the metarig if I messed something up with the spine, the heels. As always, be ready for the occassion that you might just have to redo the whole metarig from scratch.

Warnings regarding overwriting the rig:
  • Overwriting a preexisting rig will remove any additional bones added to it (for example, adding a normal bone to the generated rig. Separate these new bones from the rig to avoid losing them. Do that by selecting them in Edit Mode and pressing P and choose Separate. Later merge rigs using "Ctrl + J". Remember to parent those bones once you're done with overwriting.
  • The rig must be visible, not hidden, when overwriting it, otherwise something bugs out and the rig completely breaks. E.g. after overwriting the rig is just a root bone.

ARMATURE DEFORM

If the rig looks okay:

Select the mesh, then shift+select the rig. Press ctrl+p and select Armature Deform (connects mesh to the rig a.k.a. the armature) with Automatic Weights. If you utilized preextising vertex groups, double check if they're locked so they're not overwritten by accident.


If at that stage Blender spits out an error, look at the Troubleshooting section.
RIG PARENTING TROUBLESHOOTING
You'll find most of the solutions here viable for all Rigify rigs.

1. Bone heat weighting: failed to find solution for one or more bones
  • The mesh has vertices that aren't merged to anything, resulting in a gap that the tool doesn't know what to do with (it can still work even with large gaps, don't force changes that don't have to be made)
  • Some accessories/clothing/armor/hair are confusing Rigify
  • It's a very complex model with a high poly count

As a universal solution, consider scaling the mesh and the armature, say, by 10 (press S and type in 10) and then parenting them with automatic weights. Doing that should fix the issue If it works, the mesh will probably shrink back to normal size separately from the armature. Scale it by 10 again to fix this. Once you're done, scale them back down by typing in "S * 0.1" (scale, multiply by 0.1).

2. The weight paint looks terrible
Multiple different variables can cause crappy automatic weights:


  • The metarig is missing bones.
Missing crucial Rigify Type bones such as limbs.super_palm leads to the tool straight up missing out on information on how to weight paint the rig.
you might have to either recycle the original weight paint of the model or just do the weight painting manually.


  • The mesh is triangulated/ too complex for the automatic weights to handle
Meshes that are triangulated and not made out of quads will result with bad weight painting a lot more.

  • The mesh has some enabled shape keys
Shape keys are not taken into account when weight painting, if they change the mesh drastically (height, size, position of mesh etc.), the result will look bad unless you apply those shape keys permanently.

  • The mesh had not been stripped of smaller unconnected parts
The mesh might be made out of smaller, separate parts, for example bandages, armor pieces etc. As these different pieces pile up, automatic weights are prone to fail more and more. Go back to the "Cleaning up the mesh" chapter, it's still not too late!

Cleaning up the automatic weight painting
Automatic weight painting in Blender has an issue where it often overreaches how much certain vertex groups control their respective bodyparts. The most common issues are:

  • DEF-spine.003 has zero influence on the chest area, leading the mesh to stretch in awful ways as it's shared between all the smaller bones.
  • DEF-thigh bones controlling the other leg/huge chunk of the torso up to the armpit and the crotch
  • DEF-pelvis controlling a huge chunk of the torso up to the armpit and the crotch
  • DEF-shoulder controlling the neck
  • DEF-spine.005/004 controlling half of the head when only .006 should have any control of the head
  • DEF-upperarm controlling the chest and not just the, well, upper arm
  • DEF-spine having zero influence on the crotch area, making that area stretched and inconsistent when the legs are bent
  • DEF-tail bones controlling the waist/torso/sometimes even the hair when its influence should stop at the base of the tail


And the face rig, oh the face rig...


  • DEF-ear bones often have some weight paint on the shoulders
  • DEF-jaw bones suffer the same issue, but on the chest and the neck
  • Realistic eyelashes always look like a mess if you try to automatically weight paint them.
  • DEF-forehead bones have too much control over that part of the head, causing it to shrink or inflate when you move the bones around (best visible on a bald head model)

That is without mentioning the plethora of issues that happen when the character is wearing clothing/armor. Automatic weight painting is why it's so necessary to separate the main mesh from all clothing/accessories/earrings/eyelashes and merge loose vertices!!!

Due to this I insist you make use of the mesh's preexisting vertex groups if it has them. It can save a lot of headaches. If you're in a situation where that isn't possible, though...

How to clean up the vertex groups the right way?

Generally I would resort to two options:

Weights ---> Smooth
Works best for individual cases of some stray vertices not following any bone. Simply change the setting to All Groups for a quick and easy fix.

Manual cleanup
If I need to be precise, I use Vertex Selection to clean up bits and pieces of the rig

I can also use Vertex Selection to check which vertex groups affect a vertex. Makes it easier to hunt down the culprits.



Extra tip - use references
Try studying the models done by professionals/gaming industry and copy how they do it. I recommend taking a look at how TheRoyalSkies [www.theroyalskies.com]had done it - feel free to download his Blenda character models and study their vertex groups. You can also go on resource websites like SketchFab to find weight painted models to analyze.
Adding clothing to the mesh
There are two ways to add back clothing to the mesh, either via Transfer Mesh Data or by hand.

1. Transfer Mesh Data

In order to apply clothing to the mesh, we'll be transfering the vertex groups of the main body. We're doing this instead of Automatic Weights because it guarantees the clothing copies the weight painting of the mesh you're attaching it to.

With the meshes prepared, first select the clothing then the mesh the vertex groups of which it's supposed to copy. Go down into Object -> Link/Transfer Data-> Transfer Mesh Data. Add it to your Quick Favorites so it's available at the press of a button.

Change the tool settings to these:

Data Type - Vertex Groups
Vertex Mapping - Nearest Face Interpolated
Source Layers Selection - All Layers


Fixing unwanted stretching

If the mesh overlapped in certain areas it might lead to incorrect parenting. The best way to prevent this is to just move the vertices apart before weight painting. Otherwise, to try and fix this you can enter Weight Paint Mode of the clothing, enter Vertex Selection and hunt down the individual vertices causing this deformation.

With the vertexes selected, either fix them by hands or use the Smooth tool under the Weight panel. Subset to All Groups and change the Factor until it looks just right.

By hand


Some parts of the mesh that shouldn't stretch, e.g. armor pieces, small accessories, can only need one vertex group to be applied to the mesh.

In that case it's a matter of studying to which vertex group it should be applied. The chestpiece in this example would work best for DEF-spine.003. I set the Weight to 1.000 to avoid any kind of stretching.


A helm only needs to be connected to DEF-spine.006, pauldrons to DEF-shoulder.L/R, vambraces only to DEF-forearm.001.L/R and so on, so forth.
Using the Rigify rig (IK/FK, knee, elbow tweaks etc.)
Rigify has plenty of options that make posing or animating easier. Most of them are controlled by the .py script that generates alongside the rig.

RIG LAYERS
Rig Layers, along with other Rigify layers, are hidden in the viewport's right sidebar, under the Items tab.



RIG MAIN PROPERTIES - IK/FK FOR LEGS & ARMS
With the IK/FK bone selected you may dynamically change and animate transitioning between IK/FK.


You can also snap (copy the pose) IK to FK and vice versa, allowing for seamless movement.


You can also toggle controlling the elbow movement with either the default "automatic" rotation or by using a pole target that you move by hand. The pole target is a preferred option for e.g. scenes where the character has their elbows on the table or when the default "automatic" option is just broken.

On top of it all, you can switch the parent of the IK bones and the pole targets. However, a word of warning, animating this is possible but it breaks apart very easily. Do not experiment with this on a project without at least a backup file.



RIG MAIN PROPERTIES - RUBBER TWEAK

Using the Rubber Tweak, you can quickly solve issues that previously demanded reconstructing the knee sections of the rig.


Select the desired Tweak Bone and adjust the Rubber Tweak slider.
You can adjust every tweak bone, be it by moving the slider or moving the tweak bones by hand. Just don't forget that there's only so much that Rigify can do. If the model has bad topology, it will bend and deform badly. Simple as that.

FINGER ROLL BONES
Assuming everything works correctly up to this point, you can scale the orange finger bones down to curl them up into a fist or to open the hand up. Normally creating a system like this is extremely time consuming, as you have to add a constraint to each individual bone.

ONLY FOR BLENDER 3.X - Modifying Rig Layers - adding/restructuring/removing
THIS PART ONLY APPLIES TO BLENDER VERSIONS BEFORE 4.0
The overhaul of bone layers into bone collections forced Rigify to upgrade to the new system. The new rigify script for rig UI is impossibly more complicated to work with, meaning this entire chapter is outdated for 4.0 and up.
On the other side, adding bone collections to Rigify via the metarig is comparatively very easy. This will get its own chapter soon.



If you made a bunch of custom bones and wanted to sort them separately from other ones, I recently discovered a way to modify the script responsible for controlling the Rig UI.

Once generated, the rig comes with its own rig_id that can be seen in its Custom Properties and a script called "rig_ui.py".



  • The script controls the newly added Rig Main Properties and Rig Layers (right viewport sidebar ---> Item)
  • The rig_id tells the script to which rig it should be applied

Adding on top of this system is surprisingly easy.

Finding the script
First, open the Text Editor and select the rig_ui.py file.


  • If you see more than one script (e.g. rig_ui.py.001), it can be caused by having other Rigify rigs in your project or having generated more than one rig.
  • If you can't tell which script is for the rig you're working on, compare the rig_id as stated above. That and run each script one by one and check if the Rig Layers pop up.
  • If none of the scripts work for your rig, there are two ways to solve this:
    • copy-paste the rig_id of your rig to the rig_id of the script
    • create a simplified version of the Rigify UI with only the Rig Layers (more on that later)

Feel free to rename the script to something akin to "character_rig_ui.py", it shouldn't cause any errors and will make finding it easier in the future.

Editing the Rig Layers script

Go to the very bottom of the script and start scrolling up, you'll eventually find a section that looks like this:





BOUNDARIES OF THE RIG LAYERS CODE

Between these lines of code:

def draw(self, context): layout = self.layout col = layout.column()

and

def register():

lies the code responsible for Rig Layers.




RIG LAYERS CODE EXPLAINED

row = col.row()
is used to make a new row. If you make more than one layer in one row, they'll be put next to each other (example, Face (Primary) and (Secondary))

row.separator()
is made to make a space between the rows. Spam it together with row = col.row() to make large spaces between rows (as seen in the example at the end)

row.prop(context.active_object.data, 'layers', index=0, toggle=True, text='Face')
is the entire layer.



MAKING A NEW LAYER

It's just a matter of copy pasting these three lines of code and editing two variables - the index and the name of the layer.


The number of the index translates to the Layer of the rig as seen in the rig's Object Data Properties, starting with 0 and ending with 32.
The text bit is self-explanatory.

You can put the code between any of the preexisting layers, at the very top, the very bottom, however you please. Make sure not to make any spelling errors!!!
You can also remove Layers by simply deleting their code.

Example of new rig layers with big spaces:


The changes will only apply once you run the script.

I broke/lost my script!

In case you completely break the script or it somehow gets lost, assuming that the rigs are identical in structure, you can always make a new one by generating a new Rigify rig. Then you simply change the rig_id and you preserve all of the IK/FK functions and the Rig Layers.

I just want the Rig Layers and nothing else!

If you only want the Rig Layers themselves, the ability to visualize the layers without any extra bells or whistles, you can!

Since the original rig_id is no longer needed, you can rename it to whatever you want, for example "char_rig".

Create a new text file (in Blender, don't mistake this with Notepad or anything) and make sure it ends with .py (so you're 100% sure it's supposed to be a script that has to be run). Once you've done that, copy-paste the following code. It's basically ripped straight from the original Rigify rig.

Parts that you have to rename are called XYZ.

  • VIEW3D_PT_rig_layers_XYZ - to your character's name (pure text without any symbols)

  • return (context.active_object.data.get("rig_id") == "XYZ") - to the rig_id you chose for your rig

import bpy ################### ## Rig UI Panels ## ################### class RigLayers(bpy.types.Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_label = "Rig Layers" bl_idname = "VIEW3D_PT_rig_layers_XYZ" bl_category = 'Item' @classmethod def poll(self, context): try: return (context.active_object.data.get("rig_id") == "XYZ") except (AttributeError, KeyError, TypeError): return False def draw(self, context): layout = self.layout col = layout.column() ### ADD LAYERS HERE ### ADD LAYERS HERE def register(): bpy.utils.register_class(RigLayers); def unregister(): bpy.utils.unregister_class(RigLayers); register()


That's it!
APPENDING THE RIG
The rig is stuffed with lots of different parts that are making it work. In order not to make the Outline hardly readable and easier to maneuver around, consider moving all different objects to their respective collections. There's also a good reason for doing it which is addressed later in this chapter.

Make a one main Character_Name collection and put everything inside it. That includes the Widgets collection.


Once you're done, select Scene Collection (so the character isn't imported inside a random folder) and go to File -> Append.

When appending, open the side bar and disable Localize All. It's a little tough to explain, but the gist of it is you'd be unnecessarily increasing the file size of the project. By localizing you'd be duplicating all the assets instead of just reading them from a separate file. Unless that's your goal, like packaging a character into a new file, I don't recommend it.

Go back and enter the Collection folder. Simply select your main Collection, append it and you're done!
Appending a collection will automatically append every collection that was inside it, preserving hierarchy and keeping things neat and tidy. That includes the Widgets and its hundreds of custom bone shapes.

Models that are appended without the Widgets folder/had the Widgets folder deleted by the author will litter your Outliner with bone shapes. Don't delete the Widgets collection.
Also consider putting the metarig inside this collection so that anyone more experienced can improve upon your rig!


Done! This technique should help keep things as clean as possible.

tl;dr - put everything in one Collection - the rig, the meshes, the Widgets - and append that.
Last words + some B-Roll

Rigify can be used to bring any kind of creature to life, be it a human, a dog, a shark (no kidding, there's a metarig for a shark), trees etc. Due to the way it's scripted, custom bones aren't a problem.

If you're willing to put in some, work, you can make an advanced rig for just about any SFM model, asset ripped video game characters, your own original works.
Its flexibility allows for easily adding whatever it is you need to have control over in animation. It's relatively reliable and anyone can make it work if they try hard enough.

However, let's not forget that Rigify is not a complete replacement for manual work. You will find yourself adding on top of the generated rig since it can't do all the job for you. At least, not yet.


In any case, I hope I helped. Have fun animating!
Patch notes
14.02.2025
  • A few small fixes + highlighting Rigi-All in the "recycling vertex groups" chapter

22.08.2024
  • Updated multiple chapters for Blender 4.0 and up
  • Added new chapter with fullbody metarig examples + a few new ones to the face one
  • added information and troubleshooting on the Upgraded Face Rig in the face rig chapter
  • simplified some information in chapters to be less long-winded

9.03.2024
  • Added the Rigi-all addon

5.09.2022

  • Elaborated on mocap retargeting
  • Mentioned Sharp Edges when Merging by Distance
  • Updated multiple chapters regarding rig generation, troubleshooting etc.

19.12.2021

  • Overhauled the entire guide from top to bottom, adding a ton of new images, introducing gif images, erasing entire chapters and updating information based on what I had learned over the year of 2021.

29.03.2021

  • Talked about AutoRig Pro a bit
  • Updated the Rig Appending section
  • Updated the Rig Generation and Rig Troubleshooting sections

22.03.2021

  • Updated the mesh/rig preparation section with new info/experience
  • Updated the rig troubleshooting section
  • Replaced some pictures


7.11

  • Added the Cleaning up the automatic weight painting section

11.10

  • Cleaned up the new section
  • Added a warning about the finger rolls in the "Rig Generation" section

10.10

  • added "Modifying Rig Layers - adding/restructuring/removing" section

13.08

  • added "Merge By Distance, separating clothing" section
  • expanded upon the "Adding clothing to the mesh" section

3.08
  • added "The finger roll bones roll fingers sideways" to the RIG GENERATION TROUBLESHOOTING section
  • overhauled the whole "merging meshes" section of the tutorial
  • added metarig examples

24.07
  • reworked the IMPORTING THE RIG TO OTHER .BLEND PROJECTS topic, making it into its own chapter and added an easier way of appending files
  • exchanged a ♥♥♥♥ joke for something more informative

28.06
  • added a tidbit about chin. bones in the FACE RIG section

21.06
  • expanded upon the IMPORTING THE RIG TO OTHER .BLEND PROJECTS topic of the Using the Rigify rig section

19.06
  • added How the hell do I weight paint the teeth? to RIG GENERATION TROUBLESHOOTING section

15.06
  • expanded upon the RIG GENERATION TROUBLESHOOTING section
  • added "Merge meshes using the Merge/Join tool"
49 Komentar
cat 5 Apr @ 11:27pm 
janfon you're a real one
Ash 2 Des 2024 @ 7:25pm 
im trying jan, but i seem to be way too stupid for blender and cant wrangle it to work
Janfon1  [pembuat] 2 Des 2024 @ 12:26pm 
@Ash Abandon SFM, become a BlenderGod :sealdeal::sealdeal::sealdeal:
Ash 2 Des 2024 @ 9:20am 
this is probably too far fetch of an ask, but would it be possible you could make the vermintide models available for source filmmaker?
mustard !! 13 Okt 2024 @ 3:08pm 
absolutely love this guide, props to the author!
Janfon1  [pembuat] 12 Sep 2024 @ 1:44pm 
Use RigiAll from the video if you want to quickly convert rigs to Rigify, I think it'll work fine with source engine rigs
xelob 12 Sep 2024 @ 1:14pm 
Does this work with valve bones rig ?
Janfon1  [pembuat] 22 Agu 2024 @ 7:56am 
UPDATE
Updated multiple chapters for Blender 4.0 and up
Added new chapter with fullbody metarig examples + a few new ones to the face one
added information and troubleshooting on the Upgraded Face Rig in the face rig chapter
simplified some information in chapters to be less long-winded
Mehrshad 8 Jan 2024 @ 9:26am 
very well made guide nicework