On this page

Morph between geometry shapes

The Morph tool on the Deform shelf lets you edit geometry at the object level, and automatically creates the necessary Edit and Blend Shapes nodes at the geometry level.

To...Do this

Blend between shapes

  1. Model the “normal” shape of the surface(s). Then use the Edit operator and/or other surface operations (such as a lattice deformer ) to deform the surface.

    You do not need to model the normal and deformed versions as separate surfaces. Because of the procedural nature of Houdini, you can simply blend between the surface at two different points in its construction history.

    You can blend between any number of shapes (not just 2).

  2. At the geometry level, use the tab menu to create a Blend Shapes node.

  3. Connect the various shapes you want to blend between to the input of the Blend Shapes node.

  4. Use the Weight parameters to control the blending of the shapes. See below for how to make blending between two inputs easier.

Use the Morph tool to set up blend shapes at the object level

  1. Select the points you want to morph, then click the Morph tool on the Deform shelf tab.

  2. The Morph tool essentially works like the Edit operator from the geometry (SOP) level. Use the transform handles to edit the selected points in the viewport.

  3. The Morph tool automatically creates an Edit node and a Blend Shapes node at the geometry (SOP) level for the geometry you edit.

    Use the Weight parameters to control the blending of the shapes. See below for how to make blending between two inputs easier.

Make blending between two inputs easier

  • The Blend Shapes node has separate Weight sliders for each input, letting you mix them arbitrarily. In a two-shape scenario however, you probably only want one slider control that blends between the two inputs. To do that, you need to link the second slider to the first slider so it automatically goes down/up as the other goes up/down.

    Press RMB on the first slider’s value and choose Copy Parameter. Then press RMB on the second slider’s value and choose Paste Relative Reference. Houdini inserts a parameter reference expression to the first slider. Finally, to make the second slider invert the value of the first slider, insert 1- in front of the expression.

Use a bone angle to control deformation

  1. You can use drive the amount of blending between the normal (rest) geometry and the deformed geometry using the angle between two bones of a character. This lets you do things like make a muscle bulge as the character moves its arm.

    Set up a Blend Shapes node and link the Weight parameters using the steps above.

  2. In the Blend Shapes node, click in the first Weight parameter’s text field to edit it.

  3. You can use the boneangle expression function to get the angle between two bones.

    The boneangle function’s result is an angle in degrees (e.g. 90 or 120). The Blend Shapes' Weight parameter, on the other hand, is from 0 to 1. Use the smooth expression function to map the minimum and maximum bone angles to 0 and 1.

    Finally, depending on how you connected the Blend Shapes node, you may need to invert the result of the smooth function by inserting 1- before it. Do this if the deform is backwards, for example the muscle bulges when the arm is extended instead of when it’s flexed.

    Here’s an example of a finished function. Your function will probably have different values for the bone names and the minimum and maximum bone angles.

Wire deform

Character deformations, especially in the face, often must work with the contours of the deforming surface. Wire deformers make it possible to capture and deform the surface along these contours. You can then deform along the U direction of the curve or animate the shape of the curve to achieve more complex deformations.

How to use a curve to drive deformation

  1. Go to the geometry level containing the surfaces you want to deform.

  2. Draw a curve. You can snap the curve to the surface you want to deform.

  3. In the parameter editor , change the curve’s Primitive type to NURBS.

  4. In the viewer, use the tab menu to choose the Group operator.

  5. Select the curve, then click RMB to finish the selection.

  6. In the parameter editor, change the Group name to a meaningful name for the deformer. In the network editor , rename the group operator with a meaningful name.

  7. In the network editor, use the tab menu to choose the Wire Capture operator.

  8. Connect the geometry you want to deform to the wire capture node’s first input. Connect the curve’s group node to the wire capture node’s second input.

    If you want to put several wire deformers on the same piece of geometry, create a Merge node, connect the curve group nodes to the merge node’s inputs, then connect the merge node to the wire capture node’s second input.

  9. In the parameter editor, click the Capture tab, then click Initialize From groups. This uses the group (or groups) connected to the second input.

  10. Set the U radius and V radius parameters for the curves. These options control the distance within which the curves will influence the geometry.

  11. In the network editor, right-click the wire capture node’s output and choose the Wire Deform operator.

  12. Connect the group (or merge) node’s output to both the second and third inputs of the wire deform node. These inputs control the rest geometry and the deformed geometry.

  13. Turn on the wire deform node’s display flag . In the parameter editor, click the Deform tab, then click Initialize from Rest Groups.

  14. Use the U deform parameter to control how much the curve(s) deform the geometry.

  15. To animate the deformer, you can keyframe the U Deform parameter, and/or animate the shape of the deformer.

You may want to create HUD sliders for the U deform parameter or the blend parameter.

A real face rig will have many wire deformers representing the muscles that control facial expressions. You can promote the various parameters used to control the deformations along the curve, and any blends, up to the character’s digital asset interface for high level access by animators.

How to vary the capture radius along a wire deformer

  1. In the network editor , select the wire capture node.

  2. In the Parameter pane, Alt-click the right text box of the U Radius and lookup parameter to set a keyframe. The channel on this parameter represents scaling of the radius along the length of the curve.

  3. Press RMB on the text field and choose Add to Channel List.

  4. In the animation editor, Alt-click somewhere to the right of the existing keyframe to add a second key, then Alt-click again in the center of the channel.

  5. Drag the keys up and down to vary the radii of the wire deformer along its length.

    In the Perspective view, you should see the radius along the eyebrow wire adjusting to match the shape of the channel.

The channel defines a lookup table that controls the U radius along the curve. The values for the first and last key on the channel control the start and end of the wire with any internal keys being adjusted along the curve proportional to their position in time.

Object-level characters