On this page  
Since  18.5 
Overview
This node copies and deforms geometry from the first input to fit along the curve or curves in the second input.
This is similar to the Path Deform node, which deforms geometry according to the shape of the curve. However, that node deforms all geometry to a curve, while this node lets you repeat one or multiple geometry “pieces” along the length of the curve, with controls for number of pieces, the pattern, the joining between the pieces, and so on.
How to

With this node selected in the network editor, press Enter in the viewer or click the Handles tool to see the handles for this node.

Drag the red “tail” handle to control where along the curve the chain starts.
You can drag the handle past the start of the curve, in which case the Start behavior parameter controls what happens.

Drag the green “head” handle to control the range of the chain along the curve.
You can drag the handle past the end of the curve, in which case the End behavior parameter controls what happens.
Inputs
Geometry to repeat
The geometry to copy along the curve. This can be one thing or multiple pieces. The Find Pieces parameter controls whether to separate this geometry into pieces by connectivity, or by an attribute.
Curves
The curve(s) along which to copy and deform the object(s) from the first input.
Parameters
Geometry Group
The primitives to use from the first input. Leave this blank to use all geometry.
Curve Group
The curve primitives to use from the second input. Leave this blank to use all curves.
Mode
How this node copies and deforms the geometry from the first input onto the curve(s) in the second input.
Deform Along Curve
Deforms the pieces to follow the shape of the curve.
Deform Between Pivots
Keeps the pieces rigid, deforms the pivots between the pieces.
Chain Pattern
Enable Deformation
Whether to deform the repeated geometry along the supplied curve. If you turn this on, the node will position the pieces rigidly along a straight line according to the parameters below, instead of deforming them to follow the curve. This may be useful if you just want a stack of objects, or if you plan to deform the chain using a different node later.
Find Pieces
How to separate the geometry into pieces to be repeated along the curves.
By Connectivity
Consider groups of fused primitives to be a single piece.
By Piece Attribute
Consider primitives with the same value for a given attribute to be parts of the same piece.
Piece Attribute
When Find Pieces is By Piece Attribute, the name of the primitive attribute that controls which piece the primitive is a part of.
Number of Pieces
How many pieces to repeat along the curve.
Fit Pieces Along Curve
Places as many whole pieces as will fit along the curve.
Explicit Number
Place a set number of pieces along the curve, scaling them to fit.
Num Pieces
When Number of Pieces is Explicit Number, the number of pieces to place along the curve.
Fraction of Curve
When Number of Pieces is Fit Pieces Along Curve, this is the fraction of the curve length to use when calculating how many pieces will fit. For example, 0.5
gives enough pieces to fit half the curve length. The default is 1.0
(enough pieces to fit along the full curve length).
Only Repeat Full Pattern
With multiple pieces you can specify the pattern in which the different pieces appear along the curve (see the Pattern group below). When Number of Pieces is Fit Pieces Along Curve and this checkbox is on, the node will calculate how many pieces it needs to fit the maximum whole number of patterns along the curve (so the pattern will not be cut off early at the end of the curve).
Map Length Using
How to specify the length the chain along the curve.
Fraction of Curve Length
For example, 0.5
(half as long as the curve), 1.0
(as long as the curve). 2.0
(twice as long as the curve), and so on.
Fraction of Geo Length
Specify length relative to the length of the undeformed chain. For example, 0.5
(half the length of the chain), 1.0
(the full length of the chain), 2.0
(twice as long as the undeformed chain), and so on.
Distance
Specify arc length in Houdini world units. For example, 0.5
(half a unit long), 1.0
(one unit long), and so on.
Map Length
The length of the chain along the curve, in the units specified by the Map Length Using popup menu.
Override
Turn this on to specify the length percurve (when the second input has multiple curves), using a curve attribute.
Pos End Attrib
When Override is on for the length, this is the name of a curve attribute to use to set the chain length percurve.
Offset Position Using
How to specify the start point of the chain along the curve.
Curve U Position
From 0.0
(start of the curve) to 1.0
(end of the curve).
Fraction of Geo Length
Specify start position relative to the length of the undeformed chain. For example, 0.5
(start half the length of the chain along the curve), 1.0
(start the full length of the chain along the curve), 2.0
(start twice the length of the undeformed chain along the curve), and so on.
Distance
Specify arc distance along the curve in Houdini world units. For example, 0.0
is the start of the curve, 1.0
is one Houdini distance unit along the curve, and so on.
Position Offset
Where to start the chain along the curve, in the units specified by the Offset Position Using popup menu.
Override
Turn this on to specify the start position percurve (when the second input has multiple curves), using a curve attribute.
Pos Offset Attrib
When Override is on for the offset, this is the name of a curve attribute to use to set the offset percurve.
Start Behavior
What to do when the start position is before the start of the curve.
Extend
Position the chain along an invisible line extending out along the start tangent of the curve.
Clamp
“Freeze” the geometry at the curve start. This causes geometry to “bunch up” and overlap if you try to move it past the start of the curve.
Clip
Cuts and deletes any geometry that would appear before the start of the curve. This is the same effect you would get with a Clip node.
End Behavior
This specifies the operation to apply to the geometry that goes beyond the end of the curve.
Extend
Position the chain along an invisible line extending out from the end tangent of the curve.
Clamp
“Freeze” the geometry at the curve end. This causes geometry to “bunch up” and overlap if you try to move it past the end of the curve.
Clip
Cuts and deletes any geometry that would appear after the end of the curve. This is the same effect you would get with a Clip node.
Pattern
Repeat Pattern
When the first input has multiple pieces, this controls the order in which they appear in the chain.
Cycle
Cycle through the different pieces.
Explicit Pattern
Cycle through an explicit list of pieces in the Class Pattern parameter.
Random
Choose each piece along the chain randomly.
Weighted Random
Choose each piece randomly, but you can specify perpiece “weights” in a multiparm, so some pieces are more likely than others.
Weighted Random from Attribute
Choose each piece randomly, but you can specify perpiece “weights” using an attribute on the piece geometry, so some pieces are more likely than others.
Class Pattern
When Repeat Pattern is Explicit Pattern, this is a space separated list of piece values to cycle through along the chain. If the pieces are defined by connectivity instead of an attribute value, each piece is represented by an arbitrary number from 0
to number of pieces  1
.
Offset
Offsets the start of the pattern by a certain number of pieces.
Seed
When Repeat Pattern is Random, Weighted Random or
Weighted Random from Attribute, this is the seed value for the random number generator. The same seed value always generates the same “random” values. For example, if you want different random values for each frame, use $F
(the frame number) as the seed.
Repeat Length
When Repeat Pattern is Random, Weighted Random or Weighted Random from Attribute, how many random pieces to choose for the pattern. If the curve first more pieces than this, the pattern will repeat.
Weight Attribute
When Repeat Pattern is Weighted Random from Attribute, this is the name of a primitive attribute on the piece geometry that sets the piece’s random weighting. The weighting for a piece is the average of this attribute’s values across the primitives of the piece.
Initialize Weights
When Repeat Pattern is Weighted Random, click this button to automatically set up the multiparm with instances corresponding to each piece. You can then edit the Weight for each piece.
Number of Pieces
This is a multiparm that allows you to set a Weight for each piece, controlling how likely it is to appear randomly in the chain relative to other pieces. Click Initialize Weights to automatically set up the multiparm with instances corresponding to each piece.
Piece
The piece value for this piece. If the pieces are defined by connectivity instead of an attribute value, each piece is represented by an arbitrary number from 0
to number of pieces  1
.
Weight
A value representing how likely this piece is to appear in the chain, relative to other pieces. The weights of all pieces are normalized to add up to 1.0
and then used as probabilities. For example, if three pieces have weights of 1
, 1
, and 2
, the last piece is likely to appear 50% of the time, while the other two are each likely to appear 25% of the time.
Use Start Cap
Turn this checkbox on to explicitly use a certain piece as the first item in the chain.
Start Cap Piece
The piece value for the piece to use as the first item in the chain. If the pieces are defined by connectivity instead of an attribute value, each piece is represented by an arbitrary number from 0
to number of pieces  1
.
Use End Cap
Turn this checkbox on to explicitly use a certain piece as the last item in the chain.
End Cap Piece
The piece value for the piece to use as the last item in the chain. If the pieces are defined by connectivity instead of an attribute value, each piece is represented by an arbitrary number from 0
to number of pieces  1
.
Exclude End Pieces from Pattern
When this is on, the start/end pieces do not repeat as part of the pattern.
Do Not Deform End Pieces
When this is on, the start/end pieces do not deform to follow the shape of the curve.
Deformation
Enable Scale
Turn this on to allow scaling the piece geometry “outward” (away from the curve).
Base Scale Factor
A “global” outward scaling factor along the entire length of the curve. For example, 1.0
doesn’t change the scale of the chain, 0.0
collapses the chain down to nothing, 0.5
scales the chain inward by half, 2.0
scales the chain outward by two times.
Enable Attribute Scale
Set this popup menu to Scale by attribute to scale the chain by the value of a point attribute on the curve. (This is multiplied by both the base factor and the ramp, if you use the ramp parameters below.)
Curve Attribute
When the popup menu next to Base Scale Factor is Scale by attribute, this is the name of a point attribute on the curve that scales the chain geometry inward or outward.
Enable Scale Ramp
Turn this on to use a ramp to scale the chain geometry inward or outward along the length of the curve.
Scale Ramp
When Enable scale ramp is on, this ramp controls the inward/outward scaling along the length of the curve. The horizontal axis represents the length of the curve (not the length of the chain). The vertical axis represents the scale. (The ramp scale is multiplied by both the base factor and the attribute, if you use the attribute parameters above.)
You can set scales outside the current ramp bounds by selecting a ramp point and typing a value in the Value field.
Enable Rotation
Turn this on to allow rotating the chain geometry around the curve.
Base Rotation
A “global” rotation angle (in degrees) along the entire length of the curve.
Enable Attribute Scale
Set this popup menu to Scale by attribute to scale the rotation by the value of a point attribute on the curve. (This is multiplied by both the base factor and the ramp, if you use the ramp parameters below.)
Curve Attribute
When the popup menu next to Base Rotation is Scale by attribute, this is the name of a point attribute on the curve that scales the rotation of the chain geometry.
Enable Rotation Scale Ramp
Turn this on to use a ramp to control the rotation angle along the length of the curve.
Rotation Scale Ramp
When Enable Rotation Scale Ramp is on, this ramp scales the Base Rotation along the length of the curve. The horizontal axis represents the length of the curve (not the length of the chain). The vertical axis represents a scaling factor to multiply by the Base Rotation. (The ramp scale is multiplied by both the base rotation and the attribute scaling factor, if you use the attribute parameters above.)
You can set scales outside the current ramp bounds by selecting a ramp point and typing a value in the Value field.
Fusing
Where the end of one piece meets the start of the next piece, the node can fuse points within a certain snapping distance, and delete coincident faces, giving you better geometry.
Fuse Repeat Geometry
Whether to fuse overlapping points (within the Snap distance) where the end of one piece meets the start of the next piece.
Snap Distance
At the meeting point between pieces, the node will fuse points on the different pieces if they are within this distance (in world units).
Fuse Method
You can restrict which points on each piece are allowed to fuse.
By Group
Only specific points are allowed to fuse (using a named group or point number syntax).
By Start and End Groups
On the preceding piece, only points specified in an “end” group are allowed to fuse. On the following piece, only points in a “start” group are allowed to fuse.
Fuse Group
When Fuse Method is By Group, this specifies which points can fuse together. This can be a named group or point number syntax.
Fuse Start Group
When Fuse Method is By Start and End Groups, this specifies which points on the following piece can fuse. This can be a named group or point number syntax.
Fuse End Group
When Fuse Method is By Start and End Groups, this specifies which points on the preceding piece can fuse. This can be a named group or point number syntax.
Rigidity
Normally the pieces deform to the shape of the curve. You can instead make the pieces completely or partially rigid (nondeforming).
Enable Rigidity
Turn this on to make the pieces fully or partially rigid.
Constraint Method
How to specify the rigidity.
By Rigidity Group
Specify a list/group of primitives (polygon faces) from the first input that stay rigid.
By Piece Attribute
Control which primitives (polygon faces) stay rigid using an attribute on the primitives.
Piece Attribute
When Constraint Method is By Piece Attribute, this is the name of a primitive attribute on the geometry in the first input that controls rigidity.
Rigid Prims
When Constraint Method is By Rigidity Group, this specifies which primitives from the first input stay rigid. This can be a named group or primitive number syntax
Enable Stretch Softening
Smooths nonrigid points within a certain distance (Soften radius parameter below) of rigid primitives for smoother transitions between deforming and rigid parts. Turn this on if you see abrupt stretches and/or angles between rigid and nonrigid parts.
Soften Distance Metric
When Enable stretch softening is on, how to measure the distance between nonrigid and rigid points:
Edge
Find the shortest path along edges between two points. This is faster but less accurate than the “Surface” method.
Surface
Compute (approximately) the shortest distance across the model surface. This is slower but more accurate than the “Edge” method.
Soften Radius
When Enable stretch softening is on, the node smooths nonrigid points within this distance (in world space, using the Soften distance metric) of a rigid point to make the transition less abrupt. The effect falls off with the distance to the nearest rigid point, down to zero at the exact soften radius. You can shape the falloff using the falloff ramp below.
Enable Falloff Ramp
Turn this on to control the shape of the falloff within the Soften radius with a ramp.
Soften Falloff
When Enable falloff ramp is on, this is the shape of the falloff, where the horizontal axis is the distance from the rigid part (from zero distance on the left to the full falloff radius on the right), and the vertical axis is the amount of smoothing.
Allow Rigid Geometry to Stretch
When this is on, rigid geometry can stretch along the Forward direction by the same amount as nonrigid geometry.
Enable Rigidity Mask
Turn this on to specify how rigid each rigid component is.
Base Rigidity Mask
This is the base rigidity of rigid points. You can use an attribute on the piece geometry to scale this value. For example, 1.0
is fully rigid, 0.0
is not rigid, 0.5
is halfway. If you just want all rigid points to have the same amount of rigidity, you can set this without specifying an attribute.
Scale by Attribute
Set the popup menu next to Base Rigidity Mask to Scale by Attribute to scale the rigidity of each point in the first input using the value of a point attribute.
Geometry Attribute
When the popup menu next to Base scale factor is set to Scale by attribute, this is the name of a point attribute on the model to scale by.
Alignment
By default, Houdini expects instance geometry to be modeled so that the “up” direction (for example, from the root of a tree to the top) is along the +Y axis, and the “forward” direction (for example, from the back of a car to the front) is along the +Z axis. You can modify this using the parameters below.
Forward Direction
The vector in world space which gets mapped onto the deformation curve.
X/Y/Z
The respective positive world axes.
Custom
The vector given by the Forward Axis Vector.
Forward Axis Vector
If Forward Direction is set to Custom, this is the direction of the axis vector.
Up Direction
The vector in world space which gets aligned with the curve up vector.
X/Y/Z
The respective positive world axes.
Custom
The vector given by the Up Axis Vector.
Up Axis Vector
If Up Direction is set to Custom, this is the direction of the up vector.
Center Geometry on Curve
Whether to align the center of the bounding box of the repeated geometry with the curve.
Bounds Group
The group of primitives to use to find the bounding box of each piece of geometry. The bounding box of each piece is used to determine how much space the piece takes up on the curve.
Piece Spacing
The spacing between pieces. A positive Piece Spacing will add space between each piece on the curve. A negative Piece Spacing will make pieces overlap.
Piece Rotation
Each successive piece will be rotated by an additional Piece Rotation degrees from the previous pieces rotation.
The curve alignment allows specifying how the curve’s up attribute should be computed.
Output Repeated Geometry To Be Deformed After
When enabled, the geometry will not be deformed along the provided curve, and will instead be placed in a straight line along the Z axis. This geometry can then be provided to a Path Deform SOP along with the input curve to be deformed accordingly.
Curve Up Control
This controls the method that the curve uses to set the up vector along the curve. By default the up vectors will be modified slightly to be perpendicular to the curve tangent.
Curve Normal
Sets the start up vector to be the normal of the plane that the curve would define if planar.
X/Y/Z
Sets the start up vector to be in the X/Y/Z direction.
Custom
Sets the start up vector to be the vector defined in Curve Up Vector.
Curve Up Vector
The vector that the start up vector for the curve will be set to when Curve Up Control is set to Custom.
Orient Using Point Attributes
When enabled, any curve point attributes P
, N
, up
, orient
, rot
, trans
,
pivot
, pscale
, scale
, and transform
can be used to specify how the geometry
is deformed around specific points on the curve.
Attributes
Attributes to Transform
A spaceseparated list of point attribute names/patterns for attributes that should be transformed when the point is transformed by this node. The node uses each attribute’s type info to transform it properly (as point, vector, or normal data).
Recompute Affected Normals
Recomputes normals of polygons that have both transformed and untransformed points. If you're transforming the full geometry or all connected components, this doesn’t matter. It only matters if you deform part but not all of a connected piece.
This does nothing if P
is not transformed (see Attributes to Transform above).
Preserve Normal Length
When this is on, the deformation does not change the scale of the geometry normals.
Output Position Along Curve
When this is on, the node adds a point attribute to the output geometry, containing the corresponding position along the curve from 0.0
(curve start) to 1.0
(curve end).
Position Along Curve Attribute
When the checkbox is on, add a point attribute with this name to the output geometry, containing the corresponding position along the curve from 0.0
(curve start) to 1.0
(curve end).
Output Index Along Curve
When this is on, the node adds a point attribute to the output geometry, containing the corresponding “item number” of the corresponding piece along the curve.
Repeat Index
When the checkbox is on, add a point attribute with this name to the output geometry, containing the corresponding “item number” of the corresponding piece along the curve.
Output Curve Number
When this is on, the node adds a point attribute to the output geometry, containing the corresponding “curve number” that the point was mapped along.
Curve Number Attribute
When the checkbox is on, add a point attribute with this name to the output geometry, containing the corresponding “curve number” that the point was mapped along.
Examples
ChainBasic Example for Chain geometry node
This example creates a simple chain and train track using the Chain SOP.
See also 