On this page 
Overview
This node bends geometry to follow the shape of a curve. It also lets you apply secondary deformations such as scaling and twisting to the curved model.
This is useful in many scenarios, such as:

Model a long flexible object (such as a belt) straight, then use this node to deform it into the desired shape.

Animate the curve to animate deformation of static geometry, for example a cracking whip.

Animate the mapping of the model onto the curve, for example to make an swimming shark follow and bend along a preset path.
This node is related to the Sweep node. Whereas the Sweep node generates geometry by interpolating between profile shapes along a curve, this node reshapes an existing model by mapping the curve’s differences from a straight line onto the points of the model.
Capturing the model

By default, the node assumes the geometry is modeled along the Z axis, with the "front" in the positive Z direction (this is the standard default for Houdini tools). You can change this using the Forward direction parameter on the Capture and Align tab.

This node only bends the parts of the geometry inside a capture region. Parts of the model outside the capture region still move with the rest of the model, but do not bend or stretch. This is useful if you only want the front, or middle, or back of the model to bend.

By default, the node captures the entire model, and centers the capture region on the model’s center.

By default, the geometry does not need to be at the origin. The node will automatically snap the model onto the curve, ignoring any translation away from the origin.
You can choose instead to incorporate the model’s offset from the origin as an offset from the curve. Turn off Center geometry on curve on the Capture and Align tab.

You can then adjust the start and end of the capture region using Geo capture start and Geo capture end parameters on the Capture and Align.

It is possible to set a custom capture origin and custom offset by setting Geo capture origin to Custom on the Capture and Align tab.
You can imagine the node starting with a plane centered at the capture origin, perpendicular to the forward direction. It then sweeps the plane along the forward direction, capturing any geometry. If the origin is past the start of the geometry, the start of the geometry will not be captured. If the origin is before the start of the geometry (and/or offset in the other two axes), the model will be offset from the curve.
Tips and notes

If you drew the curve in the "wrong" direction, you can reverse it on the Capture and align tab. (You don’t need to add a separate node to reverse the curve before the input.) You can choose to also reverse the normals or not.

This node works by moving the points of the input geometry. It does not change the topology (that is, the number of points, or how the points connect to form polygons) of the model.

