• Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL

Chapter 4. Deforming the Skin > Deforming the Skin with Bones, Wrinkles, and Fa...

Deforming the Skin with Bones, Wrinkles, and Fat

A third level of detail that you can add to your character’s skin is making it appear to stretch, wrinkle, and jiggle when the skeletal and muscular controls move. There are a variety of ways to do this in Maya. This section shows you some of the most common ways to add such details to your character’s skin.

Skin Sliding Over Bones

To make it appear that muscles are moving under the skin, you can add sculpt deformers to your rig. A sculpt deformer is a spherical deformer that pushes the points of a surface around, based on where a sculpt locator is placed. The locator is created with the sculpt deformer, and is like a base object that the deformer uses as the center of the effect. By parenting the sculpt deformer and locator under joints in your rig, you can make it appear that bones or cartilage are pushing the character’s skin from the inside.

You assign a sculpt deformer by selecting the skin and choosing Deform, Create Sculpt Deformer . In the resulting options box, set each option as needed. The most predictable mode for pushing a surface from the inside is the Stretch option (see Figure 4.30). You can experiment with the other modes, but the Flip Mode option may make the skin pop if the sculpt sphere goes too far, and the Project Mode option may make the skin bunch up. The Inside Mode option should normally be set to Stretch to evenly push the skin around with a Linear drop-off setting. The Max Displacement and Dropoff Distance options can be left at their defaults, and adjusted later in the channels. In most cases, turn on the Center Within Selection option, and then adjust the positions of the deformer and locator as needed.

4.30. Set the Sculpt Mode option to Stretch, Even, and a Linear drop-off to push the skin from the inside.

You can use sculpt deformers in many areas of your character. For instance, you can use one to simulate an Adam’s apple in your character’s neck. Or use them to make your scapulas look like they are moving under the skin of your character’s back. You could even use one to make an eyelid deform slightly as it slides over the cornea of an eye.

Exercise 4.4: Using Sculpt Deformers

In this exercise, you use a sculpt deformer to simulate an Adam’s apple.

To create an Adam’s apple as a sculpt deformer, in object mode select the part of your model that contains the neck skin and choose Deform, Create Sculpt Deformer . Then set the Mode option to Stretch, and the Inside Mode option to Even. This smoothly pushes the skin outward on the front of the neck. Make sure that Max Displacement is set to .1, Dropoff Type is Linear, and Dropoff Distance is set to 1. Also turn on the Positioning option, and turn off the Grouping option. When all the options are set correctly, click the Create button.

A locator will be created that will be the center of the deformation effect. Make sure this locator is placed in the middle of the neck, and is made child to the closest neck joint. Scale the spherical sculpt deformer so that it is the size of an Adam’s apple, and move it toward the front of your character’s neck (see Figure 4.31). In addition, the sculpt deformer should be made child to the same neck joint that you made the sculpt locator child to. To improve the deformation effect, adjust the maximumDisplacement and dropoffDistance input channels on the sculpt deformer.

4.31. Place a sculpt deformer in the neck to simulate an Adam’s apple.

Finally, create a custom channel on the Head box to use as a driver for moving the sculpt deformer up and down. This is meant to simulate an Adam’s apple moving when your character swallows. Remember to check your channels when moving the Adam’s apple, because it may not be registering movement according to the expected axis, because it is child to a skeleton joint. You could create some group nodes between the neck joint and sculpt deformer, as done with previous controls, to make the motion more standard. ▪

Creating Wrinkles on the Skin

One way to create geometry wrinkles is to assign curves as influence objects to the skin where you want to create the wrinkles. Do this in the same way as adding muscle influence objects, making the influence curves child to the appropriate skeletal joints. The advantage to creating wrinkles with an influence curve over a wire or wrinkle deformer is that the curve is added to the skinCluster node, and you can adjust its weighting with all the other skin weights. Drive the components of the curve to animate the wrinkles when the joints rotate, and make sure the useComponents channel is activated on the skin.

Keep in mind that you must have surface details in the right place to create a geometry-based wrinkle. Each wrinkle requires one row of points to create the crease, and two rows on either side to keep the edges from collapsing. The influence curves should be drawn in the same way as the point rows, with a separate curve for each row. The best way to do this is by holding the V key down to snap the curve to the surface points as you draw (see Figure 4.32). Obviously, it is not practical to do geometry-based wrinkles for every place that might wrinkle on the skin. You will want to use this technique only in areas where large wrinkles occur, or where there will be a close-up shot of the skin bending. Large wrinkles can occur on the torso, elbows, knees, wrists, and face.

4.32. Create a wrinkle influence curve by snapping the curve points to points on the skin.

Another way to create wrinkles is to use skeletons to drive the channels of color and bump texture maps on a skin shader. This does not require that the surface geometry be as detailed as when using wrinkle influences. Such a technique is good for small wrinkles in the skin, such as in the fingers. You can also use it in conjunction with larger geometry-based wrinkles to enhance the skin deformations.

