Node Based Pose Space Deformer V.1
//////////////////////////////////////////////////////////////////////////
////////////////////////// WHO ////////////////////////////////
Stanislav Ilin
04/2007
www.3dturntable.com
///////////////////////// WHAT ////////////////////////////////
This script allows you to base your corrective blendshapes on the pose, rather
than just a rotation of the joint.
///////////////////////// WHY ////////////////////////////////
This works great for the parts of the body which get a lot of movement in all
3 axis, such as hips and shoulders. Where you can not isolate just one axis
of rotation to drive your blendshapes.
This file was inspired by Michael Comet's Plug-in for Maya.
Unfortunately in my production pipeline, 3rd party plug-ins were prohibited,
which pushed me to create this node based equivalent.
///////////////////////// HOW ////////////////////////////////
Pose your character into the problematic pose, which would require a corrective blend shape.
Select the joint based on which, the blendshapes will be driven.
Type in
si_poseDeformer;
in command line or script editor.
At this point, the basic setup is done. You can now directly connect the "Weight" attribute on the locator, to the
"weight" of the corrective blendshape, for the given pose.
/////////////////////////// HOW IT WORKS ///////////////////////////////
So when you rotate the joint, the locator is constrained to the joint. When that locator moves towards the white area, it will gradually
increase the weight of the blendshape.
As it moves away from white into black, it will decrease the blendshape.
Locator's World position is being translated into UV coordinates of the Sphere through "ClosestPoinOnSurface" node.
In turn those UV coordinates get the color information ( 0 - 1 ) from a ramp which is assigned to the sphere.
This gives you a nice fall off which you can change by tweaking the ramp texture.
//////////////////////////// ADVANCED ////////////////////////////////
With this setup you can also use either a twist or a motion range of a joint to drive the blenshape in a addition to
the color falloff of the sphere.
"Type" attribute specifies either "Twist" or "Range"
Connect one of your joint's rotation axis to "Joint".
If you are not going to use either of these, just keep it at "Twist" and the default values of "Min" 0, "Max" 1
and "Joint" 1.
TWIST..........
This will drive blendshape from 0 to 1 where your specified "Min" value would be equivalent to 0 and your "Max" will
be equivalent to 1.
EXAMPLE: "Min" 15, "Max" 45
If your Joint is rotated in whatever axis you connected to "Joint" attribute, by 15 degrees or less, you will
get 0 for the "Weight". If the joint is then rotated to 45 degrees or more, it will give you 1.
And between 15 and 45 it will give you a value between 0 and 1.
RANGE..........
This will drive blendshape from 0 to 1 where your specified "min" value would be equivalent to degree range
in positive and negative degrees, staying in which will give you 1. And "max" value is the range in degrees
beyond which you will be getting 0.
EXAMPLE: "Min" 15, "Max" 45
If you joint is rotated in whatever axis you connected to "Joint" attribute, within -15 to 15 degrees you will
get 1. If the joint rotates above 45 degrees or below -45 it will give you 0.
The range between 15 and 45 OR -15 and -45 will be equivalent to the 1-0 range.
/////////////////////////////////////////////////////////////////////////////////////
Please use the Feature Requests to give me ideas.
Please use the Support Forum if you have any questions or problems.
Please rate and review in the Review section.