Particle Bind operator

The Particle Bind operator can be used to create bindings between particles.

Bindings are not solved by this operator, only created. Bindings are solved by the global particle bind solver at the end of each simulation step. Bindings created by this operator will persist between events.


Particle Bind Rollout

Bind Settings

  • Unique ID per bind: each bind will be assigned a unique ID.

The unique ID will be unique across all Particle Bind operators.

  • Binding ID: the ID to assign to created bindings.

  • Stiffness: the stiffness value to assign to created bindings.

  • Variation %: the per-particle percentage of variation to apply.
  • Stiffness affects inertia: controls whether the stiffness value of bindings will affect inertia of bound particles.

“Inertia” is the tendency for an object to resist outside forces. When “stiffness affects inertia” is enabled, binding stiffness will affect how much energy will be transferred between the attached particles. Enabling this setting can help dissipate unwanted energy transfer between particles. This setting has no effect on particles whose bindings have a stiffness value of 1.

Stiffness Solver
  • Simple: bindings are solved in a straight-forward manner. Their stiffness is mostly dependent on bind solver step count.

  • Constrained: bindings are solved in a way that makes their stiffness somewhat independent of bind solver step count, at a small performance cost. This setting has no effect on bindings whose stiffness value is 1.


  • Bias: the post-initialization multiplier to apply to binding rest lengths.

  • Enable min length: applies a minimum length constraint to bindings, during initialization.

  • Absolute: sets the minimum length to an absolute value.

  • Absolute value: the absolute minimum length value.

  • Shape radius sum: sets the minimum length to the sum of the attached particles’ radii.

  • Scale radius sum: sets the minimum length to the sum of the attached particles’ scale values.

  • Mult: the multiplier applied to shape/scale radius sums.

  • Enable max length: applies a maximum length constraint to bindings, during initialization.

  • Max length value: the absolute maximum length value.

  • Stitch 0-length binds: binds with a rest-length of 0.0 will have their endpoint particles moved to a single position at their center, at the end of the time step.

Turn on “stitch 0-length binds” if you want to ensure that separate bind hierarchies (ex: cloth) joined together with 0-length binds have no gaps between them. If this option is off, the stretch of the 0-length binds at the end of the time step may be visible. NOTE: this setting modifies particle positions and may interfere with collision solvers.

  • Allow bind compression: binds that are compressed (binds attached to particles whose distance is less than the bind rest length) will not be affected by the solver.

By default, the particle bind solver will attempt to restore the distance between bound particles to the rest length of their bind. However, if “allow bind compression” is enabled, particles whose distance is less than the rest length of their bind, will not be affected by the solver. This allows you to bind particles in a way that will prevent bind stretching, but not bind compression. The inverse behavior is not provided as a setting because it’s essentially what the Particle Physics operator already does (the Particle Physics operator generates implicit binds that only move particles apart if they get too close together).

Post-process
  • Weld connected cloth meshes: binds connecting cloth meshes will result in affected cloth vertices being welded together.

This setting is similar to “stich 0-length binds”, except that it applies to bindings with any rest length, and is activated as a post-process on cloth/tet meshes. Thus, because it does not directly modify particle positions, it will not interfere with collision solvers.

Breaking

  • Breakable: controls whether bindings can break, based on various criteria.

  • %: the percentage of bindings that the break settings will apply to.

  • Break by stretch: enables binding breaking by overstretch.

  • Stretch %: bindings that stretch beyond this percent will break.

  • Break by compress: enables binding breaking by compression.

  • Compress %: bindings that compress beyond this percent will break.

  • Break by min length: enables binding breaking by explicit minimum length.

  • *Min length: bindings that compress to this length will break.

  • Break by max length: enables binding breaking by explicit maximum length.

  • Max length: bindings that stretch to this length will break.

  • Break by tension: enables binding breaking by tension.

  • Tension: if a binding’s attached particles have a tangential velocity magnitude that exceeds this value, the binding will break.

  • Variation %: the per-particle percentage of variation to apply.
Break Limits
  • Min frames until break: the minimum number of frames that a particle bind must violate a break condition, before it can break.
Break Mode
  • Delete bind: when this bind is broken, it will simply be deleted.

  • Split bind: when this bind is broken, it will be split from adjacent binds (creating a new particle in the process).

In some situations, deleting broken binds is not desirable. For example, if you are creating a rope from bindings and a bind within the rope is broken…that segment of the rope will simply disappear. In split bind bind, instead of disappearing, that segment of the rope will be split (at the location of one of the bind’s attached particles). Whichever end particle is chosen will be duplicated and the bind will be re-attached to the duplicated particle, allowing the bind to simply detach from the original particle.

