Blender Guide

Rigging with Rigify - crash course + fixing errors for Blender

Rigging with Rigify – crash course + fixing errors

Overview

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.

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. 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.

Why bother using Rigify when one can use Mixamo?

The answer is simple. Mixamo was never intended to be used for anything beyond mocap in the first place.

Mixamo and other “generate rig to a model” services are fun to use, especially since they come with their own library of animations perfect for cheap dancing Shrek animations. You can import the character file to Blender and have a freshly generated rig to work with. However, they are frankly quite limited when it comes to what can be done with them if you’re interested in more control over your character model. The only big advantage is their animation library, but what’s the point of those if you’re going to animate the character yourself?

RIGIFY DOES WHAT MIXAMODON’T

I’m basing my knowledgly solely off of Mixamo, since that’s what I’d had the pleasure of using

  • You can only create a singular simple rig.
  • Beyond the initial position of knees, elbows, head etc.. You have no options for custom bones. Want a pair of breast bones and a tail for your hot furry anthro gf? No chance, pal. Anything beyond a simple human shape will not work.

    Rigify, on the other hand, can be used for rigging even the wildest of character designs.


    Let’s use a Gecko model from Fallout: New Vegas as an example.


    Mixamo handled it surprisingly well. However, there are issues. There are multiple weight paint related problems such as with the hips and the shoulders, ending up with a lot of stretching and nasty mesh deformations. Besides that, the rig lacks bones for the tail and toes.

    Rigify, in the meantime, can offer a much better result despite the fact the character is far from the standard t-pose. The culmination of generated IK, FK, tweak bones and arguably better automatic weights gives a lot more control over the model.

  • Can’t exactly make any corrections by hand if anything messes up. While you could arguably fix stuff like the horrid wrist rotation in Blender, that’s not exactly the point of automatic rigging. You want to cut down the manual work as much as possible.

  • With Rigify you can place all bones by hand, study and fix any issues by being able to return to the metarig at any point in time. Quick and efficient, not nearly as time consuming if you can wrap your head around it.

    LAST BUT NOT LEAST…

  • The rig from such sources has no Inverse Kinematics, no additional tweak bones, no custom shapes, is overall unprepared if you’re looking for something animation-ready. I’m also talking about rigs of models imported from Source Filmmaker, Unreal Engine, Garry’s Mod etc.

    Once you use a fully fleshed out Rigify rig, you’ll never want to go back to the primitive ways of rotating each bone of the limb by hand. Get ready to become addicted to Rigifying every single mesh you have in your arsenal.

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 and was mostly displeased with them. Stuff like missing IK/FK switches, properties disappearing after selecting them (???) I can only assume being a problem with the user not utilizing the software to its full extent. However, concrete things like need to download a separate rig_tools.zip and unintuitive bone naming conventions does strike me a bit odd. But hey, same could be said about Rigify often being lackluster (which is why I’m making this guide) and DEF-f_index.01 being a thing.

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.

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 necesary.


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.


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.

If you notice any shading issues occuring afterwards, I noticed that disabling Auto Smooth fixes that issue.


Separating clothing

Recently discovered a neat tool that makes separating the mesh parts a lot easier.


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, toenails
  • etc.

It’s best to merge the head and body mesh together and hide everything else except for the eyes/teeth/tongue (needed for the metarig). The clothing and accessories will be applied to the mesh later as seen in the following chapters.


Having hidden everything unnecessary for Rigify, now you should be ready for preparing the metarig.

Preparing the mesh – UV maps, merging meshes

If your character consists of separate meshes (body and head, fingernails,), the final result will include these meshes disconnecting at the seams. That’s because Automatic Weights are being applied to each mesh separately, the code doesn’t see them as a single object despite selecting them all at the same time. They must be all merged together.

  • Restore the pose to the default position (enter Pose Mode, select all bones (optional: press alt+h to unhide them), alt+g, alt+s, alt+r)
  • 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”.
  • Merge all body parts in Object Mode by selecting them and pressing Ctrl + J.

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

One final step is to connect the vertices of joined meshes. If you won’t do this step, the problem will persist and in a worst case scenario Rigify will spit out your metarig, claiming Bone heat weighting: failed to find solution for one or more bones.

  • In Edit Mode, either select the disconnected vertices by hand or select the entire mesh and use Merge by Distance (alt+m (or going to Vertex -> Clean Up – Merge By Distance) (called Remove Doubles in Blender 2.7))

    Start off from the default 0.000 which should generally work and slowly increase the number until the vertices are all connected. Make sure to double check if you didn’t accidentally merge too many vertices, resulting in visual glitches. Also triple check if you by any chance selected more vertices than necessary somewhere else on the body. Avoid any visible deformations.

    The rest of possible Rigify error solutions is in the section further down the guide.