This technique involves assigning textures to the color and bump channels of the skin shader. The two image file textures are assigned through a ramp, so that you can transition from one to the other. One texture is the default skin appearance without any wrinkles, whereas the other is the skin with wrinkles drawn on it. Use the 3D Paint tool to initially create the wrinkle image (see Figure 4.33). Animating the transition from one image to the other is done using an expression that connects the position channels of the ramp to custom channels. In addition, you should assign a grayscale bump version of the wrinkled texture to the bump channel of the skin shader. Both the custom channels that control the color transition, and the depth channel of the bump map, can be then driven by the rotation of skeletal joints.

4.33. Draw wrinkles on the skin using the 3D Paint tool, and then open the image in Photoshop to create the finished wrinkle texture.

Keep in mind that you don’t necessarily have to choose one or the other of these methods. In some cases, you may want to combine both methods to get the best result. This is most determined by how noticeable the wrinkles will be in a particular scene and the level of realism required by the character design.

Exercise 4.5: Using a Bump Map to Create Wrinkles

In this exercise, you create texture-based wrinkles on the skin by driving texture map channels on the skin with joint rotations.

First, use the 3D Paint tool to draw where the wrinkles should be placed on your character’s skin. Select the skin, and then open the 3D Paint tool by choosing Texturing, 3D Paint Tool . If your skin doesn’t already have a file texture, assign one under File Textures by choosing a JPEG or TIF image format, and click the Assign Textures button. Set the size of your image to 500 by 500 pixels, choose a color, and paint the wrinkles on the surface. Then click the Save Textures button.

The wrinkle texture should be saved with a default name in the 3D Paint Textures folder that was created where your scene files are stored. Open the wrinkle texture file in Photoshop and revise it as needed, painting wrinkles and compositing with other skin textures. When done, save the file with a new name, such as WrinkleColor. Also make a nonwrinkled version, and save it as NoWrinkleColor. Finally, make a grayscale version that just focuses on the wrinkles to use as a bump map version, and save it as WrinkleBump.

Use a ramp to blend between the nonwrinkle image and the fully wrinkled image. Drag a ramp into the work area of the hypershade view using the middle mouse button. Double-click the ramp to open it in the Attribute Editor, and delete the green color by clicking the box with an X in it. Then activate the top color by clicking the top circle, and click the link icon to the right of the Selected Color attribute. Choose a file texture, and in the resulting options box, load your WrinkleColor into the Image Name option. Repeat the same process to load the NoWrinkleColor image into the other ramp color. Once loaded, notice that dragging the color circles changes the Selected Position values, and blends the wrinkle textures (see Figure 4.34). A setting of 0 on one, and a high value such as .95 on the other, makes the second one blend over the first. Name your ramp WrinkleRamp.

4.34. Load the WrinkleColor and the NoWrinkleColor image files into the ramp colors, and drive their positions to make the wrinkles appear on the skin.

Create a Phong material named Skin and drag it into the work area of the hypershade. Then use the middle mouse button to drag your ramp onto the Phong material, and choose Color to connect them. Open the Skin material and click the link beside the Bump Mapping attribute. Choose a file texture, and on the File tab load in your WrinkleBump image. Adjust the Bump Depth attribute to increase or decrease the bump mapping effect. Do some test renders to check how your images appear with different settings.

Create two custom channels for controlling the position attributes of your ramp with an expression. You can make them on any convenient control icon, naming them wrinkle and noWrinkle, and making them both go between 0 and 1. The position attributes are difficult to find, because they do not come up in the Channel box or in the Set Driven Key options box. They do come up in the Connection Editor, but the best place to find the correct name is in the History field of the Script Editor. In the hypershade view, change one of the ramp’s position attributes, and notice in the Script Editor a line that is something like this:

setAttr "WrinkleRamp.colorEntryList[0].position" 0.95;

This shows that the name of one of the position attributes is WrinkleRamp.colorEntryList[0].position, so this is the name you should use to connect the attribute to a custom channel. After finding both attribute’s names, in the Expression Editor type an expression that is similar to the following:

WrinkleRamp.colorEntryList[0].position = 1 - Finger.wrinkle;
WrinkleRamp.colorEntryList[2].position = 0 + Finger.noWrinkle;

You can then load the constraining channels into the Set Driven Key options box to drive them with the appropriate joint rotations. To also drive the bump on the skin, drive the Bump Depth channel of the bump map using the same joints. Set some keys on the joint drivers and run a batch render to test the wrinkle effect. ▪

Making the Skin Jiggle

Creating a jiggle deformer is one easy way to make the components of an influence object jiggle your character’s skin. Do this on muscle influences to give them weight and volume or add specific fat influence objects for jiggling when your character moves around.

First, you must assign a jiggle influence object that is either a surface or curve and then make sure the useComponents channel on the skinCluster node is turned on. A jiggle deformer can be used on a previously assigned muscle influence object. This causes the muscle to jiggle as it moves and flexes. You can also separate the jiggle and muscle-flexing controls by creating a separate jiggle influence object assigned to the same area of the skin. Separating the jiggle from the muscular controls enables you to weight the skin points to both as needed, so you can control how much each affects the skin. The easiest way to do this is to just duplicate the appropriate muscle influence object and assign the copy as the jiggle influence object for the same skin. For instance, you can duplicate a triceps-muscle sphere and assign the copy as a jiggle influence object for the triceps muscle. Then assign the points on the skin near the triceps area a partial weighting to the triceps-muscle influence and a partial weighting to the triceps jiggle influence. Finally, create a jiggle deformer on the jiggle influence, and adjust the influence weighting to make your character have flabby triceps.

