curveDeformer C++ (an alternative to Maya's wire)

Not all deformation approaches works with the weightSplitting method (see my post about splitting weights with animCurves for details). Because the weightSplitter saves you so much time, it's often worth changing your rigging approach slightly so you can use it. One region of the face that is a great example of this is the lip roll. Every previous lip rig that I have worked with used on of three methods:


  1. The twist functionality of Maya's wire deformer.

  2. A joint per control that is rotating.

  3. A joint per span that is rotating.

Each of these has there own issues, and benefits.


The wire deformer is simple (though setting up twisting functionality isn't as simple as you'd expect), but because it's a spacial deformer, it requires post-deformation blendShapes for correctives.The falloff for the twisting is also hard to adjust.


Having a joint per control is the simplest setup. But the entire lip doesn't roll along a single straight axis, and instead rolls along a curved axis that matches the contact line of your lips seen from above. So you have to do a lot work balancing weights to get something that looks passable, and even then it won't look as good as it could.


Having a joint per span can get you a great result because it allows you to blend the contribution from each lips control per-span, and if the joints are set up along a curve then you can twist along the correct curved axis. The problem is that that's a lot of joints to paint weights for, and unless you're clever it requires you to add an additional skinCluster to your scene.


But we can do better:


The curveDeformer is a custom C++ deformer that prebinds the vertices to the nurbsCurve and allows you to have any number of controls driver any number of weightMaps to control how the vertices twist along that curve. Just like the translateUVN deformer the curveDeformer has seperate positive and negative weights maps. Here you can see me twisting points of a torus along a curved axis (shown in yellow).


At the moment it only twists, but I have plans to add the ability to slide points along the curve, and offset along the normals and binormals.

Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square

jonahrnhrt@gmail.com

630 - 725 - 8969

jonah-reinhart.com