Rigging a 3D character and solving common problems
This is some text inside of a div block.
This is some text inside of a div block.
Oct 10, 2023
How to make a rig and put controlls in Maya and pass the animation to Blender
Rigging a character is an essential process in 3D modelling and animation that involves the creation of a skeletal structure called Rig, that allows us to animate and control the character realistically.
Thanks to rigging we will create fluid and natural movements for our 3D characters and avatars. Furthermore, this process saves a lot of time in the production of future animations, as the same rig can be reused for different projects.
In this document we will briefly explain how to make a rig, put controls on it in Autodesk Maya and pass the animation to Blender, both for rendering and for more functional use. In addition, we will explore the different constraints and the node editor to find rigs and understand what they do.
Blender (only to export the animation and rig correctly)
How to rig in Maya, first steps
When rigging you must have order, do not take the next step if the base is not solid to avoid losing work. To create a bone you must go to Skeleton>Create Joints. By clicking on the viewer you will create the bone.
If they look too small you can modify their size in two ways:
You can modify the global scale with Display>Animation>Joint Size
You can change the scale of a specific bone from Channel box> Radius
To see the bones between the mesh go to the top of the viewer, Shading> X-Ray Joints:
To make a chain of bones just click, each time you click you will make a bone.
To move an isolated bone within a single chain, press D and you can move it. Press D again to return to the normal mode.
Always take into account the orientation of the bones to avoid future problems, the most normal is that the chain of bones is linear. If you need it, you can modify it in Skeleton>Orient Joint.
NOTE: Beware of bone rotations. For a bone to be correct in a generic rig it must NOT have rotations. The orientation of the bone is the one that must have the value!
Once we have the bones positioned and correct we have to bind the mesh with the bones, for this purpose Skin>Bind Skin.
In Bind Mode we choose how we want the bones and bones to pick up the weight. If we want that in a mesh all the bones act by hierarchy, by the selected ones or by object hierarchy.
In the Bind Method, we have the option to select between distance, hierarchy, heat map, or voxel. We recommend selecting Closest distance, as it is the most common choice.
In Max influences we can measure how much influence we want as a maximum, this can help to have a tighter weighing in some cases and require fewer fixes.
Finally, we can choose which deformer we want. For the rig we are talking about we will use always Skin Cluster.
For more information about Rigging in Autodesk Maya, clic here!
How to use Paint Skin Weights
To adjust the weights select Skin>Paint Skin Weights.
Here we can see the names of the bones that influence the mesh. Below the mode, to paint bones you must always be in Paint.
Replace. Changes the weight of the bone by the value you indicate.
Add. Adds the indicated amount of weight to the already existing one.
Scale. Subtracts the indicated amount of weight from the existing one.
Smooth. Smooths the weighting between vertices.
Flood. Used to apply the change to the whole zone or selected zone.
Here you can change the color of the weighing values, it is customizable:
So… with these steps we can make a basic functional rig for both avatars and other objects. If you have many bones but only want to work on a couple. You can leave them anchored to work more comfortably.
In each vertex there will always be a value of 1 of heavy, vertex can’t have less. Maya will redistribute this rest weight among the bones that are close to her or that are not blocked.
The first bone can receive changes in its weighting at the vertices. The second one cannot. Look this visual example!
If we block something its value will not change even if we modify it in another bone. However, if we use a value of 0.5 in one bone and the other is free. 1-0.5=0.5 Maya will add that remaining value to the other bone in the vertices.
To select only one area and work on it, select the vertices. A trick to make a faster and more controlled selection is to select a vertex or several of them and press Shift+> to select the neighboring vertices or < to deselect the last vertices.
Want to know more documentation about Paint Skin Weights? Find the info here!
How to put controllers in our rig
When creating the controls and how our rig will behave, we can choose between IK or FK.
FK. Each controller operates according to the hierarchy of parent and child controllers.
IK. In Maya there is the Handle and the Spline Handle we will focus on the first one since the second one is for specific cases.
To attach bones to a controller we have the constraints. There are many types and each one has numerous options that we will have to adjust according to the case.
Parent. Creates a link between the translate and rotate values.
Point. Creates a link between the translate and rotate values.
Orient. Creates a link between the values of rotate and orient.
Aim. Join rotation but make the controller the reference point where the bone is directed. For example, the eyes.
Pole Vector. They are used in IK to generate knees or elbows for example. The line that creates the IK has a direction and with this constraint the controller can change the direction of the IK.
Motion Paths. Here we have useful tools especially for making animations that follow the flow of a curve.
When we have the constraint we will have an attribute that allows to activate it =1> or deactivate it =0.
NOTE: To make a constraint the order of selection must be:
First the parent then the child. First who will rule over the other. This will generate a child constraint of the second one selected.
For more information about constraining objects click here!
How can I create my custom controllers in Maya?
We usually use curves to generate the controls as they are very modifiable. To set the curves menu and have more visual shortcuts go to the top bar and select Curves/Surfaces.
In this example we have 3 curves that we want to join into one. We need their shapes to be joined.
To do this:
We create an empty group
Be sure to clear the history and freeze the mesh.
In the Outliner tab at the top, Display>Shapes.
Select all shapes and the empty group
Go to the Mel bar, at the bottom of the screen, and type: parent -r -s. Press enter and it is all.
In order to understand this part of MEL we have made a little explanation:
Parent -r (-relative) is relative positioning. Parent -r will change the object’s parent while leaving the object’s local transform unchanged. If you open the Edit > Parent options box, it's the same as the Preserve position checkbox.
Parent -s (-shape) used to change the parent transform of a shape. So it unifies them in the same transform.
Here you will find more interesting information about MEL!
Return to display and uncheck shape. You will now have a single curve transform containing the 3 shapes.
If you want to change the curve color CTR+A to change channel box to attribute editor go to Object Display>Drawing Overrides. Check Enable Overrides and change color to RGB.
For the end you only have to choose the color of your choice, for example green. Remember that this only change the color about one shape.
How to position the controls correctly on the rig
We must take into account that the movement that we apply to the bone from the controller will be done from a pivot point. To have clean options and to be more comfortable when animating we should have everything in freeze in the correct position.
To start the controller must be at 0,0,0 and freeze. Relate the controller to the bone. Select the controller, then the bone and press P.
Once there set the controller positions to 0 unpair with Shift+P. Reset the controller positions and now it will be in exactly the same position as the bone and the pivot point in its correct place.
Note the correct orientation of the controls. The left and right side cannot have the same direction (or rather it should not for convenience).
As the controllers cannot have any variation in their position, rotation and scale while in the initial pose the solution is simple.
The hierarchy will be in an empty group with pivot at 0,0,0 and within the hierarchy of arm controls, in this case.
In the group we put -1 in Z so that the orientation of the controllers is correct, thus creating the controls for the opposite part of the rig faster and with correct orientation.
Common problems and how to solve them
How can I copy the weights to another rig?
✅ If the rig (bones and geometry) is the same or shares great similarities with another one you want to make you don't have to start from 0. To copy the weights from one geometry to another just go to Skin>Copy Skin Weights. In Influence Association1 select One to one.
Select the geometry with the correct weights and then select the one you want to copy them to. Click Apply and you are done.If there were some differences the copied weights will have to be corrected but only in the areas that have differences, you save time.
When I make a constraint the bone moves
✅ It may be that the bone has rotations or that the controller is not in the correct position. If everything is OK and it is happening with an Orient open its settings and press Maintain offset.
If I scale my rig with controllers it breaks down
✅ Being a more complex system, scaling the "root" control is not enough. It is necessary to unify the scale and for that create a global scale.
Depending on the complexity of the rig, more or less utility will be needed. For a basic rig it would be enough to unify the scale of the bones with the "root" controller.
For that create a group with the bones inside and make a constrain scale selecting the root controller and the group with the skeleton. That should be enough!
Rig Maya to Blender: things to keep in mind
It should be noted that not all connections can be passed from Maya to Blender but the weighting of the bones and the hierarchy can. To pass an animation to Blender see this documentation.
Another issue to keep in mind is that Blender has different Axis. Up axis in maya by default is Y but in Blender is Z.
To avoid possible problems in Maya you can change from Up axis Y to Z. To do this go to the bottom of the screen and click on the doll with a gear, it will open the Preferences menu>Settings and change the option.
To create a good rig, order and cleanliness must be maintained. Carrying over errors from here can hinder the animators' work and limit the work of the animators.
This guide is very basic when it comes to creating a Rig with controllers, but it is the basis for scaling up little by little.
Animation Lead and Environment Artist
Passionate about 3D work since childhood, rigging as my main passion