The Vellum Constraints DOP allows the creation of new Vellum constraints
dynamically during a simulation. It is a microsolver so should be wired to one of the solver inputs of the **Vellum Solver DOP**. It can also be wired inside of a **Vellum Solver SOP**.

To change existing constraints, the **Vellum Constraint Update DOP** should
be used.

## Parameters

Activation

Controls if the microsolver is solved at all. Can be used to add constraints on a specific frame, for example.

Create Constraints

How frequently to try and create constraints. Some types of constraints you wish to create just once, and in this case the On Creation Frame simplifies the setup. Dynamic constraints you may wish to create less frequently than every substep as creating and destroying constraints will slow the simulation.

On Creation Frame

Apply the creation rules only on the specified creation frame.

Each Frame

Apply the creation rules once every frame, but not more frequently.

Each Substep

Apply the creation rules every substep. This has the greatest accuracy, but creating constraints can slow the simulation.

Creation Frame

Which frame to create constraints on.

## Constraints

Constraint Type

The type of constraint to generate. This affects the visibility of many of the other parameters. Usually this is set by using the appropriate tab-menu macro.

None

No constraints are generated.

Distance Along Edges

Each edge in the display geometry is turned into a distance constraint maintaining that edge length.

Bend Across Triangles

Each pair of triangles (or implied triangles if input is quads or higher) creates a constraint maintaining the initial dihedral angle between the triangles.

Cloth

Cloth constraints consist of both distance on edge and bend across triangle constraints.

Hair

Hair constraints consist of distance on edge and bend between edges. This bend also includes the twist of the edges, allowing torsion effects.

String

String constraints are a lighter weight hair constraint. They are a distance along the edge and the angle between edges. But no twist constraint is present, so the edges can spin freely.

Pin to Target

The specified points will be pinned to the corresponding point in the target geometry. The target geometry for a Vellum solver is usually the first input, so matches the animation, but can be overridden.

Attach to Geometry

The specified points will attach to the geometry in the third input. They will store their closest point at the attach frame and create a distance constraint tying them to it.

Stitch Points

Stitch points within the same geometry together using distance constraints. The points do not need to actually be connected by geometry. This is useful for keeping jackets closed or preventing pockets from flapping.

Pressure

Each piece, as determined by the **Define Pieces** parameter, stores
its original volume and a many-point constraint is built to maintain
it. The enforcement is global, so squishing one place will expand
another, like a balloon.

Tetrahedral Volume

Each tetrahedron is turned into a constraint to maintain the volume of the tetrahedra. Note this does not include any shear or stretch constraints - additional distance constraints need to be added to make a proper softbody.

Weld Points

While not a constraint per-se, this will edit the `weld`

attribute
to cause the points to be logically fused into a single point
for the solve. They will remain independent points otherwise,
however. In addition, this can build bend constraints where
edges have become logically fused, ensuring the result acts
like a single flat piece. The Vellum Post Process
SOP can rewire the welded vertices after simulation so that the
geometry appears connected for rendering.

Glue

Each point will search for a nearby point that is not a member of its own piece. It will construct a distance constraint holding it to that point. This is useful for building systems that automatically glue together by proximity, especially when combined with breaking.

Struts

Each point will search for a distant point that is of its own piece, but which it has a straight line-of-sight to. It will build a distance constraint to that point. This constructs a large number of toothpick like internal struts that give an object stiffness and volume without the expense of a fully FEM solve.

Tetrahedral Fiber

Each tetrahedron is turned into a constraint that attempts to flatten
along the direction specified by the `materialW`

attribute on its points,
or `{0, 0, 1}`

if that attribute doesn’t exist. These constraints can
be created with low stiffness that is animated up during the simulation
with Vellum Constraint Property to
simulate volumetric contraction effects.

Triangle Stretch

Each triangle is turned into a constraint that keeps the triangle As-Rigid-As-Possible (ARAP) by removing any stretching or skewing, according to the specified stiffness.

Tetrahedral Stretch