You can use an attribute to specify certain parts of the model as more or less rigid (resistant to deformation). See the Rigidity section at the bottom of the Map and Deform tab.
Inputs
Geometry to deform
The node reshapes this geometry.
Spine curve
The node uses the curve connected to this input to reshape the geometry in the first input.
Parameters
Group
A group name, or list of primitive, edge, point, or vertex numbers specifying what geometry in the input to deform (see group syntax). Click the Reselect button to the right of the field to select geometry in the viewport. If this field is blank, the node deforms all geometry in the first input.
Group type
The component type the names/numbers in the Group field refer to (primitives, edges, points, or vertices).
Curves
A primitive group on the second input used to specify which curves to map geometry onto.
Map and Deform
These parameters let you map the deformed model onto the curve, by setting a start offset and length.
Enable Deformation
Turning this off prevents the node from deforming the input geometry. This can be useful to let you see how the capture region relates to the predeformed input model.
Map Length Using
How you want to specify the length (as measured along the Forward direction) of the deformed model:
Fraction of Curve Length
Specify the length as a fraction of the length of the curve, from 0
to 1
. This is useful, for example, to stretch the model to run the full length of the curve by choosing this option and setting the value to 1
.
Fraction of Geo Length
Specify the length as a fraction of the length of the predeformed model (measured along the Forward direction), from 0
to 1
. This is useful, for example, to maintain the original length of the model by choosing this option and setting the value to 1
.
Distance
Specify the deformed length in worldspace units.
End Position Offset
The length of the deformed geometry when mapped onto the curve, using the units specified in the Offset end using dropdown menu.
Override
Whether to override the Length with a primitive attribute on the curves.
Pos End Attrib
A primitive attribute on the curves specifying the Length on each curve.
Offset Position Using
How you want to specify the model’s position on the curve:
Curve U Position
Specify the start position as a fraction of the length of the curve, from 0
to 1
, where 0
has the start of the model at the start of the curve, and 1
has the start of the model at the end of the curve.
Fraction of Geo Length
Specify the start position as a fraction of the length of the model (measured along the Forward direction), from 0
to 1
, where 0
has the start of the model at the start of the curve, and 1
has the end of the model at the end of the curve.
Distance
Specify the distance along the curve in worldspace units.
Position Offset
Sets the start position of the model along the curve, using the units specified in the Offset position using dropdown menu.
Override
Whether to override the Position Offset with a primitive attribute on the curves.
Pos Offset Attrib
A primitive attribute on the curves specifying the Position Offset on each curve.
Preserve Volume
When enabled will set a base scale factor such that the volume of the geometry bounding box is preserved.
Start Behavior
This parameter and End behavior control what happens to the model if the offset and length parameters push it "off the end" of the curve.
Extend
Extends geometry along the last curve tangent.
Clamp
Points are not allowed past the end of the curve. This has the effect of "pancaking" the model if it tries to move past the end. Note that this will probably create overlapping polygons.
Clip
Delete any geometry past the end of the curve, creating new boundary edges/points as needed. This is the same behavior as you would get if you positioned a Clip node at the end of the curve, but much more convenient.
End Behavior
See the help for Start behavior
These parameters let you scale and/or twist the model on top of mapping it onto the curve.
Enable Scale
Scales the model according to the Base scale factor and possibly the Scale ramp below. Note that the length of the model along the Forward direction is still controlled by the mapping controls above. This scales the model along the other two axes. In other words, it scales the model outward from the curve.
Base Scale Factor
When Enable scale is on, the factor by which to scale the model outward from the curve. For example, 1.0
does no scaling, values less than 1.0
make the model "skinnier" toward the spine curve, values greater than 1.0
make the model "fatter" away from the spine curve.
Enable Attribute Scale
Whether to scale the combined scale (Base Scale Factor multiplied by the ramp) by the value of an attribute on the curve. This lets you have different scaling at different points along the curve.
Curve Attribute
When the dropdown menu next to Base scale factor is set to Scale by attribute, this is the name of the point attribute on the curve to scale by.
Enable Scale Ramp
When this is on, the base scaling factor above is further modified by a ramp.
Scale Ramp
When Enable scale ramp is on, use this ramp for more control over how the model is scaled (vertical axis) along the length of the curve (horizontal axis).
Enable Rotation
Rotates/twists the points of the model around the Forward direction, according to the Base rotation and possibly the Rotation scale ramp below.
Base Rotation
When Enable rotation is on, rotate the entire model by this number of degrees. To get twisting instead of full rotation, use the ramp below. Note that the scale by attribute and rotation scale ramp controls below are multipliers on this value. If this value is 0
, no rotation can happen at all.
Enable Attribute Scale
Whether to scale the combined rotation (Base Rotation multiplied by the ramp) by the value of an attribute on the curve. This lets you have different rotation at different points along the curve.
Curve Attribute
When the dropdown menu next to Base rotation is set to Scale by attribute, this is the name of the point attribute on the curve to scale by. Note that this is a multiplier on the base rotation, so if the base rotation is 0
, nothing will happen.
Enable Rotation Scale Ramp
When this is on, the base rotation above is further modified by a ramp.
Rotation Scale Ramp
When Enable rotation scale ramp is on, use this ramp for more control over how the base rotation is scaled (vertical axis) along the length of the curve (horizontal axis). Note that this is a multiplier on the base rotation, so if the base rotation is 0
, nothing will happen.
When points are rigid, the node maps them "all at once" onto the curve instead of individually, preventing them from bending. You can set a base amount of rigidity (which blends between the nonrigid and rigid positions of each point), and/or paint different rigidity values in different areas of the model using a point attribute.
Enable Rigidity
When this is on, you can specify certain parts of the model to be rigid (unbending).
Constraint Method
How to map points onto the curve. If multiple points are mapped together, they will be "rigid" with respect to each other.
By Rigid Group
Specify rigid points by group name(s) and/or component numbers. See Rigid group below.
By Geometry Fraction Attribute
Use a point attribute on the model to manually control where on the curve each point should should be deformed relative to. See Geo fraction attribute below.
By Piece Attribute
Use a piece attribute to specify rigid pieces of geometry.
Rigid Group
A group name, or list of primitive, edge, point, or vertex numbers specifying which components in the input model are rigid. Note that leaving this empty selects the entire model to be rigid, which is usually not what you want.
Each connected component in this group will be given its own rigidity class, and the point along the curve that it will use will be the average position of the points in the group.
Rigid Group Type
The component type specified in the Rigid Group (primitives, edges, points, or vertices).
Enable Stretch Softening
Smooths nonrigid points within a certain distance (Soften radius parameter below) of rigid geometry for smoother transitions between nonrigid to rigid parts of the model. 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, nonrigid points within this distance (in world space, as calculated using the Soften distance metric) of a rigid point are moved to make the transition smoother. The effect falls off with the distance to the nearest rigid point, falling to zero at the exact soften radius. You can control the falloff by turning on the falloff ramp below.
Enable Falloff Ramp
Turn this on to control the shape of the falloff within the Soften radius using a ramp.
Soften Falloff
When Enable falloff ramp is on, this lets you control the shape of the falloff based on distance from the nearest rigid point. The value at the left end of the ramp controls the amount of softening at zero distance from the nearest rigid point. The value at the right end of the ramp controls the amount of softening at the Soften radius distance from the nearest rigid point.
Geo Fraction Attribute
For each point in the model, this attribute sets what point on the curve (specified as a fraction of the curve length, from 0.0
to 1.0
) the model point should map to.
Piece Attribute
A piece attribute specifying how the rigidity should be defined. The average position of elements in each piece is used to determine where the piece should be placed on the curve. The Piece Attribute can be either a point or primitive attribute that is either an integer or a string.
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
The rigidity mask lets you specify how rigid each rigid component is (for example, by painting an attribute).
Base Rigidity Mask
This is the base rigidity of rigid points. The attribute will act as a multiplier on 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.
Enable Attribute Scale
Whether to scale the base rigidity by the value of a point attribute on the model. This lets you paint different areas of the model with different amounts of rigidity.
Geometry Attribute
When the dropdown menu next to Base scale factor is set to Scale by attribute, this is the name of the point attribute on the model to scale by.
Capture and Align
Forward Direction
The "length" axis of the incoming model. The curve bends the model "across" this axis. The default is Z.
X/Y/Z
The model is modeled along one of the major axes. The "front" of the model is assumed to be in the positive direction. If the model points along the negative direction, you can choose Custom instead (for example, if the front is along negative Z, choose Custom and set the custom vector to 0, 0, 1
).
Custom
Define the length axis of the model using a custom vector.
Forward Axis Vector
When Forward direction is Custom, this is a vector defining the "length" axis of the model.
Up Direction
The "height" axis of the incoming model. The node uses this to orient the model as it is deformed and rotated. The default is Y.
X/Y/Z
The model is modeled with "up" along one of the major axes.
Custom
Define the up axis of the model using a custom vector.
Up Axis Vector
When Up direction is Custom, this is a vector defining the "up" axis of the model.
Match Geometry to Curves using Piece Attrib
Whether to use a piece attribute on both the geometry on the curves to specify which piece of geometry is mapped to each curve.
Piece Attrib
The attribute on both the curves and the geometry used to match pieces of geometry with curves.
Curve Up Control
How to compute the "up" direction of points along the curve. This can be overridden by point attributes (see below). (By default the node will slightly modify the up vectors to be perpendicular to the curve tangent, unless you turn on Make curve up vector constant below.) The default is Y.
Curve Normal
Automatically choose the direction perpendicular to the plane the curve would lie in if it was planar.
X/Y/Z
Always set the up direction along the positive direction of one of the major axes. Often you will draw the curve in one of the planes so this is useful to quickly choose the perpendicular direction to the plane of the curve.
Custom
Define the up axis of the curve using a custom vector.
Orient Using Point Attributes
When this is on, the node will use common point attributes (N
, up
, orient
, rot
, trans
, pivot
, pscale
, scale
, and/or transform
), if present, to affect the orientation, rotation, scale etc. of the model at the corresponding point along the curve.
Make Curve Up Vector Constant
Forces the up vector to be constant as defined by the Curve Up Control. (When this is off, the node will slightly modify the up vectors to be perpendicular to the curve tangent.) This may skew geometry.
Force Orthogonal Tangent
When Make Curve Up Vector Constant is on, turning this on prevent the geometry skewing along the curve by recomputing the curve tangent at each point to be orthogonal to the constant up vector. This will orient the front of the geometry orthogonally to the up vector.
Copy Up Control to End
This will set the up vectors at both the start and end of the curve to be as close as possible to the Curve Up Control. This is useful when the curve is meant to be a loop.
Curve Up Vector
When Curve up control is Custom, this is a custom vector to use as the curve’s "up" direction.
Reverse Curve
Reverses the curve, so that the geometry follows the curve from the opposite direction. You can use this if the curve was drawn in the "wrong" direction. (You don’t need to add a separate node to reverse the curve before you input it into this node.)
Reverse N Attribute on Curve
Reverses the N
attribute on the curve. The node uses this attribute (if present) to calculate the tangent at each point.
Blend Tangents
Blend the curve tangents using a weighted average.
Tangent Blend Strength
When Blend tangents is on, how much weight to give to neighboring tangents when averaging. The default is 1
.
Tangent Blend Iters
When Blend tangents is on, the number of times to iteratively apply the blending operation. The default is 10
.
This node only bends the parts of the geometry inside a capture region. Parts of the model outside the capture region still move with the rest of the model, but do not bend or stretch. This is useful if you only want the front, or middle, or back of the model to bend.
Geo Capture Origin
How to specify the center of the capture region. The capture region is always based on the bounding box of the input geometry. By default it is centered on the model, but you can set this to Custom to offset the capture region from the model’s centroid.
Note
Unless you want an offset but can’t change the input model’s position, it is much easier to leave this set to Relative to bounding box than to use Custom. You can use the Geo capture start and Geo capture end to control the bendy region. You can offset the model from the curve by turning off Center geometry on curve and moving the model away from the origin.
Relative to Bounding Box
Always center the capture region at the center of the bounding box.
Custom
Offset the capture region along the Forward direction.
Center Geometry on Curve
When Geo capture origin is Relative to bounding box and this is on, the node snaps the center of the bounding box onto the curve. When this is off, the model’s original offset from the origin appears as an offset from the curve.
Capture Origin Offset
The node acts as if it takes plane starting at this point, perpendicular to the Forward direction and sweeps it along the Forward direction, capturing geometry. If the origin is past the start of the geometry, the start of the geometry will not be captured. If the origin is before the start of the geometry (and/or offset in the other two axes), the model will be offset from the curve.
(Insert image)
Capture Offsets Using
How to specify the start and end of the capture region:
Fraction of Geo Length
Specify the capture offsets as fractions of the length of the model (measured along the Forward direction).
Distance
Specify the capture offsets in worldspace units.
Geo Capture Start
Moves the start of the capture region along the __Forward
The position along the geometry that defines the start of the geometry. This point is mapped to the Position Offset. Geometry before this offset is extended along the tangent from the point at the Position Offset, and is not stretched according to the curve.
Geo Capture End
The position along the geometry that defines the end of the geometry. This point is mapped to the curve end offset defined by the sum of Position Offset and End Position Offset. Geometry beyond this offset is extended along the tangent from the point at the curve end offset, and it not stretched according to the curve.
Compute End Relative to Start
When enabled, the Geo Capture Start is added to the Geo Capture End when computing the ending position on the geometry.
Upcaptured Geo Stretch
The factor by which to stretch the geometry that is uncaptured.
Attributes
Attributes to Transform
A spaceseparated list of names and/or patterns. Attributes whose names match are transformed along with the point positions. The node uses each attribute’s type info to transform it properly (as points, vectors, or normals).
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 setting is irrelevant. It only matters if you deform part but not all of a connected piece.
This does nothing if P
is not listed/matched in Attributes to Transform.
Preserve Normal Length
Normal lengths remain unaffected.
Output Position Along Curve
When this is on, create a point float attribute on the output geometry. This attribute will reflect the relative position of each point along the curve on the scale from 0.0 (curve start) and 1.0 (curve end).
Position Along Curve Attribute
The name of the attribute in which to store relative position along curve.
Examples
PathDeformBasic Example for Path Deform geometry node
This example shows how to deform a squab on the curve and make its claws rigid.
See also 