Preparing the mesh – preexisting weight painting


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.

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.

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 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.

1. 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

Step by step rigging tutorial with pretty images and short, simple explanations for some of the gimmicks that come with this tool.


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). If you haven’t done that already, please reconsider reading the MERGING MESHES WITH BOOLEAN MODIFIER section.
    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.

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

Press N to open up the right sidebar and Tools select X Axis Mirror. Without it mirroring the bones will be a pain in the ass.


Let’s explain the workflow of setting up the bones. Forget about the head for now, just leave it be.

  • You can switch the Pivot Point back to Bounding Box Center when editing, we only needed it to place the armature and scale it. Now it’ll only make moving the bones difficult and irritatingly hard.

  • 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.
  • Make sure the finger bones are kept in relatively straight lines without moving to the sides.. The cleaner the rig looks, the easier it becomes for the tool to generate.

  • 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 cheeky bugger’s.

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

  • The shoulder bases always stick out, adjust them by delicately pushing them inside the mesh and slightly lowering them. Follow the clavicles on the mesh if it’s nude possible.
  • 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 (TAIL, FACE, TOES)

Manipulating the rig is quite simple, actually. It’s just a matter of understanding how this tool works behind the scenes.

It’s not black magic, it’s Python.

Certain bones of the rig are given specific Types. Each type of bone (or chain thereof) tells the Rigify script how the bone should bevahe, what set of IK and FK it should receive etc.

You set the Types by entering Pose Mode and selecting specific bones.

For example – limbs.super.finger


It needs a set of at least two bones (starting with the one I selected on the image). It means you can delete the last bone and still have a functional finger rig!


You could get rid of all the fingers except for this one and it would still generate a functional rig AS LONG AS the bones are not disconnected from each other and have appropiate Types.


Using this knowledge you can apply a tail to your hot furry anthro gf and make it as long as you’d like! (you only need to apply a Type to the first bone of the tail, not all of them)

WARNINGS REGARDING ADDING EXTRA BONES

READ THE OFFICIAL RIGIFY TUTORIAL PAGE
You add different Rigify bones in Edit Mode under the Armature tab.

For more information on what you can do with each bone type, go to the official Blender tutorial page.[docs.blender.org]

WORK ON ONE SIDE, THEN SYMMETRIZE IT TO THE OTHER.
No need to double the amount of work, use the quality of life tools Blender provides. More about Symmetrizing below.

ALWAYS REMEMBER TO PARENT THEM TO APPROPIATE BONES OF THE METARIG, OTHERWISE THEY WON’T MOVE WITH THE RIG.
If you’d like to add toes, parent them to the Toe.L/Toe.R. If you’d like to add a tail, parent the base to Spine etc

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.

DON’T BE LAZY. NAME THE CUSTOM BONES.
The tool needs this and YOU need this as well.


For the tail, it’s best to name the first bone “Tail” and leave the rest to Blender. As you extrude the bones, it will automatically name new ones:

Tail, Tail.001, Tail.002…

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

Small letters instead of capital letters work as well.

toe_little.l
toe_little.r


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 (toes to Toe.L, toes to Toe.R etc.)

Just a quick hint – if you’d like to add singular bones that control a part of the body, I suggest basic.copy_chain with Control and Deform selected in the Rigify Type settings. You’ll thank me later.

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 cannot keep any part of this rig, it must be either completely intact or removed entirely.

Bones are hidden in separate layers. Those layers are what allows you to hide parts of the rig in the first place.

The first layer is dedicated solely to the face. Select it.


Once you have, select the entirety of this rig and delete it. Done!


Hold shift and select layers one by one (or slide on top of them while holding LMB) in order to make them all visible again.

HOW TO ADD TOES


None of the human metarigs have bones for individual toes, so you will have to add them yourself.

I made toes work by creating limbs.super_finger chains made out of just two bones. Three is just way too much for this little space, it’ll confuse Blender and result in crappy automatic weight paints.
Also beware that toes should not overlap each other. The weight paint will stitch them together if that happens. If that’s the case, edit the mesh by hand by moving the vertices away from one another. Same problem can happen with the clothes.