Each tetrahedron is turned into a constraint that keeps the tetrahedron
As-Rigid-As-Possible (ARAP) by removing any stretching or skewing,
according to the specified stiffness. If **Preserve Volume** is enabled,
the constraint additionally attempts to preserve volume with a very high
internal stiffness but the specified **Damping Ratio**, similar to the
way the **Tetrahedral Volume** constraint functions.

Stretch Type

Selects which type of Stretch constraints are used when the **Constraint Type**
is set to **Cloth**. The linear **Triangle Stretch** constraints converge to
their proper stiffness faster than **Distance Along Edges** at higher cloth resolutions,
but do not support anisotropy via the **Enable Warp/Weft** parameter.

Preserve Volume

When the **Constraint Type** is set to **Tetrahedral Stretch**, also apply
a constraint that preserves volume with a very high internal stiffness and
the specified **Damping Ratio**, similar to the way the **Tetrahedral
Volume** constraint functions. Note that for more control, or if
experiencing instabilities due to the very high stiffness, you can turn
this option off and add a subsequent **Vellum Constraint** SOP set to
**Tetrahedral Volume** for a similar, but more controllable, volume-
preserving effect, at a slight loss of solve performance.

Use Linear Model

The **Triangle Stretch** and **Tetrahedral Stretch** constraints use a non-linear
model of stretching that gives good behavior for low stiffness, high
stretching configurations useful for organic materials like muscle and
skin. Enabling this option switches to a linear model that generally
performs better for high stiffness, low stretching configurations like hard
solids or cloth. It also provides more predictable stress values for
fracturing effects using breaking welds due to **Stretch Stress**.

### Geometry

Group Type

Controls the type used for the source points for the constraint.

Group

The group for the source points of the constraint. These are the points or primitives that are turned into the constraint or are used as the starting half of the constraint.

Triangulation

Distance and bend constraints are usually built on a triangle mesh. Rather than forcing the input to be triangulated, it can be implicitly triangulated.

None

Do not triangulate the input implicitly.

Regular

Consistently split into triangles.

Alternating

Attempt to reverse the triangle splitting so a series of quads have a less regular structure.

Mass

`mass`

value for the points. The mass affects how they interact with
POP forces and other pieces of Vellum geometry, and how strong the constraints are.

Unchanged

Do not set the `mass`

attribute.

Set Uniform

Set the `mass`

attribute to the specified value.

Calculate Uniform

Calculate a uniform value for the `mass`

attribute for the points on a per-piece basis,
as determined by the **Define Pieces** setting. For tetrahedral geometry, the overall volume
for each piece is calculated then multiplied by the **Density** parameter to find the mass of each piece.
This mass is then distributed equally across each point in that piece. For polygonal geometry, the overall
area of each piece is used, and for polylines the line length is used.

Calculate Varying

Calculate a varying value for the `mass`

attribute for the points. For tetrahedral geometry, each point
accumulates 1/4 of the volume of each incident tetrahedron to find its overall volume, which is then
multiplied by the **Density** parameter to find the mass for each point. For polygonal geometry, each point
accumulates its share of the area of each incident polygon, and for polylines its share of each incident edge
length. This approach generally gives the most physically accurate results, especially as the resolution of
the geometry changes.

Density

The volume used in calculating mass is scaled by this value when **Mass** is set to **Calculate Uniform**
or **Calculate Varying**. This value can be further set to **Scale By Attribute** to scale by the specified
point attribute in the varying case.

Density Attribute

The **Density** parameter will be scaled by this point attribute.

Thickness

Thickness of the points, stored in `pscale`

. Used also for the
triangle thickness and curve thickness.

Unchanged

Do not set the `pscale`

attribute.

Set Uniform

Set the `pscale`

attribute to the specified value.

Calculate Uniform

Calculate a uniform value for the `pscale`

attribute for the points on a per-piece basis,
as determined by the **Define Pieces** setting. The thickness value is based on the average
length of the edges in each piece, scaled by the **Edge Length Scale** parameter. This setting
generally avoids excess self-collisions while maintaining uniform thickness.

Calculate Varying

Calculate a varying value for the `pscale`

