Documented Operators
Common Operator Info |

Houdini |
Chain Tree run as Arnold procedurals |

The **Link Surfaces** provide one or individual links to select from.

If the **Scan Surfaces** is also provided,
it should contains a set of matching links, but perhaps at a different resolution.
The intention is scan the geometry of an accurate render model while using
a simpler stand-in model in the output.
If this input is not provided, the regular link input is scanned instead.

The **Max Step Change** is used to detect short circuit failures tracking the curve.
Higher values are more lenient.

If **Wrench** is on and the given point vector **Attr** exists,
this wrench vector can be used to twist the result chain relative to the curve normal,
which also needs to be provided.
When the wrench vector and normal are aligned, no wrenching occurs.

If multiple links are provided, the **Fragment** option can be used to determine
which primitives belong to each links. All primitives with a matching string in for the given
**Attr** will be considering one whole link.
All links are scaled by the vector **Link Scale**.

Links will stop being generated after reaching the **Max Link Count**.
If **Stop After** is non-zero, any links past this count will overlap the last link.
If the end point on the curve is reached before reaching the limit,
the remainder of the links will only be added if **Generate Max** is on.
The remainder will overlap the last link.

If more than one link surface is given, the **Link Order** switches
between applying them in order or randomly.
The option will probably be expanded in the future.

The input links, or special scan links if provided, are automatically evaluated
for a variety of geometric parameters, but the values can be tweaked.
The **Pivot Base Tweak** and **Pivot Tip Tweak**
adjust the cross section center at each end of each link.
The **Pivot Gap Tweak** adjust the distance from the tip of one
link to the base of the next.
The **Pivot Yaw Tweak** adjusts where the cross section of a neighboring
link provide on of the pivots for rotation of a particular link.

If the 180 degree rotation of the links is important, such as if they need to
match the vertex layout of some reference models, then you alter the **Flip Twist For**
every link with an index that matches the given regular expression.

The output **Point Attr** and **Primitive Attr**
can be set to a string based on the **Link Name**,
potentially made unique by **Replacing** a substring
with the link index, **Starting With** a particular number.

In simple terms, each incremental link is advanced forward, twisted 90 degress, and then pivoted to line up with the curve. To break up the simplicity, many parameters are available to tune the stepping from one link to the next.

The **Spiral Step** is the large twist between links,
usually around 90 degrees.
The first link can be adjusted with a **Start** angle.
Each link can twist a little differently with the **Spiral vary**.
This variation can be tuned to **Fade** as the curve straightens out.

The angle that each link rotates around the previous link's cross section can be
adjusted with **Yaw Vary** and reduced with **Fade**.

The angle that each link rotates around its own cross section can be
adjusted with **Pitch Vary** and reduced with **Fade**.

The distance that each link can shift laterally inside the previous link's hole can be
adjusted with **Up Vary** and reduced with **Fade**.

The distance that each link can shift laterally inside its own hole can be
adjusted with **Side Vary** and reduced with **Fade**.

As the curvature increases, a **Slack Gap** can introduce more
space between the inside edges of the links to represent the reduced tension.
The **Slack Min** and **Max** control a range of
curvature of where to start and limit this effect.

The **Random Seed** simply picks a particular set of random
numbers for the variations.
The **Randomness** scales all random effects equally.

The **Rotation Limit** can prevent tight turns.
Any following links will still continue to turn as much as permitted
while trying to return to the curve.

**Short Circuit Protection** will try to detect
when the next nearest point on the curve is actually jumping
to a whole different area of the curve and then fall back to a
best-guess parametric advance.

Using **Clamp Start** will lock the facing vector of
the first link to the **Start Normal**.
Think of the facing vector as a needle going through the hole.
The **Clamp End** option will likewise lock the facing vector of
the last link to the **End Normal**.
If the end is clamped, an iterative solver will twist links and adjust gaps
to coerce the last link into the right location and orientation.
Several **Fitting Passes** will probably be needed where each
pass may only apply a partial correction, determined by **Rate**.
If the solution gets jumpy, it may help to reduced the rate below one
and perhaps increase the number of iterations.

Normally, the pivots are strictly applied with each frame acting independently.
Activating **Temporal** mode, will allow some slip in the angles between links.
This slip is carried between frames up to the given **Slip Limit Twist**,
**Yaw**, and Pitch.
This persistent slip is reduced by the **Slip Response** each frame.

The **Draw Guides** option may add debug geometry to the output.

Selecting **Output Transform Triangles** will added simple triangles instead of links.

The number of incrementally generated **Links Along Curve** is written to a parameter
as well as the total **Links in Output**.
These can be different if some of the links were force to overlap at the end.

tested in Houdini and Maya

Web page, Copyright 2015, Free Electron Organization