Make sure each toe is connected to the main toe bone. Name them using side indicators. Once you’re done working on one leg, select all bones in edit mode and click “Symmetrize”. Blender will mirror those bone and automatically name them “Bigtoe.R” etc.

Of course, check each individual bone before adding a new one by generating the rig and Armature Deforming it with Automatic Weights. If something breaks, try making them shorter, placing them further away from each other. You can safely delete the rig, go back to the metarig and start making adjustments.

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. Just like John Romero and the audience of Daikatana, you’ll make it your ♥♥♥♥♥.

Rigify’s facial rig is both an absolute work of art and trashcan material at the same time. It can produce a working rig for the face even for something so bizarre like the examples shown below. At the same time the result can be a mishmash of stitched together lips, barely working jaw and broken eyelids with disconnected eyelashes.

The weight paint of the face will unfortunately always need some manual tweaking.

It’s merely a matter of following a couple rules.


However, ask yourself if the rig needs something this advanced. There’s no point in trying to stretch this tool to its limits when you can add a jaw and a pair of eyes yourself.
Rigify is flexible enough to allow the user to edit it afterwards. Or maybe it will be easier to use shape keys instead (or the model already has them, always check if it does).

If you’re not interested in the face rig, go the the Adding/Removing Bones section to learn how to delete it.


Underneath the fancy UI lies your regular rig. It’s just a matter of finding an appropiate bone, e.g. connecting a jaw bone to “head”, eyes to “head”.

HOW TO SET UP A FACE RIG (as foretold by the official 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.

    I found an interesting example online. For whatever reason the author left the entire face rig on the model and despite that Rigify still managed to make a full, working rig with automatic weights. He simply hid the face bones and everything worked fine.

  • 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 turning off X-Axis Mirror, selecting all bones except for the one called “face” and adjusting their position.

  • 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 suck it up and just edit the weight paint by hand in that case.)


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

Metarig / final rig 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.


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.

If the finger roll looks like this:
You might have an older version of Rigify. Please update the addon if you haven’t already. I personally never stumbled upon this.

ENABLE DEFORM FOR MCH-EYE BONES AND teeth. BONES

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.

  • When in Object Mode of the rig, search in the Outliner search bar for:

MCH-eye.L
MCH-eye.R

  • Enable “Deform” for each in the Bone tab so they are allowed to transform the mesh.
  • clear all Vertex Groups from the eyes
  • add both MCHs as new vertex groups
  • 100% Assign for respective eyeball.


Done! The stretchy eyeball syndrome should be fixed.

Same situation as with the eyes – make use of the unused bones of the Rigify rig. This time they’re:

teeth.T
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.

Then, find the teeth.T and teeth.B bones in your rig and enable Deform for each. Remember to apply Armature Deform to the teeth. Done!

RIG GENERATION TROUBLESHOOTING

You’ll find most of the solutions here mandatory for all Rigify rigs.

1. Bone heat weighting: failed to find solution for one or more bones

What happened?

Possible causes:

Rig generation related

  • Bones are disconnected from each other, leading to the Python scripting going haywire

Mesh related

  • The mesh has vertices that aren’t merged to anything, resulting in a gap that the tool doesn’t know what to do with
  • Some accessories/clothing/armor/hair are confusing Rigify
  • It’s a DAZ model

SOLUTIONS FOR MESH RELATED ISSUES

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.

As stated before, look into stripping the mesh of as much unnecessary parts as possible. Best case scenario would be going from full outfit to underwear. Everything will be added back either by hand or by using Transfer Mesh Data anyway.

SOLUTIONS FOR RIG RELATED ISSUES

Return to the metarig and look if any, ANY of the bones are disconnected from each other.


If you find one, put them back together by moving them inside each other. Look for more.

At the same time, enter Pose Mode and check any bones you’d meddled with. Perhaps the foot is unparented from the shin, maybe you forgot to add limbs.super_finger to the custom toe bones.

Object mode, ctrl+a, Apply Rotation and Scale, Generate Rig…

If that didn’t solve the problem, look for more disconnected bones. Otherwise, you might be in a situation where you’re forced to work on the rig from scratch.

2. 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 deleted too many bones from somewhere. 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.

3. The weight paint looks terrible

Multiple different variables can cause crappy automatic weights:

  • The metarig is lacking in quality.

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 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. You can try manually tweaking these parts by selecting them entirely using “L” hotkey and assigning weight. Otherwise separate them from the main body mesh and experiment with Transfer Mesh Data (read the Adding Clothing section). This is an issue that will constatly come up and fixing it by hand takes a lot of time and effort.