attribute for the points. The thickness value is based on the average
length of the edges connected to each point, scaled by the the **Edge Length Scale** parameter. This setting
is better for geometry of varying resolution, but generally gives non-uniform thickness values.

Edge Length Scale

Each edge length will be scaled by this value before being used in the **Thickness** calculation.

Define Pieces

Pressure constraints split the object into disjoint pieces to compute and enforce the volume. Mass and Thickness calculations, and Glue and Strut constraints also need a way to define separate pieces.

From Attribute

This attributes unique values are used to define each piece.

From Connectivity

Connectivity of the input geometry is used to define the pieces.

Piece Attrib

The attribute used to define the pieces. This can either be a point or a primitive attribute.

Layer

The points will be given this as their `layer`

attribute, useful
in cloth simulations to define a stacking order for Layer Shock.

### Target Geometry

Target Group Type

The type of group for the constraint targets.

Target Group

The target group. This group specifies the second half of
**Attach to Geometry** and **Stitch** constraints.

Target Path

For Attach to Geometry constraints, the SOP attached to the third input will be read at solve time to get the current animation data. Specifying a path here will override that, useful if a different animation is desired at solve time than capture time.

Note

This is the path to override the animation with, and does not affect the actual capturing. Capturing is always done with the third input.

### Drag

Normal Drag

Creates the `dragnormal`

attribute and sets it to this value. This
scales the drag of the point when wind forces are applied to it
in the normal direction of its surface, or perpendicular to the
curve.

Differing normal and tangent drag is essential for flapping flags.

Tangent Drag

Creates the `dragtangent`

attribute and sets it to this value.
This scales the drag of the point when wind forces are applied to it
in the tangent direction of its surface, or tangent to the curve.

### Pin to Animation

Pin Points

Points to pin to the target animation. Usually the target animation is the first input of the Vellum solver, but it can be overridden on the Vellum Solver SOP or with the Vellum Source DOP.

Pin Type

How to pin the point position to the target animation.

Permanent

The `mass`

attribute is set to zero, making the point a hard constraint. However, as no original value of `mass`

is stored, it isn’t possible to release this constraint later.

Stopped

The `stopped`

attribute is set to `1`

to make the point a hard constraint. `mass`

is unaffected so a POP operation can restore the dynamics of the point later by resetting `stopped`

to `0`

.

Soft

A zero length distance constraint is made between the point and its target location. The Stretch **Stiffness** and **Damping Ratio** values are used for this constraint.

Orientation Pin Type

In addition to holding the location of a point, for hair the orientation often may also be constrained.

Note

This constrains the orientation of the out-going line segments of the hair. So orientation-pinning the tip of a hair will not affect the angle of the incoming hair.

None

Do not constrain the orientation to the target animation.

Same as Position

Use the position constraint rules. In case of Stopped, the `stopped`

attribute is set to 3 to reflect both types of update are suppressed.

Soft

Add a bend/twist constraint to maintain the orientation of the pinned point to that of the target animation. The Bend **Stiffness** and **Damping Ratio** values are used for this constraint.

Match Animation

Controls if the target is updated from the animation during the solver or if only the initial value is used.

### Closest Point

Constrain to Closest Point

When finding a matching point to a source point, do not go through the target points in order, but pick the point that is closest first.

Use Closest Location on Primitive

For **Attach to Geometry** and **Stitch Points** constraints, do not just choose the closest point,
but the closest position on a primitive. The primitive number and
barycentric coordinates are then stored. For **Stitch Points** constraints, only polylines, triangles, and
quads are supported as the **Target Geometry** for constraint generation when this option is enabled.

Max Distance

Maximum distance to consider eligible for stitching points.

Sliding Rate

For **Attach to Geometry** and **Stitch Points** constraints, the attachment point of the constraint
will slide across the target surface at this rate, where 1 matches the constrained point’s velocity.
This option only works to slide across primitives, so **Use Closest Location on Primitive** must
be enabled and the **Target Group Type** must be set to **Primitives**. The method used for finding
the next closest sliding target can be set with the Vellum Solver’s
**Sliding Method** parameter.

Sliding Attribute

