I always enjoyed rigging characters and having to work on your own character allows you to experiment and try new things that in the production setting is usually too time consuming. With Ben I tried to test a few new things with deformers and the way the whole rig is laid out. But first, lets take a look at the character.
Analyzing the character
The way I start rigging any character is first analyzing the challenges it presents. In Ben’s case I put the following list down:
He has one large round shape for his body. Extra controls for the jiggle will be needed.
He has short legs. A way to prevent ‘IK popping’ will be needed, also stretch controls.
Extremely short neck which is also very rigid due to the suit design. He will need to turn his head without the need to turn his whole body.
Gadgets on his body will require some extra controls.
His body is soft and will require soft collisions if required.
If there are lots of controls, character GUI and Invisible Rigs should be created for easier picking of the controls.
He will need to be optimized for fast manipulation, close to real time as possible.
Having put the list down I start breaking things down into segments: spine, arms, legs, face, details. Lets start with the main body and spine.
Body & spine
The main spine is a hybrid with both FK and IK controls. FK controls are the base that also drive the IK controls. It allows to easily pose the puppet and use FK for the most typical scenarios and IK for fine tuning the shape. If the character is trying to move hips independent of his shoulders the IK controls will allow this. IK controls also allow the spine to squash and stretch to achieve a more cartoony look.
For the belly a jiggle control was added. I used what I simply call a ‘dropoff’ deformer. It allows to animate the center position of the deformation, region of deformation and curve falloff shape of the deformation. This basically means that with only one jiggle control we can shape the jiggle anywhere on his body differently. So it can be big or small or different shape for different situations. I wrote the deformer in Houdini VEX and used it on various parts of the rig.
For fixing various deformation issues especially around the shoulder area, I used Pose Space Deformation (PSD). PSD allows to shape the geometry based on orientation of the underlying bones and especially the shoulder can cause problems. So when he lifts the shoulder up, PSD is used the preserve the geometry’s volume.
The character has short legs and that can cause some problems when creating the puppet. The most common problem that arises is ‘IK popping’ when he walks, which simply means that his knee motion is not smooth when it moves from straight to bend position but rather jumps. To solve this issue I used two things in the IK setup.
First, stretchy control that allows the leg to always be straight whether it is understretched on overstretched. This allows the legs to stretch to the desired length without the body dragging the leg around and also the leg to retain its straight shape if the body comes closer to the ground.
Second, soft IK option which also works with stretchy control that works as a dampener for ‘IK popping’. The amount of damping can be animated so it can be set per pose requirement.
The foot has a simple reverse foot setup that I usually use. Nothing fancy, I try to keep the foot with minimal controls. In the past I created all sorts of foot controls which allows banking, automatic alignment with the ground, etc… only to find it causes more problems when animating than not.
Arms & Hands
Arms have a very similar setup as the legs with addition of two ‘dropoff’ deformers. One for the upper arm and one for the lower arm. These allow to achieve a more rounder or bendy arm shape if necessary.
For the fingers I have a simple two layer control system. One for broad shapes (one slider for the whole finger curl for instance) and one for fine detail shapes. The second is basically per finger segment control which allows to shape the fingers into any shape required.
Since the character has a short neck and is hidden inside the suit I decided to split it in three different segments.
The neck bone rotates the suit neck region as well as the head. The head bone rotates the whole head. The head deformers rotate and deform the head with deformation falloff from neck to top of the head. All three together allow to create a smooth deformation transition from shoulders to top of the head if the character needs to turn his head without turning his whole body.
The dome helmet also has deformation controls available so it can be stretched or shaped as required.
There are a few gadgets or character props on the character that need some extra control in order to manipulate them: jetpack, belt, front button panel… There are two ways to approach this problem. Hand animated or solved by solvers. Whenever dealing with character props such as these I usually like to have hand animated controls. It is usually way faster to get the desired look and I can easily pose them any way I want. With solver it is sometimes hard to control how things will look.
Most of these are captured the same way to the bone system as the body and then a layer of deformers like ‘dropoff’ deformer are put on top of it. That way they move with the body but can also be moved away from the body if necessary.
Body soft collision
When the arms gets close to body, some form of collision is required. This is where solvers come in. Houdini has the Vellum solver which works great for things like soft collisions. It is easy to setup and can be integrated directly into the rig, so the simulations can be made while animating.
Invisible rigs & character picker GUI
Houdini has one great feature for animating the puppet: invisible rigs. This feature allows to hide all the controls on the puppet and simply pick the geometry directly to pose the puppet. It’s a very clean way to animate. I am still testing the invisible rig system but so far I like it.
I also use the character picker GUI a lot. Sometimes it is easier to pick controls on a 2D image or have a button to pick multiple controls at once which GUI is great for.
One of the things that is always a problem with complex rigs is speed when animating. Having the puppet move in real time or close to real time is key. Since this character has a lot of controls and Vellum solver on top it is impossible to be real time with everything working at once. Thus I created a few optimization options that can be turned on and off when animating to get better performance.
For posing the puppet a lower resolution geometry is used which looks almost identical to the original but is way faster. Various detail deformers like gadget deformers, face deformations, pose space deformations… can be also turned off temporarily which improves performance.
Next time in part II: the face rig!