Skip to content
Voro
  1. Geometry
  2. Solvers

Deform

Deform turns input vertices into a constraint network for flexible meshes, wires and lattice structures. Distance constraints resist stretching, volume constraints hold tetrahedral volume, and bend constraints use surface topology. Constraint rules let you pin or weight regions of the object.

Place Deform in the Geometry view, under Solvers. Connect your geometry and keep Source on Input Geometry. Mesh topology supplies edges and, where available, bend relationships. With a raw point set, Link Radius and Max Links / Point control the proximity connections.

To learn the response without input, choose Param Lattice. Start with the default 6 by 6 by 6 lattice, Cell Size at 0.1 and Pin Top Band enabled. Adjust gravity or compliance while watching the pinned structure stretch.

The geometry input supplies the object to deform. Resources > Connections accepts two SDF inputs, sdf and sdf2, and a velocity field.

Outputs carry P, v, id and Cd. When the input supplies surface triangles, the primary point output retains that topology over the deformed vertices. A raw point input does not acquire a polygon surface automatically.

  • Simulate pauses advancement and Reset restores the starting object. Auto-Rebuild or the Rebuild pulse applies structural edits to the constraint network.
  • Link Radius at 0 uses automatic spacing. Max Links / Point caps proximity links. Too small a radius can leave a raw point set disconnected.
  • Distance, Volume and Bend Family enable the available constraint types. A larger compliance makes that family softer. Start with two Substeps, four Iterations and Gauss-Seidel; Averaged Jacobi gives a softer solve.
  • Constraint Rule Stack includes pin, stiffen, soften and family rules. Use attribute maps to weight regions. Pin and mass changes rebuild the structure; distance, volume and bend rule weights can retune compliance live.
  • Floor Enabled, Contact Radius, Friction and Restitution control external contacts. Self Collision starts off and has separate radius, stiffness and neighbor limits.
  • Velocity Field Coupling starts at 0. Raise it after connecting a velocity resource.

Bend needs surface relationships, and volume needs tetrahedra or the generated lattice. Enabling a family cannot supply missing topology.

Use the Resources Status to distinguish a pending rebuild from a live parameter change. Start with a small mesh before raising Max Points, link counts or self-collision neighbors.

Inputs

  • geometry points
  • sdf sdf collider
  • sdf2 sdf collider
  • velocity velocity field

Outputs

  • P points
  • v points
  • id points
  • Cd points

Deform

Auto-Rebuild on Build Params (Autorebuild) Toggle op('deform').par.Autorebuild
Default:
On
Options:
Off, On
Rebuild (Rebuildnow) Pulse op('deform').par.Rebuildnow
Default:
None
Simulate (Simulate) Toggle op('deform').par.Simulate
Default:
On
Options:
Off, On
Reset (Resetsolver) Pulse op('deform').par.Resetsolver
Default:
None

Source

Source Geometry (Hdrsource) Str op('deform').par.Hdrsource

Read only.

Default:
"" (Empty String)
Source (Source) Menu op('deform').par.Source
Default:
0
Options:
Input Geometry (deform the wire), Param Lattice (no-input demo)
Link Radius (0 = auto) (Linkradius) Float op('deform').par.Linkradius
Default:
0
Range:
0 to 100
Max Links / Point (Maxlinks) Int op('deform').par.Maxlinks
Default:
12
Range:
2 to 32
Lattice Res X (Resx) Int op('deform').par.Resx
Default:
6
Range:
1 to 40
Lattice Res Y (Resy) Int op('deform').par.Resy
Default:
6
Range:
1 to 40
Lattice Res Z (Resz) Int op('deform').par.Resz
Default:
6
Range:
1 to 40
Lattice Cell Size (Cellsize) Float op('deform').par.Cellsize
Default:
0.1
Range:
0.0001 to 2
Pin Top Band (lattice) (Pintop) Toggle op('deform').par.Pintop
Default:
On
Options:
Off, On
Distance Family (Distance) Toggle op('deform').par.Distance
Default:
On
Options:
Off, On
Volume Family (lattice) (Volume) Toggle op('deform').par.Volume
Default:
On
Options:
Off, On
Max Points (capacity) (Maxpoints) Int op('deform').par.Maxpoints
Default:
40000
Range:
256 to 4000000

Solver

Solve (Hdrsolver) Str op('deform').par.Hdrsolver

Read only.

Default:
"" (Empty String)
Dt (Dt) Float op('deform').par.Dt
Default:
0.0166667
Range:
0.0001 to 0.5
Substeps (Substeps) Int op('deform').par.Substeps
Default:
2
Range:
1 to 64
Iterations (Iterations) Int op('deform').par.Iterations
Default:
4
Range:
1 to 128
Scheduler (Scheduler) Menu op('deform').par.Scheduler
Default:
0
Options:
Gauss-Seidel (AVBD, few iters), Averaged Jacobi (softer)
Distance Compliance (Compliancedist) Float op('deform').par.Compliancedist
Default:
0.0003
Range:
0 to 0.1
Volume Compliance (Compliancevol) Float op('deform').par.Compliancevol
Default:
1e-8
Range:
0 to 0.1
Bend Family (mesh) (Bend) Toggle op('deform').par.Bend
Default:
Off
Options:
Off, On
Bend Compliance (Compliancebend) Float op('deform').par.Compliancebend
Default:
0.00001
Range:
0 to 0.1
Damping (Damping) Float op('deform').par.Damping
Default:
0.99
Range:
0 to 1
Max Velocity (Maxvelocity) Float op('deform').par.Maxvelocity
Default:
20
Range:
0.1 to 1000
Gravity (Gravityx) Float op('deform').par.Gravityx
Default:
0
Gravity Y (Gravityy) Float op('deform').par.Gravityy
Default:
-9.81
Gravity Z (Gravityz) Float op('deform').par.Gravityz
Default:
0
Velocity Field Coupling (vel:) (Windcoupling) Float op('deform').par.Windcoupling
Default:
0
Range:
0 to 1000

Contact

Contact (Hdrcontact) Str op('deform').par.Hdrcontact

Read only.

Default:
"" (Empty String)
Floor Enabled (Floorenabled) Toggle op('deform').par.Floorenabled
Default:
On
Options:
Off, On
Floor Y (Floory) Float op('deform').par.Floory
Default:
-1
Range:
-100 to 100
Contact Radius (Contactradius) Float op('deform').par.Contactradius
Default:
0.02
Range:
0 to 1
Self Collision (Selfcollision) Toggle op('deform').par.Selfcollision
Default:
Off
Options:
Off, On
Self Radius (Selfradius) Float op('deform').par.Selfradius
Default:
0.01
Range:
0 to 1
Self Stiffness (Selfstiffness) Float op('deform').par.Selfstiffness
Default:
0.8
Range:
0 to 1
Self Max Neighbors (Selfmaxneighbors) Int op('deform').par.Selfmaxneighbors
Default:
64
Range:
1 to 512
Restitution (Restitution) Float op('deform').par.Restitution
Default:
0.1
Range:
0 to 1
Friction (Friction) Float op('deform').par.Friction
Default:
0.9
Range:
0 to 1

Colour

Colour (Hdrcolor) Str op('deform').par.Hdrcolor

Read only.

Default:
"" (Empty String)
Colour Max Speed (Maxspeedcolor) Float op('deform').par.Maxspeedcolor
Default:
5
Range:
0.01 to 100

Rules

Constraint Rules (Hdrrules) Str op('deform').par.Hdrrules

Read only.

Default:
"" (Empty String)
Constraint Rule Stack (Deformrules) Str op('deform').par.Deformrules
Default:
"" (Empty String)