A point attribute that scales the **Sliding Rate** when set to **Scale by Attribute**. This attribute will
be applied according to the attribute **Promotion Method**, and will be stored on the constraint to be
applied during the simulation. In this way the attachment point can slide across a painted surface, where the
painted attribute value controls the **Sliding Rate**.

### Glue Search

Cluster Attrib

While glue constraints are made between points of different pieces, they will only be made between points of the same cluster. If the cluster value is -1, no gluing will be done.

Min Search Dist

Minimum distance to look for eligible glue points.

Max Search Dist

Maximum distance to look for eligible glue points.

Max Search Points

Maximum number of points to consider for eligible glue points.

Search Preference

The order in which points should be considered for eligible glue points.

Note

You will likely need to increase the **Max Search Points** parameter
when setting this parameter to **Farthest**, as the internal search function
always returns nearest points first. There must be sufficient points in the
search query to reach the farthest points as specified by the **Max Search Dist**
parameter.

Constraints Per Point

Number of glue constraints to create for each point.

Detach Object Chance

Each piece has this chance to be marked ineligible for gluing and receive and generate no glue constraints. This allows for stray hairs.

Detach Point Chance

Each pair of points has this chance to be being marked ineligible for gluing.

Seed

Random seed used to generate the detach chances.

### Strut Search

Max Strut Length

Maximum distance to create struts. Must be large enough to cover the diameter of the object, but avoiding extremely long struts can help avoid artifacts.

Direction Attribute

Struts are created by sending a ray along the direction attribute in search of the piece. The default direction is to use the normal of the surface.

Invert Normals

Invert the sense of the objects normals for sending rays, useful if the incoming geometry has reversed normals.

Test Normals

Verify the goal of the strut has a normal suggesting it was properly hit from the inside.

Direction Jitter

Jitter the direction the strut is sent in to break symmetry in the struts.

Constraints Per Point

Maximum number of struts to add for each point.

Detach Point Chance

Chance of a point being marked ineligible for struts.

Seed

Random seed to control the jitter and detach chances.

Ray Offset

The initial ray for the strut needs an offset to avoid hitting the surface it was sent from.

### Stretch

Stiffness

The stiffness of the constraint, which controls how strongly the constraint pulls particles back towards its initial rest state. To dial in initial values, change by factors of 10.

Stiffness Attribute

Point attribute to scale the stiffness by.

As effective changes in stiffness requires painting over orders of magnitude, this has a logarithmic effect.

Scale

Single slider control over the stiffness.

As effective changes in stiffness requires painting over orders of magnitude, this has a logarithmic effect.

Damping Ratio

Stiff constraints tend to vibrate or jitter unacceptably. Damping reduces this by bleeding energy when evaluating the constraint. Too much damping can prevent the constraint from being satisfied, however. Values less than 1 must be used.

Damping Attribute

Attribute to adjust damping, multiplied into the damping ratio.

Scale

Single slider to control damping, multiplied into the damping ratio.

Rest Length Scale

The rest length of the distance constraints will be the original distance
between the points. This scale can be used to increase or decrease
this. Setting to `0`

will try to collapse the points together.

Compression Stiffness

The stiffness of the constraint when being compressed below its initial rest distance. A very stiff low resolution cloth can become unbendable due to its topology, rather than due to the bend constraints. A network of triangles has very few ways that it can bend if it is fully stiff. By setting a lower compression stiffness, the cloth is allowed to collapse and regain its fluidity. Usually this has to be raised with higher resolution cloth.

Stiffness Dropoff

The distance from the rest length at which the stiffness of the constraint
decreases to zero, or increases from zero to full stiffness, depending on
the direction of the dropoff. A **Decreasing** dropoff means that the
stiffness starts at full strength and decreases to zero at the Dropoff
distance from the rest length. An **Increasing** dropoff means
the stiffness starts at zero and increases to full stiffness at the
specified distance from rest length.

Decreasing dropoff can be useful for creating glue constraints that lose
stiffness as they are stretched, decreasing to zero at the specified
distance. Using the same distance in the breaking **Threshold** with a
**Break Type** of **Stretch Distance** will cause the constraints to be
removed at the same time they reduce to zero stiffness.

