rigging

B is for Ben: Spaceship rigging by Rok Andic

Rigging props and assets are a lot of fun because usually they are not complex as hero characters and are also great to experiment on. I generally approach them the same way I rig characters and the questions I ask myself before starting the rigging process are:

  • what is the prop/asset supposed to be doing?

  • in how many shots is the asset seen or how much screen time does it have?

The answer to the first question simply tells us what must be provided in the rig. The answer to the second question tells us how detailed and complex those controls must be. In other words if the prop/asset is in every shot it better be easy to animate and control the rig. If it is in only one shot it makes no sense to spend more time on the rig than animating it.

In “B is for Ben” the spaceship is the most important element besides Ben. But for the most part it is not really animated, so I concentrated more on the functionality rather than optimizing it.

Analyzing the ship

The main checklist for the rig was quite simple:

  • it needed to have retractable legs with fine controls

  • it had to have squash&stretch quality for all elements (body, wings, engine…)

  • the cabin glass needed to open and close as well as ‘leg doors’

Legs

I build the spaceship leg rig the same way I would build a leg rig for a character. It has an IK system with stretch controls, twisting, soft ik and all other controls that are usually found in leg rigs. The foot has a few controls required to fine tune the pose but doesn’t have any reverse foot or similar system in it simply because it is not required. In the film the foot only needs to allow the ship to rest on a flat surface and rotate when flying, thus only simple FK controls are used in the foot itself.

Squash & Stretch

To achieve squash & stretch I used a lot of bend deformers that deform the whole ship at the same time and some local bend deformers for the wings, engines and smaller elements to allow overlapping of deformation when animating.

Squashing and stretching the body of the ship causes the legs to become misplaced or out of position when deformation occurs. This is because legs are part of an IK system and thus should not have bend deformers applied to them (which would also cause the feet to not rest on the ground). To correct this, the beginning or the hip of each leg is attached to a position on the ship geometry no matter how it is deformed and basically always sticks to this point no matter how the ship geometry is deformed. This way the leg is always attached correctly to the ship and the IK system keeps the foot on the ground.

Smaller elements

For the smaller elements such as the cabin glass and leg doors I mostly use simple transform SOP tools in Houdini. They are simple to use and get the job done quickly. Order of deformation is the only thing to keep in mind, so that smaller elements are deformed first and larger deformation like the whole ship squash & stretch are done later, otherwise the smaller deformation will not work correctly.

B is for Ben: Character Rigging Part II by Rok Andic

Facial rigging is an art of its own. For every character there’s a different set of requirements, thus the approach can be different from character to character.

Analyzing the character

A few things I had to consider when making the facial rig for Ben:

  • his eyes are non spherical, oval shaped. Eyes will need to rotate and look around on that oval shape.

  • he has no chin. Mouth will need to open appropriately.

  • no neck. Considerations will be needed for head rotations and deformations.

Approach

There are many ways to approach the facial rigging, but most fall into three categories: bone based, blend shape based or a combination of both. I have used bone based a lot in the past but it has a lot of limitations when making the fine detail deformations of the face. In Houdini there can be a lot of control with custom made deformers which is why I used blend shape based system. It allowed me to split the face rig into smaller manageable systems and get the desired shapes faster and easier.

Simplicity vs Complexity

Before I began I decided which shapes I will need for the character. Certain micro detail controls were omitted because the character will not need them in the film and I try to avoid creating controls just for the sake of having them all.

But a typical set of controls are there:

  • brows

  • lids, eyes, squints

  • jaw, lips

  • cheeks

  • teeth, tongue

Most of these have broad and detail controls. For instance the broad brow control manipulates the whole brow but the detail controls will deform the inner, center and outer brow separately.

The controls also work in unison or as combination shapes. This means when the left and right brow come together they create a different shape between them (wrinkle for instance) or when the lips compress they create volume. So the way the rig is setup is that the final blend shape is set by taking in account multiple controls and their values together instead of each one individually.

