Skin Deformer Morph

This tutorial outlines the recommended sequence for setting up a Carbon Morph for character deformation.

A general understanding of Houdini and Carbon and some advanced techniques are required to understand this tutorial with ease, it therefore is recommended to read Carbon Morph, Avatar Cloth, and Painted Attribute Maps first.

Rigged And Skinned Character

The tutorial starts off with a rigged, skinned, and animated character. As all of these operations are Houdini specific, please refer to their documentation and tutorials for information on how to set up such a configuration.

_images/tutorial_skin_deformer_morph_start.png

Initial state of the tutorial scene.

As seen below, the animated arms strongly penetrate the belly of the character.

_images/tutorial_skin_deformer_morph_start.gif

Initial state of the animation.

Note

Most modeled, rigged and skinned characters are provided as regular quad meshes. Such meshes are well suited for rendering but too regular for physics simulations. It is best to convert them to Delauney triangulated meshes for all simulations. After the simulation stage, capture the triangle mesh with the original quad mesh for rendering.

Paint Map

In conjunction with the Cloth Point Group, a point attribute named goalSkinStrength marks which areas are of type collider and which of type cloth. The nature of all points in the Cloth Point Group is controlled by the Goal Skin parameters. Note that any point not included in the group will be kinematic throughout the whole simulation.

To create the paint map for this attribute, add a Carbon Attribute Copy node and set it to add the goalSkinStrength attribute. Follow this by a Paint node with its Override Color parameter set to goalSkinStrength. Read the Painted Attribute Maps tutorial for more information on how to create and use painted attribute maps in Carbon.

There are three areas which are of interest:

  • Belly: This should be deformable.
  • Armpits: These should be deformable to clean up animation problems and create realistic creasing/folding of the character skin.
  • Fingers/Hands/Paws: These should be undeformable as otherwise they are very likely to flatten while the belly remains in status quo.
_images/tutorial_skin_deformer_morph_paint.png

Paint map for goalSkinStrength.

Note

It is recommended to perform at least a single smoothing operation in the Paint node when dealing with painted attribute maps where large areas without obvious sharp geometric borders are painted. The resulting gradient will usually result in a smoother simulation.

Cloth Point Group

The last step of the geometry setup is to specify a Cloth Point Group. This group defines the Cloth part of the geometry. If left empty, the Morph behaves just like a Collider.

Such a group can be either selected manually, or, in cases where a goalSkinStrength paintmap exists, be easily extracted with a Group node.

_images/tutorial_skin_deformer_morph_cloth_point_group.png

Extracting Cloth Point Group from goalSkinStrength paintmap.

Simulation Setup

The simulation setup should be done in two steps. First, set the general cloth/collider attributes, then adapt the Goal Skin Strength parameters.

General Setup

The character is 2 meters high, choosing an Outer Fatness of 0.002 translates to a skin offset of 2 millimeters, which is a typical value.

Generally, it is best to have an Inner Fatness, which is larger than the Outer Fatness. Setting the Inner Fatness to 0.005 translates to 5 millimeters.

Warning

There are cases where any Inner Fatness value will result in the simulation blowing up. Usually, this is an indicator of splinter triangles, triangle inversions, and other unsuitable geometry and/or animation. You should fix these problems whenever possible at the modeling/animation stage. Otherwise, setting the Inner Fatness to 0 (making the morph double sided) can help in many cases. In combination with that, it is best to increase the Outer Fatness to avoid collision detection problems.

It is important to change the Surface Compression and Surface Extension to allow for skin deformations.

Additionally, add some Surface Pressure to give the impression of volume preservation. Physically, Surface Pressure does not preserve volume but in scenarios like this, it can be used to achieve a visually pleasing result.

_images/tutorial_skin_deformer_morph_parameters.png

General parameters.

Goal Skin Strength Setup

The most important parameter group to set up for a Carbon Morph is the Goal Skin Strength. For more information about how to set up and use goal posing, please refer to Goal Pose.

First activate the Morph Guide Geometry and switch to tab Goal Skin. This visualizer returns feedback about which points are kinematic (red), dynamic constrained (yellow/brown) and fully dynamic (green).

Now, go back to the Parameters tab and set the Goal Skin Strength Base Parameter to 0 and the Goal Skin Strength Painted Attribute Range to 25. These values give complete freedom to the non painted areas, while the painted points have enough strength to follow the animation without “sinking” under the effect of gravity.

For this scenario it is also a good idea to adjust the Goal Skin Strength Upper Threshold and Goal Skin Strength Lower Threshold in order to give the painted regions a different dynamic meaning and help with the speed of the simulation. Move the slider for the Upper Threshold parameter until the intended non deformable points are displayed in red. For this tutorial, this is achieved for a value of 0.99. All points with values larger than the Upper Threshold are turned kinematic. This affects all painted regions because their goalSkinStrength attribute value has been set to 1 during the painting operation.

Warning

Areas where fully kinematic points transition to dynamic points can be problematic when dealing with geometries that undergo extreme deformations. Hinging and pinching can lead to overconstraints and to the simulation blowing up. In such cases, it is best to turn the complete object dynamic and heavily constrain all former kinematic areas using high Goal Skin Strength values.

Next, decide whether to turn all unpainted areas (where goalSkinStrength is left to 0) fully dynamic or dynamic and constrained. Since the Goal Skin Strength Base Parameter is set to zero, the non painted points will always act as if they were fully dynamic despite still being constrained. By setting the Lower Threshold to a value greater than 0, in this case 0.1, these points will become fully dynamic while non longer being constrained, therefore freeing some additional processing resource.

Note

The adjustment of the Upper Threshold and Lower Threshold parameters have the effect specified only once that the Goal Skin Painted Attribute Range parameter has been set to a non-zero value. Therefore it is important to follow these instructions in the specified order.

_images/tutorial_skin_deformer_morph_no_pressure.png

Kinematic and fully dynamic regions when no Surface Pressure is applied.

Alternatively, using a Lower Threshold of 0 would turn those areas goal-skin-constrained, remove the need for Surface Pressure and ensures that the shape of the geometry stays very close to the goal pose. In this situation, a suitable (non zero) value for the Goal Skin Strength Base Parameter would also have to be specified.

_images/tutorial_skin_deformer_morph_dopnet.png

Final and simulation setup.

As most of the character’s skin is set to be fully kinematic, the simulation is very fast and the morph can almost be simulated in real time.

At last, adjust the Viscous Damping to remove some of the oscillations on the belly and arms.

_images/tutorial_skin_deformer_morph_simulation.gif

Final simulation.