Houdini 20.5 Nodes Geometry nodes

Wrinkle Deformer geometry node

Deforms geometry to simulate surface wrinkles.

On this page

Overview

The Wrinkle Deformer SOP can deform geometry to create wrinkles without using a time-stepping simulation. It can be used to mimic wrinkles on soft surfaces like cloth or skin, as well as more stiff objects like tires. The deformer is fully quasistatic, so you can watch the wrinkles update while posing a character without scrubbing the timeline.

To produce wrinkles, you need a Rest Geometry and a Geometry to Deform. The Rest Geometry determines what the object looks like at rest and is used to produce distance constraints for the internal solver to use. Geometry to Deform is the geometry after it has undergone some deformations, which will then have wrinkles applied to it by the node.

There is also an option to provide Collision Geometry. Then wrinkles are generated while colliding with it to prevent the wrinkles from penetrating other objects. The wrinkle deformer does not detect or resolve self-collisions caused by the deformation.

Note

The Wrinkle Deformer SOP is topology dependent, so depending on the resolution of your mesh, the look will be different. The finer your mesh is, the smaller your wrinkles will be.

For more information, see the Wrinkle Deformer page in the Vellum chapter.

Inputs

Geometry to Deform

The geometry surface to deform.

Rest Geometry

The geometry at rest. The constraints are generated based on point distances in this geometry.

Collisions

A volume to use as a collider when deforming the mesh. This must be a VDB volume with SDF.

Parameters

Geometry

Group Type

Controls the type of group used to specify what to deform.

Group

The group on the rest geometry to deform. This is the part of the rest geometry that will have constraints generated to undergo deformation.

Triangulation

Distance 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.

Regular

Consistently split into triangles.

Alternating

Attempt to reverse the triangle splitting so a series of quads

have a less regular structure.

Pin Points

Points to pin to their original positions in Geometry to Deform.

Physical

Mass

mass value for the points that controls 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 each connected piece based on the piece’s volume and the Density parameter.

Calculate Varying

Calculate a varying value for the mass attribute for the points based on the Density parameter and polygon volumes or areas.

Density

The volume used in calculating mass is scaled by this value when Mass is set to Calculate Uniform or Calculate Varying.

Thickness

Thickness of the points, stored in pscale.

Unchanged

Do not set the pscale attribute.

Set Uniform

Set the pscale attribute to the specified value.

Calculate Uniform

Calculate a uniform value for pscale for the points on each connected piece based on the average edge length of the piece and the Edge Length Scale parameter.

Calculate Varying

Calculate a varying value for pscale based on the average edge length of polygons incident to each point and the Edge Length Scale parameter.

Edge Length Scale

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

Constraints

Constraint Iterations

The number of rounds of deformation the node will apply to resolve the constraints. More iterations results in more fully resolved wrinkles.

Topology

The method used to generate the distance constraints which describe how the geometry should wrinkle.

Cloth

Creates distance constraints between adjacent points and points across triangles. This option generally creates smaller wrinkles and uses a small number of constraints.

Surface Struts

Creates distance constraints from each point to all other points that are an edge distance of Neighbor Distance away. This option can create larger wrinkles than Cloth, but can also create many more constraints that become slower to solve.

Neighbor Distance

The number of edges between the two end points of each surface strut constraint. Higher distances produce larger wrinkles, but also create more constraints that take more time and memory to solve.

Rest Length Scale

The rest length of the distance constraints will be the original distance between the points multiplied by this parameter.

Rest Length Scale Scale Mode

Allows scaling the rest length scale by attributes.

No Scaling

The rest length scale is uniform across all constraints.

Scale by Attribute

The rest length scale applied to each constraint is multiplied by the average value of a given attribute on all points incident to that constraint.

Rest Length Scale Attribute

The point attribute used to scale the rest length scale.

Bend Stiffness

The stiffness of the constraint, which controls how strongly the constraint pushes points away when they are closer than its initial rest state.

Bend Stiffness Scale Mode

Allows scaling the bend stiffness by attributes.

