Free Electron Documented Operators
Common Operator Info
FE LengthCorrectOp


Adjusts the length of each segment in the input to match the length of the same segment in a reference pose.

This effect may resemble a rudimentary cloth solver.

An attribute can be specified to mask the effect and pin down particular points.


The edges on the Input Surface are adjusted to match the original lengths on the Reference Surface.

A Collision Surface can be provided to limit the corrections.


Some points can be locked to inhibit them from being corrected. For hair curves, or similar situations, Root Lock can be used to prevent any change to the zeroth vertex of every primitive. In other situations, it is probably necessary to utilize Locking which reads the Lock Attribute. A locking value of 1.0 prevents all change to that point by this node. Fractional values are permitted.

The correction propagation is limited by the Iterations. The computation time is roughly proportional to the number of iterations.

Using a Tension Rate or Compression Rate less than one will reduce the magnitude of adjustment per iteration for pulling points together or pushing them apart.

The Correction Bias can be used to cause uneven propagation of corrections. The default is 0.5 is an equal weighting (half and half). For example, if hair is root locked, biasing the correction to a lower value may reduce the number of iterations needed to reach a reasonable solution.

Suspension will confine any changes to the surface of the original input. When set to 1.0, each point will only slide along the original surface. Fractional values are permitted.

Activating Temporal will allow each frame to start solving using a portion of the previous frame. The Response is the fraction that is replaced by the new data, so a response of one would ignore the previous frame. Once the previous frame and new input frame are blended, the Temporal Offset is added to each frame. This can be tuned to resemble an external force, like wind or gravity.

With Collision Avoidance turned on, point will be kept out of the collider by a distance of Margin. A partial response per iteration can be specified with the Rate.

The input can Collide With Each Point, each Primitive Bounds, or as Curve Bounds around Root. The distinction is intended for colliding with curves. The point mode will collide as segments. The general primitive mode will collide with each primitive's bounding sphere. The special curve mode uses a bounding sphere centered around the root as well as some additional treatment that presumes that the curves resemble fur or grass. In either primitive mode, each bounding sphere is scaled by the Shell Roundness perpendicular to the general direction of the presumed curve.

The Hit Limit limits how may contact points will influence each collision.

Collision Spread propagates the avoidance to points connected nearby. The Range is how far the effect is spread per iteration and the Rate can reduce the impact per iteration.

If Routing is on, vertices between named waypoints are adjusted towards retaining straight lines between those waypoints. This presumes the input is made of curves. The Rate moderates the effect. The waypoints are defined by a string point Attr. Each waypoint should be a unique string and all points between waypoints should have a blank string.


tested in Houdini and Maya

Web page, Copyright 2015, Free Electron Organization