Overview: Automatic Rigging

To date, creating a rig for a model and assigning the correct blending weights has been a manual process. This rig is required to further animate your model, and is therefore a crucial step in the animation pipeline. In this overview we look at whether it is possible to automate this phase, which would be a big step forward in accelerating the animation pipeline.

Rignet

Automatic rigging is not a new phenomenon. There are many programs that have an option to rig your model automatically. Unfortunately, these programs are only suitable for characters with a human build. And it is often still required to manually indicate the most important parts of your model (shoulders, knees, etc.).

The latest breakthrough in automatic rigging that does not have this limitation is a technique called RigNet. RigNet uses machine learning to automatically predict the correct rigs and automatically assign blending weights. The architecture is trained on different types of models, so in theory any type of model can be rigged.

Architecture

RigNet works in 3 stages: the joint detection stage, the connectivity stage and the skinning stage.

Joint Detection Stage

The joint detection stage predicts where the joints should be placed. One starts by looking for the surfaces that are most relevant to place a joint. Vertices are chosen on these surfaces to fuse together to form a joint. After this, the probability is calculated for each pair of joints that this pair belongs together and should therefore be connected together. With this information one can then form a skeleton (= connectivity stage). Finally, the skinning stage ensures that each vertex is given a skinning weight. This is done by looking at the relationship between the vertices and the created skeleton.

Use

RigNet is available in the form of a Python script and in the form of a Blender add-on. Both require 2 models, the original model that you want to rig and a simplified version of your model, which contains less than 5,000 vertices. This simpler version is used to perform all calculations. This is necessary because otherwise the program may experience memory problems due to an overload of vertices information, and your PC may crash. When you use the Python version, the created rig is saved in a text document. To get this information into a .FBX file, you use an additional script that, with the help of Maya, converts the rig.

Results

The results RigNet produces gives us a more complete picture of what it is really capable of. Different types of models were tested, each with a low level or detail version and a high LOD version.

Realistic Humanoid Rigs

The results of rigs for realistic humanoid characters produce quite accurate rigs. Joints are placed in the correct locations and no obvious anomalies are visible. RigNet has no trouble predicting the skeleton of the model.

Stylized Humanoid Rigs

When we look at characters that do not follow the proportions of an average human, we notice that RigNet has some problems. In the low LOD version, RigNet is not able to detect both legs. Also it has no idea how to rig the model’s head.

Animals

Although RigNet researchers themselves use a cat and a fish in their showcase models, our findings are completely different from what they show. The cat’s low LOD is the most accurate of the four rigs. But we can still notice that something has gone wrong with the hind legs, and RigNet also thinks the tail is not important enough to place joints. In the high LOD version we tried to create a rig that takes into account the tail, which in turn causes problems in the body itself. The rig that was made for the fish is completely wrong. RigNet is unable to identify which parts are most important to place joints in, probably because there is a constant number of vertices across the entire model. There are generally no places that contain many more vertices than other places, which can cause problems.

Odd Body Structures

RigNet only works for models that are symmetrically constructed, as 1 half is calculated and then copied to the other half. This can be seen in the top example. The right arm’s joints were placed outside the model because they were mirrored from the left arm. Models that have a special physique are therefore not always suitable for RigNet.

Game Models

To ensure that the models chosen did not pose the problem of inaccurate rigs, RigNet also tested with models taken directly from existing games. These results confirm the results we obtained previously. So the models are not the problem.

Conclusion

RigNet is a big step forward towards automatic rig generation. In most cases, RigNet is able to detect what type of model it is, and then creates a rig that broadly matches what is expected. But unfortunately the results obtained are not good enough to be used in a professional environment. RigNet shows too many deviations that need to be corrected manually. If you only need simple human rigs, RigNet may be considered as an option. What could possibly help is to have the trained model further trained on self-made models and rigs. In theory, this will create more accurate rigs for the type of model you personally need.