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.
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.
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.
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.
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.
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.
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.
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.
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.
Enable clustering: controls whether binding candidates will be determined by cluster values.
Channel: the particle data channel to get cluster values from.
Cluster if equal: binding candidates must have equal cluster values.
Cluster if different: binding candidates must have different cluster values.
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.
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 target: controls whether particles will be bound to their target.
Channel: the target channel containing the target particle ID.
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.
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.