The whole system is also setup so that it can be scaled and corrected easily. If a new control or shape is required it is easy to add to the rig. Editing existing shapes should also be easy. This is especially nice in Houdini with procedural approach, so going back and correct a shape here and there is simple.

Using Houdini VEX for custom deformers

In part I I have already written about using custom VEX deformers in Houdini (dropoff deformer) but when it comes to facial rigging I use them more and more. For instance I used dropoff deformer for cheek blow shape. It’s great because with just one deformer it’s easy to get any desired blow shape. With blend shapes this is very hard because one blend shape gives just one shape. A deformer that can be moved around can be much more versatile.

For most shapes a simple rotation or translation deformer is enough to create a certain shape (up-down, left-right, twist), but for things like mouth corner which needs to move on a path I wrote a ‘curve path’ deformer. So when he smiles, his mouth corner moves on a path provided by a curve which is based on the curvature of his face. If doing this the traditional way of sculpting blend shapes, there would be a need for a lot of inbetween shapes to achieve a curve like motion of the geometry. With deformers it’s done in one take and there’s no need for inbetween shapes. Also it takes into account vertical and normal movement based on where on curve the current point is (so up down, in out movement are based on the current curve position instead of predefined blend shape).

I also used VEX to create mirror blend shapes. So whenever I am making or correcting shapes for left side it is instantly doing the same for the right side blend shape. This saves a lot of time and it’s easy to setup.

VEX is very fast. Complex deformers can be written to work in real time. I use VEX more and more simply because it’s easy to reuse and is quickly adapted for different scenarios.

Stretchy eyes

Non spherical eyes cause some extra rigging steps to take into account. Also if the head deforms (bends, twists…), then the eyes have to take that deformation into account as well. The eye problem was solved by first rotating and aiming it into appropriate direction as a sphere. After the rotation a lattice deformation is applied to create the desired oval shape and finally any deformation made to the face is applied to the shape of the eye.

This way the eye rotates independently from the head, retains its oval shape when rotating and also deforms together with the head.

For a full tutorial how to create a stretchy eye setup check the previous blog post.

No chin

Since he has no visible chin, the jaw opens a bit differently. Instead of rotating, it mostly translates down and some rotation is applied. I found this works better for this type of character.

No neck

As I wrote in part I, to solve the neck issue I made a few different controls to have a smooth transition when rotating the head. Neck rotates the whole head, the head control rotates the head independent from the body but also has a few deformers to achieve a better shape. Bend, twist and stretch were added to his whole head. This way when the twist is added to the head his body stays the same, so his upper head is twisted while the chin still faces the same direction as body. This gives the effect of rotation while still having the feel of a nice rotational transition from the body. It has to be done in a subtle manner of course because he can easily look like a rubber puppet.

Invisible rigs & Character picker GUI

As for the body I created the invisible rig and character GUI for picking controls faster. When it comes to face there are a lot of controls, sometimes one very near another so it’s hard to pick them. Invisible rigs and GUI makes things a lot easier. Besides having to see the character’s face without control overlay makes things much easier and nicer to animate.

Speed optimization

When working on ‘A is for Al….’ I added all bells and whistles into the facial rig. This ended up in a slower rig. For this character I took all that into account and build it a bit differently. This meant isolatation of deformations whenever possible so the calculations are fast and using VEX when possible instead of complex network of not so fast nodes. If the blend shape moved in a linear way it was cached instead of being a ‘live deformer’ which constantly re-evaluates.

A slow face rig can be as troublesome as a rig with insufficient controls so it is good to take some time to properly optimize it.

What’s next?

The character rig is done so I am off to props and environment modeling!

Rigging "cartoony" eyes in Houdini by Rok Andic

Rigging eyes is most of the time a pretty straightforward job. We put the sphere down, create some lookat constraints and voila: we have a working eye setup. But what if we’re dealing with cartoony characters who rarely have completely spherical eyes?

In this tutorial we’ll look at how to setup a basic eye rig for non-spherical or “cartoony” eyes in Houdini.

B is for Ben: Character Rigging Part I by Rok Andic

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.

Short Legs

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.

Short neck

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.

Gadgets

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.

Speed

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!