The texture being used to define the areas and ranges to be influenced for wrinkles is a normal 32-Bit .tif file, including the alpha channel.
The different channels, red, green, blue and the alpha channel have been split into ranges so that more than 3 or 4 channels can be addressed independently and drive different areas on the face.
At the moment this is "hardcoded". Using more than these 3 Channels per map channel would make code changes necessary.
The different Ranges are evenly distributed on the channels from 0 to 255, with a gap of 20 between the first and second ranges and a gap of 10 between the second and third ranges to prevent the channels from mixing into each other.
Below is the resulting texture without the alpha channel and the right is the red converted to grayscale:
The table below shows how the different nodes and properties connect to each other from the texture through the rig into the engine.
Note that these connections are completely arbitrary and can be changed to adapt to specific needs.
Joint Name | Joint Name | Joint Parameter | Color Channel | Level-Ranges | Influenced Area | Rig-Control |
---|---|---|---|---|---|---|
joint0 | blend_control_01 | translation x | red 0 | 0 - 75 | Right Mouth and Nasolabialfold | def_r_lipCorner (z trans) |
joint1 | blend_control_02 | translation x | green 0 | 0 - 75 | Left Forehead | def_l_brow_B (z trans) |
joint2 | blend_control_03 | translation x | blue 0 | 0 - 75 | Glabella | def_midbrows (y trans) |
joint3 | blend_control_04 | translation x | alpha 0 | 0 - 75 | Under Jaw | Jaw_control (x Rot) |
The connections from the Table in the preceding chapter have been implemented through a driven key setup in Maya.
Based on the different existing animations certain bones from the rig have been selected to drive each specific property by mapping the motion of these to a 0 to 100 Unit range of the corresponding blend_bone.
Following a brief description of the Driven Key setup in Maya:
To open the Dialog use the menu in the picture below:
This opens the Driven Key Setup Dialog, where connections between driving and driven nodes are set up, and also keyed at the desired values.
In this example, according to the table in the preceding chapter, the connection has been set between def_r_upperCheek's local x translation value and is mapped to the 0 to 100 range of blend_control_01's y-translation.
Below is an example of one connection and its correlated curve by which the movement of the driving bone is mapped.
In the picture below you can see an overview of how each map needs to be applied in the material.
Note that on the right side of the picture where the properties of the anim object are, the "WrinkleMap"-flag under the "Rendering" section needs to be set, in order for the wrinkle shading to work.
Also, on the "Shader Generation Params" section inside the material, "Wrinkle Blending" has to be checked:
Here is a 2 frame example (animated gif) which shows the blend_bone driving the "crows feet" without deforming its surroundings to make the effect more visible.