header_graphic.jpg

Maya: Deformation Smoothing Using cMuscleSystem

It’s common within production to smooth out rough or glitchy deformations, or get rid of seams in deformer influence, using some sort of averaging approach. The cMuscleSystem deformer in Maya provides a very simple way of doing this.

1. THE AIM

I want to quickly throw together a basic mouth rig for the gruff cowboy character below, and there is no time to finesse influence weighting:

cowboy_overview

2. STARTING OUT

The smoothing approach works with any sort of pre-existing deformation setup. In this example, I will use a skinCluster. To start with, I will quickly lay out some floating joints (the one appearing under the eye is actually in the centre of the head):

joint_layout

Next, I will perform some very rough block-weighting:

rough_weights

As you would expect, moving a joint results in rather garish deformation:

rough_deform

2. SMOOTHING OUT THE DEFORMATION
  1. Before applying the cMuscleSystem deformer, keep all your pre-existing deformers as-is but make sure your model is in non-deformed, default pose. (Whatever approach you use, deformation averaging happens relative to a geometry state usually defined at the outset.)
  2. Next, switch to the Animation menu-set and select Muscle > Skin Setup > Apply Muscle System Skin Deformer:

menu_cmd

  1. If you are applying the deformer on top of a skinCluster, you may get the dialog box below. Just click ‘No’.

reldef

  1. Maya will think about it for a while, and eventually slap a cMuscleSystem deformer on your geometry. Select this deformer and display its Attribute Editor. Scroll down to find the ‘relax’ options section. Switch ‘relax’ on, and set the iterations to something high, like 40-60:

muscle_opts

  1. Now, when you move / pose / deform the model using the underlying deformers (in this example, the mouth joints), you will see that the deformation has been smoothed out:

ms_result

  1. Experiment with the ‘relax’ iterations to hit a good balance between performance and smoothing.
  2. Experiment with the ‘Smooth Compress’ and ‘Smooth Expand’ options to get pseudo-volume-preservation behaviours at extreme poses.

You can achieve a similar result using a combination of polyAverageVertices and a wrap deformer. Here’s what to do:

  1. Reserve a copy of your original geometry.
  2. On the rigged geometry, apply polyAverageVertices several times at full iterations, until the rigged model looks like a melted waxwork.
  3. Wrap the copy of the original geometry to this ‘waxwork’ and hide the rig geometry.
  4. When you pose the rig, you will notice that deformations are now smoother.

The wrapping stage is necessary in order to maintain overall shape and volume as deformations are smoothed.