No Scaling

The bend stiffness is uniform across all constraints.

Scale by Attribute

The bend stiffness of each constraint is multiplied by the average value of a given attribute on all points incident to that constraint.

Bend Stiffness Attribute

The point attribute used to scale the bend stiffness.

Stretch Stiffness

The stiffness of the constraint, which controls how strongly the constraint pulls points back towards its initial rest state.

Stretch Stiffness Scale Mode

Allows scaling the stretch stiffness by attributes.

No Scaling

The stretch stiffness is uniform across all constraints.

Scale by Attribute

The stretch stiffness of each constraint is multiplied by the average value of a given attribute on all points incident to that constraint.

Stretch Stiffness Attribute

The point attribute used to scale the stretch stiffness.

Attribute Source

Where attributes for scaling parameters are taken from.

Geometry

Take attributes from the Geometry to Deform.

Rest Input

Take attributes from the Rest Geometry.

Collisions

Enable Tangent Plane Collisions

When enabled, each point treats its tangent plane as a collider during the wrinkle solve. This can be a cheap method of faking collision effects in certain cases where the deformation should not oppose the normal direction without creating a VDB. For example, generating wrinkles in clothes against a character’s body or in thin objects to prevent self-collisions.

This feature respects the normal attribute of the Geometry to Deform to find the tangent plane.

Tangent Plane Inset

An amount to inset the tangent plane along the normal direction before detecting collisions. This creates more of a buffer between the point’s original position and its collider.

Inset Scale Mode

Allows scaling the Tangent Plane Inset by attributes.

No Scaling

The inset is uniform across all constraints.

Scale by Attribute

The inset at each point is multiplied by that point’s value of a given attribute.

Inset Attribute

The point attribute used to scale the inset.

Add Ground Plane

You can have a ground plane to act as a collider while generating wrinkles.

None

No ground plane will be used.

Ground Plane

Uses a ground plane with the specified position and orientation.

Height Field

Uses a heightfield as the ground plane.

Height Field

SOP path to the height field geometry.

Ground Position

The location of the center of the ground plane.

Ground Up

The orientation of the ground plane.

Collision SDF Offset

A buffer distance to leave between the wrinkles and the surface of the Collision Geometry and ground plane.

Set Uniform

Use a buffer with the specified distance.

Use Thickness

Use each point’s pscale attribute that represents its thickness as the buffer distance.

Output

Wrinkle Scale

This can be used to dampen or amplify the size of the wrinkles.

Wrinkle Scale Mode

Allows scaling the wrinkle scale by point attributes.

No Scaling

The wrinkle scale is uniform across all points.

Scale by Attribute

The wrinkle scale of each point is multiplied by that point’s value of a given attribute.

Wrinkle Scale Attribute

The point attribute used to scale the wrinkle scale.

Ignore Collisions When Scaling

When enabled, scales below 1 will blend the wrinkled output with the incoming deformed mesh before any collisions are processed. Collisions will also not be re-applied after the scaling. This can also cause the output to float away from collider surfaces when the scale is greater than 1.

When disabled, scales below 1 will blend the wrinkled output with the incoming mesh after being pushed out of the colliders and this step is re-applied after scaling.

Max Deformation Angle

The maximum allowed angle between the point deformation deltas and point normals.

Delta Smooth Iterations

The number of iterations of Delta Mush to apply after deformation.

Update Affected Normals

Recomputes any point normals that are affected by the wrinkling operation. This option has no effect if the input geometry does not have a normal attribute.

Visualization

Outputs information about the wrinkle deformation solve to colors on the output surface.

None

The color is not set.

Stress

Set the color to indicate the stretching force applied by the constraints.

Distance

Set the color to indicate how far constraints are stretched.

Ratio

Set the color to indicate the ratio between the original and current stretch.

Max Stress

The stress level corresponding to the maximum color.

Max Distance

The distance corresponding to the maximum color.

Max Ratio

The ratio corresponding to the maximum color.

See also

Geometry nodes