sticky_header.jpg

Maya: Easy Sticky Lips

The ‘sticky lips’ effect is a common method of adding ‘fleshiness’ to any mouth rig. In this tutorial, you’ll learn how to create it using Maya’s ‘wire’ deformer.

I will be using this simple jaw-rig as an example:

start_rig

To begin, create two curves that will follow the contours of the upper and lower lips respectively as your rigged geometry deforms. These will be your ‘driver’ curves. There are various ways of doing this; in the example below, I merely drew the curves using snapping, and then wrapped them onto the original rig geometry:

outline

Next, create a dynamic ‘averaged curve’ between them. To do this, follow these steps:

  1. Grab the curves’ shapes and graph them up in the Node Editor (or Hypershade, as you prefer).
  2. Create an ‘avgCurves’ node (in the Node Editor, you can hit tab and start typing ‘avgCurve’; alternatively, you could just issue a ‘createNode avgCurves’ in the MEL command line)
  3. Plug the ‘worldSpace’ output attribute of each curve shape into the inputCurve1 and inputCurve2 inputs of the avgCurve node:

avgcurves_1

  1. Back in the Outliner, duplicate one of the curves. This will be your ‘sticky’ curve.
  2. Add this curve’s shape to the Node Editor graph.
  3. Plug the ‘outputCurve’ output of the avgCurves node into the ‘create’ input of the curve:

avgcurves_2

  1. Select the avgCurves node and switch off ‘Automatic Weight’.

avg_sets

The resulting curve should fall right between the two lips, as thus:

inbetween

Next, make a live, deforming copy of your rigged geometry. To do this, select your rigged geometry and issue ‘polyDuplicateAndConnect’ in the MEL command line. This will be your ‘sticky lips’ mesh. (This step is necessary to prevent dependency graph cycle problems.)

Now set the the averaged curve you created earlier as a wire deformer for this mesh. If in doubt as to how to do this, consult Maya’s documentation on the ‘wire’ deformer.

The wire deformer will have generated a ‘BaseWire’ curve. Select this curve’s shape in the Outliner and graph it in the Node Editor. Add the ‘avgCurve’ node you created originally to the graph.

Once again, plug the ‘outputCurve’ output of the avgCurve into the ‘create’ input of the BaseWire curve. We are doing this to cancel-out the wire deformer’s effects:

basenodes

Paint-out the wire deformer’s influence to a narrow area along the inner lip edges:

infl

Set ‘scale[0]‘ on the wire deformer to 0.0, turn up the ‘dropoffDistance’ attribute, and overdrive ‘envelope’ to 2.0. Play with these settings until you get a good-looking result kicking in at the right range of motion.

wire_sets

You should now have something like the image below. If you turn up the wire dropoff, you’ll be able to zip-up the whole mouth, from the edges inwards.

sticky_result

  • The effect is distance-based, so some modest keying will be required in animation.