# Cloth and wire simulations

## Overview

The cloth solver simulates deforming surfaces. Cloth simulations are useful for use it to simulate fabric, rubber, bending metal, and other materials. You can turn any piece of SOP geometry into a cloth object, no triangulation is required.

Wire simulations are useful for simulating anything long and flexible, for example grass, fur, or even scaffolding. When wire objects are used with constraints, they can be used to simulate things such as ropes swinging, bungee jumping cords springing, or a tail of a kite.

The tools on the Cloth and Wires shelf tabs let you create and manipulate cloth and wire objects.

## How to

To...Do this

Deform geometry based on a dynamic wire

You can use a curve being controlled by a wire simulation to drive the deformation of a model. For example, you can model a snake and control it with a dynamics wire.

Deforming geometry based on a dynamics wire is basically the same problem as deforming geometry based on a curve. Create a control curve to represent the object you want to deform, and make it a simulated wire using the shelf tools. Add any constraints and forces you want to the simulated wire.

Then, create the Wire Capture surface node to capture the geometry you want to deform to the wire geometry. In the Wire Capture node’s parameters, click the Capture tab and set the Min/Max weight to 1 and 1. Connect the original curve to the Wire Deform node’s second (rest) input and the DOP Import node (automatically created by the shelf tools to import the simulated wire’s motion back onto the curve geometry) to the Wire Deform node’s third (deformed) input.

Create a field of wires

One way to create a field of curves at the SOP level is:

1. Use the Grid tool on Create shelf tab to create a plane and size it to the scale you want for your field.

2. Turn on the display of points in the viewer using the toolbar on the right side of the viewer.

3. You can just use the points of the grid as the locations for the curves if you want ordered rows and columns of curves, or you can scatter an arbitrary number of points across the grid.

• If you want ordered rows and columns of curves, use the Rows and Columns parameters on the Grid node to set them up.

• To scatter points across the grid, use the Scatter tool on the Model shelf tab with the grid object selected, and set the Number of points parameter to the number of curves you want in your field.

4. Draw a curve starting at the bottom (that is, at the point you want to touch the field plane).

5. Use the Copy to points tool on the Modify shelf tab to copy the curve onto the points.

6. Use the Wire Object tool on the Wires shelf tab to turn the curve field into simulated wires.

Create a toppling scaffold

1. Build your scaffolding using curves or lines.

2. Convert your curves or lines to wire objects using the Wire Object tool on the Wires tab of the shelf.

3. Use either a Wire Pin Constraint or a Wire Spring Constraint to constrain the points of the pieces of scaffolding together.

4. If you used a wire pin constraint, keyframe when the constraint should break by changing the Activation to 0.

If you used a wire spring constraint, you can either keyframe when the constraint should break by changing the Activation to 0 or set a Maximum Force or Maximum Length on the Spring tab of the parameter editor. Once the spring reaches the maximum force or length the constraint will break.

Using a Wire Spring Constraint will allow you to set a Maximum Force or Maximum Length on the Spring tab in the parameter editor to indicate when the constraint should break. However, the Wire Pin Constraint does not have these parameters.

5. Create a Rigid Body Object that will bump into the scaffolding.

6. Apply Gravity to the objects in your scene to make them look as if they are falling naturally.

## Colliding with cloth and wires

Currently RBD objects cannot collide with cloth and wires. Turn your object into a stiff cloth object to have it collide with other cloth objects.

## Useful cloth object parameters

Stretch stiffness

The resistance to stretching. Higher numbers mean the cloth is harder to stretch.

Shear

Resistance to shearing (forces along the plane of the cloth; if you stretched a square into a parallelogram that force would be shearing). This affects creasing where cloth is draped over a corner, as in a tablecloth on a table.

Bend stiffness

Increase this to make the cloth smoother/more resistant to wrinkles.

## Useful Wire Object parameters

• Click the Physical tab to set the physical properties of the wire. The density and width affect the overall mass of the wire. The width also affects collisions. You can also set these (as well as per-point mass) through attributes on the source geometry.

• The Linear spring constant is the wire’s resistance to stretching. Decrease this value to make the wire more stretchy.

• The Angular spring constant is the wire’s resistance to bending. Decrease this value to make the wire looser, or increase it to make the wire more stiff.

• To get a completely loose wire (like a rope or string), set Angular spring constant to 0. However, when Angular spring constant is 0, you must add an Angular damping constant (such as `0.001`). If both Angular spring constant and Angular damping constant are `0`, the wire can go crazy.

## Wire Object attributes

See the Wire Object help for a list of attributes used by wires.

The wire solver uses the values of the attributes if they are present on the wire geometry, otherwise it uses the defaults defined by the parameters of the Wire Object node.

Springs internal to the wire object resist any change in shape from the rest shape specified by SOP Path. The simulation will incorporate animation of the rest shape if Use Deforming Geometry is enabled. If the Initial Pose is different from SOP Path, the solvers considers the wire to be starting deformed.

The wire solver automatically keeps the point position and the `v` (velocity) point attribute, `angvel` (angular velocity) attribute, and `orient` (orientation quaternion) attribute up to date.

The wire solver averages the point attributes at either end of a line segment along the length of the segment. So, for attributes like width and mass, if the values at either end of a segment are different, the solver treats the segment like a tapered cylinder.

## Cloth Tips

• Simulate with simple proxy geometry that roughly approximates the shape of the animated geometry. It is generally not a good idea to let the cloth collide against high-resolution geometry because the cloth solver does collision detection against all the polygons in the animated geometry.

• Increasing the damping of the cloth object more than 1% of the stiffness is usually a bad idea. The best way to calm down a simulation is to add a drag force.

• If your animation moves fast, try simulating at a higher number of substeps.

• Collision detection when two separate cloth objects collide, or when a cloth object collides with itself, is quite slow, and you should restructure your simulation to avoid it whenever possible.

• It is very important that the initial position of a cloth object must not have any collisions. If a cloth object starts with collisions, the solver cannot fix them.

# Dynamics

## Colliding objects

• How to break different types of materials.

## Simulation types

• How to simulate smoke, fire, and explosions.

• How to set up fluid and ocean simulations.

• How to simulate grainy materials (such as sand).

• How to create and simulate crowds of characters in Houdini.

• How to create and simulate deformable objects

• Vellum uses a Position Based Dynamics approach to cloth, hair, grains, and softbody objects.

• How to create, style, and add dynamics to hair and fur.

• How to create particle simulations.

## Next steps

• HQueue is Houdini’s free distributed render and simulation manager.