Enable Warp/Weft

Enables an adjustment to the stiffness based on orientation, allowing a cloth network to stretch more on one axis than another.

### Anisotropy

Warp Scale

Scale factor for cloth lined up with the material u axis. This is a logarithmic multiplier.

Weft Scale

Scale factor for cloth lined up with the material v axis. This is a logarithmic multiplier.

Shear Scale

Scale factor for cloth lined up with the diagonal material uv axis. This is a logarithmic multiplier.

Material UV

Point attribute to use to specify the coordinate frame for warp and weft computations.

Enable Plasticity

Plasticity allows an object to flow to a new rest position. Under sufficient stress, the rest coordinates are blended to the current dynamic coordinates, so the object will retain its new shape.

Velocity Blend

Constraints that attach to geometry or pin to the target can optionally
blend in the target’s velocity. This requires the target to have
a `v`

point attribute to provide the local velocity. The blending
is done per 24th of a second, so a blend factor of 0.5 will mix in
50% of the target velocity in a standard frame.

Blending in velocity will highly damp the simulation, but can be useful to allow the cloth to anticipate motion, avoiding whiplashing from sudden movements. Zero stiffness attachment constraints can be used to apply only velocity blending without any additional forces.

### Plasticity

Threshold

Below this threshold the material will return to its original shape. When deformed past the threshold, it will begin to creep into its new configuration.

Threshold Attribute

Attribute to scale the stretch threshold by.

Scale

Single scale slider for the threshold.

Ratio of Current Rest Length

The threshold can either be an absolute distance, or be a percentage distance. A value of 0.1 as a ratio would mean stretching of 110% of compression of 90% will trigger plastic flow.

Rate

The speed at which the material adopts its new rest lengths when it begins to flow.

Rate Attribute

Attribute to scale the plastic rate by.

Scale

Single scale slider for the plastic rate.

Hardening

Some plastic materials become stiffer after they've undergone deformation. These will have a hardening greater than 1. Some become softer so will have hardening less than 1. This is a logarithmic multiplier on stiffness.

Hardening Attribute

Attribute to scale the plastic hardening by.

Scale

Single scale slider for plastic hardening.

Output Group

The generated stretch constraints are all added to this primitive group. This is useful to edit them later with a Vellum Constraint Property DOP.

Keep Unique within Output Group

Ensures that a particular point can only be constrained once by the constraints in the **Output Group**. When dynamically creating constraints it can be common to re-create constraints between the same points every frame. Keeping the points unique within the output group prevents a constant accumulation of constraints.

### Bend

Add Bend across Welds

When welding points together, two outside edges may become an inside edge. If they do not gain any bend constraints the seam will be weak and noticeably fold or kink. This option generates bend constraints where this is detected.

Copy Neighboring Stiffness

The value of the generated bend constraints can be copied from the bend of surrounding triangles, ensuring a consistent piece of cloth is built without having to channel link parameters.

Stiffness

The stiffness of bend constraints. To dial in initial values, change by factors of 10.

Note

Bend constraints are based on angle differences, so higher resolution cloths will require higher stiffness to exhibit similar radii of curvature.

Note

Very high bend stiffness on high resolution models will require a very large number of iterations to converge.

Stiffness Attribute

Point attribute to scale the stiffness by.

As effective changes in stiffness requires painting over orders of magnitude, this has a logarithmic effect.

Scale

Single slider control over the stiffness.

Damping Ratio

Stiff constraints tend to vibrate or jitter unacceptably. Damping reduces this by bleeding energy when evaluating the constraint. Too much damping can prevent the constraint from being satisfied, however. Values less than 1 should be used.

Damping Attribute

Attribute to adjust damping, multiplied into the damping ratio.

Scale

Single slider to control damping, multiplied into the damping ratio.

Rest Angle Scale

The rest angle of the bend constraints will be the original dihedral
angle between the triangles. This scale can be used to increase or
decrease this. Setting to `0`

will treat the original configuration as a
flat sheet.