Display

  • Show bindings: displays bindings as lines in the viewport.

  • Show info: displays binding info (particle ID #1, particle ID #2, stiffness and rest length) in the viewport.

Uniqueness

  • Seed: the seed value for all varied parameters.

Proximity Bind Rollout

Proximity bindings are created between neighbor particles that are a within a threshold distance from each other.

  • Enable proximity bind: controls whether proximity bindings will be created.

  • Absolute distance: controls whether neighbor particles must be within an absolute distance of each other in order to be bound.

  • Distance: the absolute distance value.

  • Shape diameter: controls whether neighbor particles must be within a distance less than a particle’s shape diameter in order to be bound.

  • Scale diameter: controls whether neighbor particles must be within a distance less than a particle’s scale diameter in order to be bound.

  • Distance mult: a multiplier applied to the shape/scale diameter.

  • Max binds: the maximum number of bindings that may form between a particle and its neighbors.

  • Variation %: the per-particle percentage of variation to apply.

Nearest particles

When the total number of valid neighbor particles exceeds the “max binds” value, these settings control how to sort the results.

  • Unsorted: no sorting will occur.

  • Sort by dist. (closest): the neighbors will be sorted from closest to furthest.

  • Sort by dist. (furthest): the neighbors will be sorted from furthest to closest.

  • Sort by size (biggest): the neighbors will be sorted from biggest to smallest.

  • Sort by size (smallest): the neighbors will be sorted from smallest to biggest.

  • Optimal sort for tet corners: Sorts neighbors in an ID-ascending manner, such that all tet corners within range will be bound to each other in a way that is optimal for 0-length bind stitching. When this mode is selected a “max binds” value of 1 is all that is necessary to ensure all tet corner particles will be properly connected.

Simulation Groups

  • Simulation groups: controls which neighbor simulation groups will be bind candidates.

Clusters

  • Enable clustering: controls whether binding candidates will be determined by cluster values.

  • Channel: the particle data channel to get cluster values from.

Family filtering

  • Bind All: all particles will be bound, ignoring their relationships.

  • Bind siblings: only sibling particles will be bound to each other.

  • Bind non-siblings: only non-siblings will be bound to each other.

Event filtering

  • All events: all particles may be bound, ignoring their event.

  • This event only: particles will only be bound to particles in the same event.

  • Exclude this event: particles will only be bound to particles in other events.


Family Bind Rollout

  • Bind to siblings: controls whether sibling particles will be bound to each other.

  • Bind first and last siblings: controls whether the siblings at the start and end of a chain of siblings will be bound together, to close the sibling loop.

  • Proximity: controls the sibling adjacency level that will be used during the bind operation.

Two particles are considered siblings if they were spawned from the same parent particle. Two particles are considered adjacent siblings if they were spawned in order, one immediately before or after the other.

A “proximity” value of 1 means that only adjacent siblings will be bound to each other. A “proximity” value of 2 means that particles will only be bound if they are both adjacent to a third sibling between them. A “proximity” value of 3 means that particles will only be bound if they are both adjacent to two other siblings, who themselves are both adjacent to each other, etc. It essentially relates to the number of sibling adjacency relationships that must exist between two particles, in order for them to be bound.

  • Bind to parent: controls whether child particles will be bound to their parent particle.

  • Only if first child: when enabled, only the first child of a parent particle will be bound to the parent.

Re-Bind

  • Re-bind broken bindings: controls whether previously-broken bindings will be re-bound.

  • By ID: when enabled, only broken bindings with a matching ID will be re-bound.

Target Bind

  • Bind to target: controls whether particles will be bound to their target.

  • Channel: the target channel containing the target particle ID.

Collisions

  • Enable CUDA collision solver: when enabled, the binds will be added to the CUDA collision solver, which evaluates at the end of every time stop for applicable binds.

Thickness

  • Thickness type: the particle property from which to derive the base thickness value.

  • Radius: the desired base thickness radius of the binds. Other binds within this distance will generate repulsion forces.

  • Multiplier: the multiplier to apply to shape/scale radius values.

The effective thickness radius of any given bind is the maximum thickness radius value of its two connecting particles. So if you have thickness mode set to “Scale Radius” and one particle has a radius of 1 and the other particle has a radius of 10, the effective thickness radius of the bind will be 10.

Inter-bind collisions
  • Only collide if particle sim groups are:: when enabled, inter-bind collision pair filtering will be governed by the simulation groups assigned to the connecting particles of the colliding binds.

  • Match type: controls how simulation groups assigned to particles of colliding bind pairs will determine whether the pair of colliding binds will be filtered from the collision solver.


  • Friction: the desired friction of the binds. The actual friction value between any two binds is the average of their friction values.

  • Object collisions: when enabled, binds will collide with objects added to a Collision operator in the same event.

Thickness/friction values for object colliders will be taken directly from the Collision operator itself. However, it’s important to note that only the “absolute radius” value of a Collision operator will be used as the thickness value for colliding object meshes.