Check each vertex group if they aren’t overlapping or controlling wrong parts of the mesh.


For example, pieces of the armor are not attached to any part of the mesh. I can tell from studying the model that they’re supposed to be weight painted to the middle and ring finger.

Once you’ve located the appropiate Vertex Group, enter Edit Mode, select the disjointed mesh with “l”, then Assign Weight to it. In this case, 100% Weight is best for armor pieces so as not to make them unrealistically stretch. Usually, though, the general rule is to make it follow the strength of the Weight Paint of the Vertex Group (a.k.a. if upper arm is “yellow”, make the disjointed parts that are supposed to be connected to it also “yellow” (somewhere around 0.7-0.8 Weight).

6. The finger roll bones roll fingers sideways

Metarig by default chooses to do the rotation axis Automatically, but you can edit this yourself.

Inside the metarig, select in Pose Mode the limbs.super.finger bone and the option is present there. Then update the rig by generating it again with made changes.

Experiment with each axis and test it on the rig until the desired bone roll is achieved. I found -X manual to work for all fingers including toes.

Warnings regarding overwriting the rig:
  • Overwriting a preexisting rig will remove any additional bones added to it (for example, adding a normal bone for a backpack to the generated rig) so CHECK THE FINGER ROLLS BEFORE MAKING ANY CHANGES TO THE RIG. Separate them 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 bones afterwards.
  • The rig must be visible, not hidden, when overwriting it, otherwise something bugs out and the rig completely breaks. I was often left with just the root bone for whatever reason.

APPLYING RIG TO THE MESH

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.

It’s fine if bones aren’t 100% mirrored. That’s the mesh’s fault. However, they should be adjusted to avoid any very nasty looking deformations. 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

  • 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.

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 Blender spits out an error, look at the Troubleshooting section.

Cleaning up the automatic weight painting

Rigify’s bad reputation often comes from the fact that people who use automatic weight painting don’t clean it up after.

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-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-upperarm controlling the chest and not just the, well, upper arm
  • DEF-shoulder controlling the neck
  • DEF-spine.005/004 controlling half of the head when only .006 should have any control of the head
  • Not enough weight paint covering the torso, leading it to stretch in awful ways as it’s shared between all the smaller bones.
  • DEF-spine.001 controlling the legs when it should stop at the crotch area
  • 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?

First of all, clean up the most obvious issues like with the face rig. The rest of the body (or at the very least the worst offenders listed above) can be a bit tricky, though, which is why I’d also like to recommend this tip:
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 Open3DLab to find Blender models there, too.

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 two meshes strictly follow the same weight paint with as minimal clipping as possible.

With the meshes prepared, first select the clothing then the rig and apply Armature Deform with Empty Groups.


Next first select the clothing then the mesh the vertex groups of which it’s supposed to copy. Go down into Object -> Relations -> Transfer Mesh Data.

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 stretching.

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, 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 (knee, elbow tweaks etc.)

The amount of options this rig presents can be overwhelming at first. Let’s make sure we know our choices.

1. RIG LAYERS

Select the rig.
Enter the right sidebar using the “N” hotkey and navigate to Item.

Check how each bone works, if the transformations are correct. If there are parts of the mesh that aren’t, for example, following the body, the head, manually tweak them in Weight Paint mode.


You can get rid of FK and Tweak layers to make the display cleaner.

2. RIG MAIN PROPERTIES

It’s generally best not to touch anything in there except for one thing- Rubber Tweak of elbows and knees. These options can be found inside the Tweak Bones for the legs and arms.

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


Select the desired Tweak Bone and adjust the Rubber Tweak slider. Problem solved!
You can adjust all tweak bones by hand to solve other unwanted mesh deformations. Just don’t forget that there’s only so much that Rigify can do. If the model has bad topology, it will bend and stretch awfully no matter what you try.

Modifying Rig Layers – adding/restructuring/removing


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.

How to make Rig Layers from scratch

In case you completely break the script or it somehow gets lost, you can always make one from scratch following this formula. WARNING: It does not recreate the Main Rig Properties tab.

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.

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()

To clarify, change these specific highlighted parts of the script:

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

That’s it!

APPENDING THE RIG – IMPORTANCE OF WIDGETS

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.

Enter the character’s blend file and for the sake of the tutorial, take a look at what’s inside the folder Object. Believe it or not, that’s the amount of work you’ve just been saved from doing.

If you didn’t decide to sort the character files using collections, you can select everything by hand here.


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

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 porn 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”
SteamSolo.com