Assigning a jiggle deformer is relatively easy. Just select the jiggle influence object and choose Deform, Create Jiggle Deformer . Leave all the options at their default settings, and assign the deformer. You can adjust the two main Stiffness and Damping options in the Channel box after you see how the deformer affects the skin (see Figure 4.35). The Weighting option should be left at a setting of 1. Turn on the other two options only if you do not want the object to jiggle as your character moves around. Also, to see the jiggle effect on the skin, you must use the Paint Jiggle Weights tool in the Deform menu. Simply paint the weighting to assign jiggle to the skin around the muscle.

4.35. The stiffness and damping channels on the jiggle deformer can be adjusted in the Channel box to increase or decrease the jiggle effect.

The jiggle effect is based on movement, so in the example of a flabby triceps muscle, the arm box should be animated to see any jiggling. When the arm is moving around, you must run a simulation to see the influence object jiggle the skin. Do this by choosing Deform, Create Jiggle Disk Cache . Set the simulation options to use the timeline by choosing Time Slider as the Cache Time Range, and leave the Over Sample Rate option to a value of 1. Increasing the Over Sample Rate option is only necessary to calculate collisions with rigid bodies, and is not necessary for a muscle influence. Click the Create button to run the simulation. When the simulation is complete, play the timeline to see the effect of the jiggle deformer. If you need more or less jiggle, adjust the jiggle deformer stiffness and damping channels in the Channel box, and re-run the simulation. Decreasing the stiffness and damping values creates more jiggle on your character’s skin.

Another way to create some jiggle on the skin is to switch to the Dynamics module, and assign a soft body to an influence object. It is best to create this jiggle effect directly on a muscle influence. To make a biceps muscle jiggle, for instance, first select the muscle influence, and choose Soft/Rigid Bodies, Create Soft Body . Inside the Soft Body options box, set the Creation Options to Duplicate, Make Copy Soft. Also turn off Duplicate Upstream Graph, turn on Hide Non-Soft Object, and turn on Make Non-Soft a Goal. The initial Weight option should be set to a .5 value. When finished, click Create.

Creating a copy of the biceps muscle as a soft body creates a CopyOf Bicep sphere that is connected to a particle node. Turning on the Make Non-Soft a Goal option makes the soft body copy follow the flexing of the original muscle influence, while still jiggling. A goal object is a target that the soft body always tries to reach. Set some keys on the rig controls to move the arm around, and play the timeline to see the soft body biceps jiggle. To adjust the amount of jiggle, increase or decrease the goal weight channel on the particle node, which is child of the CopyOfBicep node (see Figure 4.36). Increasing the weight reduces the amount of jiggle. Keep in mind that you will not see the jiggle effect on the skin until you assign the soft body copy as a new muscle influence object. Assign it as you would any other influence, and make sure you set the skin weights appropriately. The original muscle object can have its weighting reduced, or you can remove the weighting entirely by setting it to 0.

4.36. The particle node for your soft body influence is the child of the soft body copy and contains the goal weight channel.

To have even more control over the muscle jiggle, you can add springs to the soft body influence. First add springs directly to the soft body by selecting it, and choose Soft/Rigid Bodies, Create Springs . Name the springs for the soft body biceps influence BicepSprings, and turn off all the options. Set the Creation Method to Wireframe, with a Wire Walk Length value of 1, and click Create. This creates a set of springs that reflects the structure of your influence object but will not be too heavy.

Then add some springs to anchor the muscle to the arm. To do this, you need to create two curve-based objects that will be child to the arm joints. Draw a two-point linear curve, or create a small curve box to use as an anchor object. Name it BicepAnchor1, duplicate it, and place one anchor on each side of the soft body biceps muscle. One anchor should be close to and the child of the lower-arm joint, and the other should be close to and the child of the upper-arm joint. Then switch to component mode to select points on one side of the biceps muscle, and Shift-select a couple of points on the closest anchor object. Create another spring named BicepAnchorSpring, and this time use the MinMax creation method with values from 1 to 100. Click Create to create springs that connect one end of the muscle to the closest anchor. Repeat this process for the other side of the muscle, but Shift-select the new BicepAnchorSpring after selecting points on the soft body and anchor, and turn on the Add to Existing Spring option to add the springs on the other side of the muscle to the BicepAnchorSpring node (see Figure 4.37). Play the timeline to see the soft body and springs move. Adjust the stiffness and damping channels on the spring nodes as needed to improve the muscle jiggle.

4.37. Adding springs can anchor your soft body jiggle influence to the skeleton joints through a couple of curve objects. This causes the movement of the joints to influence the jiggle effect even more on the soft body.

  • Creative Edge
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint