Houdini 20.5 Nodes Geometry nodes

Bend geometry node

Applies deformations to captured geometry such as bend, twist, taper, and squash/stretch.

On this page
Since 14.5

Overview

This node lets you define a capture region around (or partially intersecting) a model, and apply deformations to the geometry inside the capture region.

The available deformations are:

  • Bend.

  • Twist.

  • Length Scale with optional volume preservation (“squash and stretch”).

  • Liner and Smooth taper.

The capture region is the space between two parallel infinite planes, defined by an origin, a capture length, and a capture direction which is perpendicular to the planes. Outside the space between the planes, the model is not deformed.

Deformation is relative to the capture region “spine” (the vector from the origin). For example, if the capture region vector is off-center from your model, when you twist the model it will twist around the capture region vector, creating a spiral effect.

How to

To...Do this

Use Bend tool from the shelf

  1. Select the faces you want to deform.

  2. On the Deform shelf tab, click the Twist, Bend, or Linear Taper tool.

  3. The tool asks you to click two points to define the capture region.

    • To start with an axis-aligned region fitted to the selection, just press Enter instead of clicking points.

    • If you want to define a custom or non-axis-aligned capture region, use the view options menu to switch to an Orthographic view, then click at the start of the capture region, then click at the end.

  4. See how to use the handles below.

Use Bend tool from the network

  1. Use the ⇥ Tab menu to add a Bend node to the network.

  2. Edit the Capture parameters to set the capture region.

    If you create the node in the network, unlike using the shelf tool in the viewport, it doesn’t do anything to fit the capture region to the input geometry.

Shelf tools

Squash and stretch

Sets up a Bend deformer on the selected geometry, set to show volume-preserving squash-and-stretch handles.

Taper

Sets up a Bend deformer on the selected geometry, set to show tapering handles.

Bend

Sets up a Bend deformer on the selected geometry, set to show bend handles.

Twist

Sets up a Bend deformer on the selected geometry, set to show twist handles.

Handles

Bend

  • To show the Bend handle, turn on the Enable checkbox in the Bend section of the parameters.

    Bend handle

  • Use the Up vector control to set the bend axis.

  • You can set the bend angle using the Up vector angle in the parameters.

  • Drag the arc left or right to bend in one direction or the other. This is the same as modifying the Bend parameter.

Distances between points are preserved along the spine. Distances on the inside of the bend shrink, and distances on the outside of the bend grow.

Twist

  • To show the Twist handle, turn on the Enable checkbox in the Twist section of the parameters.

    Twist handle

  • Drag the ring left or right to twist in one direction or the other. This is the same as modifying the Twist parameter.

Length Scale

This lets you scale the model along the length of the capture region, with optional “squash and stretch” volume preservation.

  • To show the Length handle, turn on the Enable checkbox in the Length Scale section of the parameters.

    Length Scale handle

  • Drag the handle to scale the along the length of the capture region. This is the same as modifying the Length scale parameter.

  • Turn on Preserve volume to get squash/stretch as you scale the model down/up.

Taper

This lets you scale in/out at a midpoint and the end of the capture region.

  • To show the Taper handle, turn on the Enable checkbox in the Taper section of the parameters.

    Taper handle

  • Drag the plane at the end to scale the end of the capture region in/out. This is the same as modifying the Taper parameter.

  • Drag the plane at the midpoint to scale the middle of the capture region in/out. This is the same as modifying the Squish parameter.

  • Drag the arrows above/below the midpoint plane to move the “midpoint” along the length of the capture region. This is the same as modifying the Squish pivot parameter.

  • Use the Mode parameter to choose whether the scales blend with the rest of the model linearly or smoothly.

  • See Enable ramp below for even more control over scaling along the length.

Scaling effects using masks

You can scale the effect of the deformations (globally and per-deformation) using mask attributes on the geometry. You can create useful mask attributes using Distance Along Geometry, Distance From Geometry, and Distance from Point.

  • The Mask parameter at the top lets you scale all deformation globally using a mask attribute.

  • Different controls for the various deformation types allow you to scale the control value by a mask attribute. Change the “No Scaling” pop-up menu to “Scale by Attribute”, then specify the mask attribute name.

Parameters

Group

Subset of geometry to deform. Leave this blank to deform all input geometry.

Primitives with transforms (such as spheres, packed primitives, and volumes) will be transformed if their base point is.

Group Type

While this node deforms points, you can select different group types (such as primitive groups or vertex groups). The node automatically converts the selection to points.

Mask

When the pop-up menu is set to “Mask on”, use this point attribute to “scale” all deformation using a “mask” attribute. Points where the attribute is 0 are not deformed, points where the attribute is 1 are fully deformed, with linear interpolation in between.

You can create useful mask attributes using Distance Along Geometry, Distance From Geometry, and Distance from Point.

Click the paint icon to the right of the text field to paint the mask attribute directly in the viewport.

Deformation

Enable Deformation

Globally turn all deformation on/off. This is useful when you want to adjust the capture parameters and want to see the original input geometry.

Limit Deformation to Capture Region

When this is on, the deformation only occurs within the capture region (this is the default). When this is off, it extends the deformation beyond the end of the capture region to the end of the model.

A global squash/stretch works best with this parameter off, since the squishing will be performed uniformly rather than tapering off to the capture bounds.

Deform in Both Directions

Apply bend symmetrically across the capture origin, in both the forward and backward directions.

Bend

Enable

Perform bend deformation, show the Bend handle in the viewport.

Mode

Whether the amount of bend is an angle, or a direction that the capture spine capture should end up pointing along.

Bend

When Mode is “Angle”, the angle in degrees to bend. You can make this over 180 to bend something over itself multiple times.

Goal Direction

When Mode is “Direction”, bend the capture region spine to end up pointing in this direction.

Twist

Enable

Perform twist deformation, show the Twist handle in the viewport.

Twist

Angle in degrees to twist around the capture axis. This can be more than 360 degrees. The total twist is distributed evenly along the length of the capture region.

Continuous Twist in Both Directions

When Deform in Both Directions is enabled, will cause the continued deformation in the symmetric direction to be a continuation of the twist in the foreward direction.

Length Scale

Enable

Perform length scaling, show the Length handle in the viewport.

Preserve Volume

Do “squash and stretch”: as you scale the length, apply an inverse perpendicular scale, so lengthening the model makes it skinny, and shortening the model makes it bulge. (Because this is applied smoothly, it is not technically accurate volume preservation). When Limit deformation to capture region is on, the scaling falls off at the ends of the capture region.

Length Scale

Scale the length of the captured geometry by this factor.

Taper

Enable

Perform tapering, show the Taper handle in the viewport.

Taper Along

The axes to enable tapering along. These axes are in relation to the Up Vector (Y) and Capture Direction (Z).

X

Enable tapering in the X direction.

Y

Enable tapering in the Y direction.

Mode

Whether to blend linearly between taper scales, or smoothly (ease-in and ease-out).

Taper

The amount to scale the end of the capture region.

Squish

The amount to scale the “midpoint” of the capture region. You can move this scale between the start and end of the region using the Squish pivot parameter below.

Squish Pivot

The position of the “midpoint” scale along the length of the capture region, where 0 means the start of the region, 0.5 is halfway, and 1.0 is the end.

Enable Ramp

Lets you apply an arbitrary number of taper scales along the length of the capture region, controlled by a ramp.

Profile

When Enable ramp is on, the horizontal axis represents the length of the capture region (start on the left, end on the right). At each point across, the value represents the amount of scaling (where 0.5 means “no scaling”, values greater than 0.5 scale out, values less than 0.5 scale in). Note that you can set a value for a point above 1.0 using the parameters below the ramp.

Capture

Up Vector Control

The bend is always perpendicular to the capture axis, but this specifies what orientation it should use.

Up Vector

The up vector to use.

Up Vector Angle

Angle (in degrees) to rotate the up vector around the capture spine.

Set Capture Region

Click this, then click two points in an orthographic viewport to define the capture region. This is the same as choosing the points when using the shelf tool.

Capture Origin

The center of the source capture plane.

Capture Direction

The normal of the capture planes, and the direction pointing to the destination capture plane from the source.

Capture Length

Controls the region of space that receives the partial transforms. Must not be zero in length.

Output Attribute

When this is on, create this point float attribute on the output geometry. The attribute will have 0 on points that were not deformed, and 1 on points that were fully deformed. This may be useful for visualizing the amount of deformation in different parts of the model.

Attributes

Use Rest Positions

If this is on, and the second input is connected, use the point positions in the second input to compute which points are in the capture region. If this is on and the second input is not connected, use a rest point attribute if present (this should be a 3float attribute containing the “rest” position of each point). If this is on but no rest attribute exists, the node creates it from the initial point positions. If this is off, the node uses the point positions as they are in the input.

Attributes to Transform

A space-separated 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).

If you change this from the default (*, all attributes), make sure P (point positions) is on the list unless for some reason you want to transform other attributes but not actually deform the geometry.

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.

Inputs

Geometry to Bend

Can be any geometry, including NURBS and Beziers, but should have enough points for deformation to modify.

Rest Geometry

If connected, the node uses this to determine where points are in the capture region. This is useful if you're stacking Bends and you don’t want the capture to change as a result of upstream operations.

Examples

FlounderBend Example for Bend geometry node

This example demonstrates how to use the new Bend node to bend a flounder.

See also

Geometry nodes