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!

Matcha Girl by Rok Andic

matcha_girl_960px.jpg

About

I’ve been working mostly on ‘B is for Ben’ lately and I thought I just need a week or two off and do some sculpting practice. As it happens I’ve just received Ira Sluyterman van Langeweyde beautiful art book ‘Cozy Days’ when she posted a #drawthisinyourstyle challenge on her Instagram (@iraville) page. I thought it would be really fun to try and do a sculpt based on one of her characters. So this my version of the ‘Matcha Girl’.

The sculpt

I sculpted and posed the girl in ZBrush and tried to stay more or less true to the original design. I did make a few changes, most notably her lips have more shape because I found it worked better in 3d. There were a few things that were more noticeable only in 3d like her left arm (screen right) is a bit longer then her right arm if we looked at her from a different angle. But since I kept the angle of the camera similar to the original I decided to leave the arms as in the original painting. It simply works better. Don’t know why but it does :)

Once I finished the sculpt I exported it to Substance Painter where I textured the model. With textures I tried to keep a simple overall look and not overdo it with the details. I love the simplicity of forms in Ira’s work so I tried to leave the textures as simple as possible adding only pattern details in the clothing and basic colors. After that I exported the textures and rendered in Houdini together with the plants around her.

The hair

hair_01_600.px.jpg

I’ve never styled any long hair in Houdini before so I thought this would be a great chance to try it. I tried many different approaches but in the end decided to split the hair into different blocks like left hair strand, front short hair, back hair, etc… and style them separately which allowed me to match the specific shape of each block. Houdini is really great in this regard as it allows you to build any hair shape required.

The plants and leaves

In the original painting the leaves were left to a more open interpretation. Since there’s a lot of detailed work on leaves and plants in ‘Cozy Days’ I decided to texture them based on the designs in the book. I modeled and built them procedurally in Houdini and textured in Substance Painter to achieve a more painterly look.

Now back to ‘B is for Ben’ :)

B is for Ben: 3D model texturing by Rok Andic

Here is the final textured model of Ben. If you look at the environment concepts post you can see that I initially had blue details in mind for his suite. I really liked that idea of contrast, but once I put it in 3d he just looked odd. He looked more like an aquanaut rather than an astronaut. So I started playing with warmer colors and decided for a more orange/brown colors for the suit details. It instantly looked better and his space suit didn’t look like it belonged underwater.

I also added some model details before I started texturing. I decided to add a small computer/button panel with straps on his chest. It looked a bit empty when I made the final sculpt so I added it just before going into texture. I was going back and forth with small gadgets and what would work and what not and in the end decided to stick with a small button panel.

Workflow

I did all the texturing in Substance Painter. For initial fabric pattern I used Substance Designer and then added all the grit and dirt details in Substance Painter. I really like how patterns are easy to create in Designer and used as a base in Painter where I can add all the details. I am also one of those who uses a lot of layers. So whenever I add some scratching, tear or wear I always do everything on a separate layers so I can come back and remove every single effect if I need to. It also means that sometimes I just get lost in all those layers :)

When everything was painted I exported EXR UDIM’s to Houdini where I connected everything together to create the final look you can see below.

B is for Ben: 3D model retopology by Rok Andic

Retopology is one of those things that outside of rigging and modeling nobody wants to hear about. It is however essential to good puppet deformation. It is one of those things that I constantly try to evolve from character to character. I do not know whether this is from the ever evolving technology or simply because I like to constantly try new things. For Ben I decided to go with the simple idea of “better safe than sorry” and added extra edges wherever I had problems in the past. This also means that I’ll have to deal with those edges even if they are unnecessary.

In the past I would create only as much spans as I thought I would need. The reasons being simple. Capturing (or “binding”, depending on the software you use) is much easier with less topological data and animation playback is faster which is essential when the puppet is animated. This is great if you nail just the right amount of edge spans you need, but if you don’t and you need extra edges you are in trouble. Adding those extra details later is time consuming to say the least.

The face

The face is the most important because it carries so much deformation. I spend most of the time for retopology on the face. The areas I spend most time on are always those which deform most. In this case the eyes and the mouth.

I start by dividing the character into specific zones and layout each one separately. The zones being: eyes, lips, nose, cheeks, brows. I make sure each zone works well before merging and overlapping with the neighbouring zones.

For the eyes I divided it into 9 spans and for the mouth 13 spans. This should be enough to carry all the deformation I have in mind for this character. In the past I tried with less and blend shapes are faster to create but for some specific expressions I found it tricky to support extreme shapes with less spans. As I wrote “better safe than sorry”. Also if this character would perform a lot of close up acting shots I would probably add a few extra spans.

The body

The body can be tricky, especially in the shoulder and hip area. I don’t mind adding a few extra spans here. The shoulder always needs a lot of corrective deformations and it is just better to have some extra spans “just in case” to hold the shape. The same is with fingers. Especially the thumb area. Added extra spans this time.

Rigid elements

Helmet, jetpack and front button panel are mostly rigid objects which will not deform as much as the rest of the body. For this reason I kept the number of edges on the lower side.


Next steps

This model is now going back to Zbrush to create displacement maps and final details.

B is for Ben: Ben base sculpt by Rok Andic

Finally started working on our hero character sculpt. I decided to do it a bit differently than the way I worked on “A is for Al….”.  On later I did the final sculpt in Zbrush, retopology in Houdini and then reprojected the details back on the retopologized model. The problem with that is that some details don’t necessarily stay the same when reprojected. This is the reason I decided to do a base mesh without high detail first and do retopology on this mesh. Once that is done I will work on the details on this model. This will help me speed up the work on the details of the model by working on them only once.

Apart from that, my workflow for creating the character is pretty straightforward. I start with base shapes like spheres and boxes and shape them to best  represent the character. These are merged together into shape via Zbrush Dynamesh. Then I simply work on the details.

Notice that I leave certain things unsculpted, like the mouth and inner parts of eyelids. I will do this in Houdini when I will be making the retopology of the model. I simply find it faster this way to work on interior shapes there, also it is easier to work on the base sculpt for me if there is no interior shapes to worry about.

Next stage - retopology in Houdini.

B is for Ben: Environment concepts by Rok Andic

Time to share a few concepts I created for “B is for Ben”. At this time I am still playing with color palette but for now I think I will go with the colors you see on the concept images below.

The planet

Our hero has landed on a desolated far away planet. That is why I went with the rocky, dry environment where there’s nothing but rocks. The planet is very analogous in colors as well, making it not so interesting and a bit dull environment to spend time in. Basically the idea is that our hero doesn’t have much to do in this environment. He is there but would rather just pack his bags and go someplace where the party is.

Our hero on a desolated planet.

Our hero on a desolated planet.

Design

Design wise I wish this film to be more graphic rather than photorealistic. That means I am going to experiment more with texture and shapes. The rocks and clouds would get more graphic quality and everything would be a bit simplified. I am still experimenting with this so if it works or not I will see once I make the first 3d models and renders of the environment.

ben_okolje_design_02_conv.jpg

The color palette

Below are two images to show what I am considering in terms of color for this film. I am shifting colors here and there to see what works and what not. The orange/green is what I’ll most likely go with for the environment though I have been playing with the more purple/pink version as well. As I will make 3d rendered images I will play with colors again until I get the final look I am looking for.