Stiffness Dropoff

The number of degrees away from the rest angle at which the stiffness of
the constraint decreases to zero, or increases from zero to full stiffness, depending on
the direction of the dropoff. A **Decreasing** dropoff means that the
stiffness starts at full strength and decreases to zero at the Dropoff
degrees from the rest angle. An **Increasing** dropoff means the stiffness starts at zero and increases to full stiffness at the specified degrees away from rest angle.

A small amount of **Increasing** dropoff can be useful with cloth to make it buckle
from a flat state very easily, adding additional wrinkling without changing the overall
bend stiffness and look of the cloth too significantly. Decreasing dropoff can be useful for making stretchy glue constraints that weaken right before breaking without snapping back.

Max Branch Angle

When adding torsion-free string bend constraints, they work best when the rest angle is close to straight. Setting the max branch angle allows something like a net of ropes to only have the bend constraints along the straight ropes, not on the perpendicular sections.

Enable Plasticity

Plasticity allows an object to flow to a new rest position. Under sufficient stress, the rest coordinates are blended to the current dynamic coordinates, so the object will retain its new shape.

### Plasticity

Threshold

Below this threshold the material will return to its original shape. When deformed past the threshold, it will begin to creep into its new configuration.

This is an absolute angle measurement. Because rest angles are often flat, the idea of a ratio that exists for stretch constraints does not apply to bend constraints.

Threshold Attribute

Attribute to scale the bend threshold by.

Rate

The speed at which the the material adopts its new rest angles when it begins to flow.

Rate Attribute

Attribute to scale the plastic rate by.

Hardening

Some plastic materials become stiffer after they've undergone deformation. These will have a hardening greater than 1. Some become softer so will have hardening less than 1.

Hardening Attribute

Attribute to scale the plastic hardening by.

Output Group

The generated stretch constraints are all added to this primitive group. This is useful to edit them later with a Vellum Constraint Property DOP.

Keep Unique within Output Group

Ensures that a particular point can only be constrained once by the constraints in the **Output Group**. When dynamically creating constraints it can be common to re-create constraints between the same points every frame. Keeping the points unique within the output group prevents a constant accumulation of constraints.

### Breaking

Enable Breaking

Constraint primitives can be removed by the solver when sufficient deformation or stress is applied, effectively breaking those constraints. You can also manually break constraints by deleting them during the solve to gain full control of the timing.

Running the simulation first with visualization enabled can be useful to find what are good values for the thresholds.

Threshold

The amount of stress or displacement on a constraint to trigger a break.

Threshold Attribute

Point attribute to scale the threshold by.

Scale

Single slider to scale the threshold.

Type

This controls how the solver decides to break weld and hair constraints.

None

No automated tests are performed.

Stretch Stress

The stretch stress must exceed the threshold.

Bend Stress

The bend stress must exceed the threshold.

Stretch Distance

The total distance from the goal location and the current location must exceed the threshold.

Stretch Ratio

The ratio between the current distance and the rest distance must exceed the threshold.

Bend Angle

The difference between the current angle and the rest angle must exceed the threshold. This value is specified in degrees.

Type

This controls how the solver decides to break distance constraints.

None

No automated tests are performed.

Stretch Stress

The stretch stress must exceed the threshold.

Stretch Distance

The total distance from the goal location and the current location must exceed the threshold.

Stretch Ratio

The ratio between the current distance and the rest distance must exceed the threshold.

### Attributes

Promotion Method

The scale-by-attribute functions have to apply the possible different scale attribute values on the points involved in the constraint to a single constraint. This controls how they are blended together.

Maximum

The maximum scale factor is used.

Minimum

The minimum scale factor is used.

Average

The average of the points scale factors is used.

Multiply

The scale factors are all multiplied together.

Use Source

The source points scale factor is used, such as in a stitch constraint.

Use Target

The target points scale factor is used, such as in a stitch constraint.

## Bindings

Geometry

Data on the simulation object to use as the source for computing edges, etc. Usually the display or collision geometry.

Constraint Geometry

Data on the simulation object to add the new constraints to.

See also |