# Orientation Along Curve geometry node

Computes orientations (frames) along curves.

## Overview

This node computes orientations, also known as reference frames, based on the tangents of curves, with various options for specifying up vectors and additional rotations. This can be useful for controlling orientations for geometry moving along paths or being copied or constructed along paths. These orientations are equivalent to those in the Sweep node and the Copy to Curves node.

Unlike the PolyFrame node, this treats all polygons as curves, even if they are closed, making computing orientations for closed paths easier.

## Parameters

Curve Group

Group of primitives around which to compute orientations (reference frames).

## Frame

Tangent Type

The overall method for computing tangents at each vertex. If Transform Using Point Attributes is on and the input has point `N` (vector), `orient` (quaternion), `rot` (quaternion), or `transform` (3×3 or 4×4 matrix), this is ignored in favor of the Z axis from the transform determined by these attributes. The Stretch Around Turns option always computes the stretch and stretch direction based on the Average of Edge Directions tangent, regardless of this tangent type, since it’s undefined otherwise. See the descriptions and image of the options below.

Average of Edge Directions

Average of the normalized directions of the previous and next edge

Central Difference

Average of the unnormalized previous and next edge vectors. This is similar to the Central Difference option for the Velocity Approximation on the Trail node.

Previous Edge

Previous edge direction

Next Edge

Next edge direction

Z Axis (Ignore Curve)

The tangent will be chosen as the Z axis, regardless of the curve.

Make Closed Curve Orientations Continuous

When enabled, any accumulated roll (torsion) around a closed curve will be canceled out in a manner spread out around the curve, instead of suddenly in the final edge. Planar curves don’t have any inherent accumulated roll around the curve, but this applies to the Partial Twist option (when Apply Roll or Twist is enabled) as well, so any twist that isn’t a multiple of a full twist will be rounded to a multiple of a full twist.

Extrapolate End Tangents

When enabled, end (including beginning) tangents will be extrapolated based on the Tangent Type and the two edges closest to the end, instead of just being chosen as the end edge direction. This is most useful for cases similar to when a curve is intended to represent a circular arc, so that end orientations will be rotated as expected. See the image above.

Transform Using Point Attributes

When enabled, any point attributes `P`, `N`, `up`, `orient`, `rot`, `trans`, `pivot`, `pscale`, `scale`, and `transform` will be used to form each transform, primarily as specified here. If `N` is present and none of `up`, `orient`, `rot`, or `transform` are present, `N` will be used as the curve tangent and the rest of the rotation will be computed as usual. If `up` is present and none of `N`, `orient`, `rot`, or `transform` are present, the tangent will be computed as usual, and `up` will be used as the up vector at each vertex, before any Apply Roll or Twist is applied.

Target Up Vector

Up vector for each curve to target, to break the tie between all possible rolls around the tangent. If a curve is planar, the Curve Normal option should ensure that the up vector is perpendicular to the plane; if the curve is a straight line, this option will fall back to using the y axis as a target up vector. The Attribute option can use a primitive or detail attribute to select the up vector for each curve. To specify separate up vectors on all curve points, use the Transform Using Point Attributes and provide a point attribute named `up`, in which case, this target up vector is ignored.

Target Up Vector at Start (else Average)

When enabled, the roll for each curve is chosen such that the up vector of the first vertex is as close as possible to the target up vector while still being perpendicular to the tangent vector. When disabled, that applies to the average of all vertex up vectors, instead of the first vertex. This must be enabled in order to use the Use Target End Up Vector Option.

Use Target End Up Vector

When enabled and Target Up Vector at Start is enabled, the twist along each curve is adjusted to ensure that the end up vector is as close as possible to the target up vector, without affecting the start up vector. If Target Up Vector is Attribute or Custom, there are separate End Up Attribute and End Up Vector parameters, in order to specify different end up vectors from the start up vectors.

Start Up Attribute

When Target Up Vector is Attribute, this is the name of the primitive or detail attribute to use for each curve’s target up vector. When Target Up Vector at Start is enabled, this provides the target up vectors at the start of the curves. When Target Up Vector at Start is disabled, this provides the target for the average up vector along each curve.

End Up Attribute

When Target Up Vector is Attribute and Use Target End Up Vector is enabled, this is the name of the primitive or detail attribute that provides the target up vectors at the end of the curves. The twist of each curve is adjusted to ensure that the end up vector is as close as possible to the target end up vector, without affecting the start up vector.

Start Up Vector

When Target Up Vector is Custom, this is the target up vector to use for each curve. When Target Up Vector at Start is enabled, this provides the target up vector at the start of the curves. When Target Up Vector at Start is disabled, this provides the target for the average up vector along each curve.

End Up Vector

When Target Up Vector is Custom, this is the target end up vector to use for each curve. The twist of each curve is adjusted to ensure that the end up vector is as close as possible to the target end up vector, without affecting the start up vector.

Rotate Order

The order in which to apply the Pitch (around X/out), Yaw (around Y/up), and Roll or Twist (around Z/tangent) options below if multiple are enabled. Pitch and Yaw may be useful to effectively apply a pre-transform to whatever the orientation will be applied to, which is why they default to being applied before the Roll or Twist. These rotations are effectively applied before the transforms from the curves, having the net effect of them being rotations in the space of the curve frames.

Apply Roll or Twist

When enabled, the parameters below for applying a roll rotation around the tangents (computed above) are enabled.

Roll

Rotation in degrees around the tangent, applied to every orientation, if Apply Roll or Twist is enabled.

Twist Per

Manner in which to apply the twist value specified below by `(360*(Full Twists) + (Partial Twist))`. See the descriptions and image below.

Per Edge

The specified twist will be applied once for each edge, so for example, a Partial Twist of 60 degrees along each of 6 edges would result in a total of 360 degrees of twist. Full Twists will have no effect in this case, since a full twist in a single edge restores the original orientation.

Per Unit Distance

The twist for each edge will be the length of the edge times the twist value in degrees.

Scale by Attribute

The twist value in degrees will be multiplied at each vertex by the attribute given by Twist Ramp Attribute, which can be a vertex, point, primitive, or detail attribute. This product is applied as a roll at each vertex, not as an accumulating twist, so that if the attribute goes from 0 to 1 along a curve, the twist value will be the total twist applied.

Per Full Curve by Edges

The specified twist will be applied once across each whole curve, with an equal amount of twist applied across each edge, regardless of the length of each edge. For example, a Partial Twist of 60 degrees along a curve with 6 edges will yield a 10 degree rotation along each edge in this case.

Per Full Curve by Distance

The specified twist will be applied once across each whole curve, with the amount of twist per edge being proportional to the length of the edge.

Full Twists

Integer number of full twists to add for each unit determined by Twist Per. This is just provided for convenience; it is just multiplied by 360 and then added to Partial Twist. If Twist Per is Per Full Curve by Edges or Per Full Curve by Distance, this corresponds with full twists along each full curve.

Partial Twist

Twist in degrees around the tangent, to add for each unit determined by Twist Per. This is added to 360 times Full Twists.

Twist Ramp Attribute

When Twist Per is Scale By Attribute, this is the name of the vertex, point, primitive, or detail attribute to multiply by the combination of Full Twists and Partial Twist in degrees. This product is applied as a roll at each vertex, not as an accumulating twist, so that if the attribute goes from 0 to 1 along a curve, the twist value will be the total twist applied.

Apply Yaw

When enabled, the parameters below for applying a yaw rotation around the up vectors (computed above) are enabled.

Yaw

Rotation in degrees around the up vector, applied to every orientation, if Apply Yaw is enabled.

Yaw Per

Manner in which to apply the Incremental Yaw value specified below.

Per Edge

The specified yaw will be applied once for each edge, so for example, an Incremental Yaw of 60 degrees along each of 6 edges would result in a total of 360 degrees of yaw (spinning around the up vector).

Per Unit Distance

The yaw for each edge will be the length of the edge times the Incremental Yaw value in degrees.

Scale By Attribute

The Incremental Yaw value in degrees will be multiplied at each vertex by the attribute given by Yaw Ramp Attribute, which can be a vertex, point, primitive, or detail attribute. This product is applied as a yaw at each vertex, not as an accumulating yaw, so that if the attribute goes from 0 to 1 along a curve, the Incremental Yaw value will be the total yaw applied.

Per Full Curve by Edges

The specified Incremental Yaw will be applied once across each whole curve, with an equal amount of yaw applied across each edge, regardless of the length of each edge. For example, an Incremental Yaw of 60 degrees along a curve with 6 edges will yield a 10 degree rotation along each edge in this case.

Per Full Curve by Distance

The specified Incremental Yaw will be applied once across each whole curve, with the amount of yaw per edge being proportional to the length of the edge.

Incremental Yaw

Yaw in degrees around the up vectors, to add for each unit determined by Yaw Per.

Yaw Ramp Attribute

When Yaw Per is Scale By Attribute, this is the name of the vertex, point, primitive, or detail attribute to multiply by Incremental Yaw in degrees. This product is applied as a yaw at each vertex, not as an accumulating yaw, so that if the attribute goes from 0 to 1 along a curve, the Incremental Yaw value will be the total yaw applied.

Apply Pitch

When enabled, the parameters below for applying a pitch rotation around the out vectors (perpendicular to the tangent and up vectors computed above) are enabled.

Pitch

Rotation in degrees around the out vector (perpendicular to the tangent and up vectors), applied to every orientation, if Apply Pitch is enabled.

Pitch Per

Manner in which to apply the Incremental Pitch value specified below.

Per Edge

The specified pitch will be applied once for each edge, so for example, an Incremental Pitch of 60 degrees along each of 6 edges would result in a total of 360 degrees of pitch (tumbling around the out vector).

Per Unit Distance

The pitch for each edge will be the length of the edge times the Incremental Pitch value in degrees.

Scale By Attribute

The Incremental Pitch value in degrees will be multiplied at each vertex by the attribute given by Pitch Ramp Attribute, which can be a vertex, point, primitive, or detail attribute. This product is applied as a pitch at each vertex, not as an accumulating pitch, so that if the attribute goes from 0 to 1 along a curve, the Incremental Pitch value will be the total pitch applied.

Per Full Curve by Edges

The specified Incremental Pitch will be applied once across each whole curve, with an equal amount of pitch applied across each edge, regardless of the length of each edge. For example, an Incremental Pitch of 60 degrees along a curve with 6 edges will yield a 10 degree rotation along each edge in this case.

Per Full Curve by Distance

The specified Incremental Pitch will be applied once across each whole curve, with the amount of pitch per edge being proportional to the length of the edge.

Incremental Pitch

Pitch in degrees around the up vectors, to add for each unit determined by Pitch Per.

Pitch Ramp Attribute

When Pitch Per is Scale By Attribute, this is the name of the vertex, point, primitive, or detail attribute to multiply by Incremental Pitch in degrees. This product is applied as a yaw at each vertex, not as an accumulating yaw, so that if the attribute goes from 0 to 1 along a curve, the Incremental Pitch value will be the total yaw applied.

## Scales and Shears

Normalize Scales

When enabled, any scales or shears coming from Transform Using Point Attributes, for example from `pscale`, `scale`, or `transform` attributes, will be canceled out.

Uniform Scale

This scale is applied to the transform after Normalize Scales.

Stretch Around Turns

When enabled, this stretches the transforms in the direction of curvature around turns in the curves, which is primarily for use with cross sections, for example with the Sweep node to avoid the cross section appearing to be squashed along edges. This is usually the desired behavior in the Sweep node, but not usually for other uses.

Max Stretch

When Stretch Around Turns is enabled, this is the maximum amount that transforms will be stretched, to avoid stretching too far when a curve almost reverses direction in a single turn.

## Output Attributes

Class

Whether to create the output attributes on the points or the vertices. Transforms are always computed for vertices first. If output attributes will be point attributes and there are shared points, the separate transforms of the vertices will be averaged by separately averaging the rotations as quaternions, the translations, and any scales and shears.

X Axis

When enabled, a vector attribute with this name will be created on the output that is perpendicular to the curve tangents (z axis) and up vectors (y axis). If a curve is planar and Target Up Vector is set to Curve Normal, this corresponds with the outward direction. If the attribute is named `N`, it will be marked as transforming like a normal, instead of a vector. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

Y Axis

When enabled, a vector attribute with this name will be created on the output that corresponds with the up vector, perpendicular to the curve tangents (z axis). If the attribute is named `N`, it will be marked as transforming like a normal, instead of a vector. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

Tangent (Z Axis)

When enabled, a vector attribute with this name will be created on the output that corresponds with the curve tangents. If the attribute is named `N`, it will be marked as transforming like a normal, instead of a vector. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

Translation

When enabled, a position attribute with this name will be created on the output that corresponds with the translation coming from `P`, `pivot`, `trans`, and `transform` attributes when Transform Using Point Attributes is enabled, or just `P` when it is disabled. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

Quaternion

When enabled, a quaternion attribute with this name will be created on the output that corresponds with the orientations along the curves. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

3×3 Transform

When enabled, a 3×3 transform matrix attribute with this name will be created on the output that corresponds with the orientations along the curves, scales, and shears. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

4×4 Transform

When enabled, a 4×4 transform matrix attribute with this name will be created on the output that corresponds with the orientations along the curves, scales, shears, and translations. If the input `P` attribute is 64-bit, this attribute will be 64-bit.

## Examples

TankTread Example for Orientation Along Curve geometry node

This example demonstrates how the Orientation Along Curve SOP can be used to create a Tank Tread.

# Geometry nodes

• Removes elements while trying to maintain the overall appearance.

• Creates Points or Polygons, or adds points/polys to an input.

• Creates agent primitives.

• Adds new clips to agent primitives.

• Defines how agents' animation clips should be played back.

• Creates geometry describing possible transitions between animation clips.

• Creates a new agent layer that is suitable for collision detection.

• Creates point attributes that specify the rotation limits of an agent’s joints.

• Builds a constraint network to hold an agent’s limbs together.

• Writes agent definition files to disk.

• Edits properties of agent primitives.

• Adds a new layer to agent primitives.

• Adjusts the head of an agent to look at a specific object or position.

• Adds various common point attributes to agents for use by other crowd nodes.

• Provides simple proxy geometry for an agent.

• Creates parent-child relationships between agents.

• Adapts agents' legs to conform to terrain and prevent the feet from sliding.

• Adds new transform groups to agent primitives.

• Extracts geometry from agent primitives.

• Extracts geometry from agent primitives for a Vellum simulation.

• Loads the geometry from an Alembic scene archive (.abc) file into a geometry network.

• Creates a geometry group for Alembic primitives.

• Modifies intrinsic properties of Alembic primitives.

• Aligns a group of primitives to each other or to an auxiliary input.

• Cleans up a series of break operations and creates the resulting pieces.

• Blurs out (or "relaxes") points in a mesh or a point cloud.

• Changes the size/precision Houdini uses to store an attribute.

• Composites vertex, point, primitive, and/or detail attributes between two or more selections.

• Copies attributes between groups of vertices, points, or primitives.

• Adds or edits user defined attributes.

• Deletes point and primitive attributes.

• Allows simple VEX expressions to modify attributes.

• Fades a point attribute in and out over time.

• Interpolates attributes within primitives or based on explicit weights.

• Copies and flips attributes from one side of a plane to another.

• Adds noise to attributes of the incoming geometry.

• Interactively paint point attributes, such as color or deformation mask values, directly on geometry.

• Promotes or demotes attributes from one geometry level to another.

• Generates random attribute values of various distributions.

• Fits an attribute’s values to a new range.

• Renames or deletes point and primitive attributes.

• Modifies point attributes based on differences between two models.

• Edits string attribute values.

• Copies, moves, or swaps the contents of attributes.

• Transfers vertex, point, primitive, and/or detail attributes between two models.

• Transfers attributes between two geometries based on UV proximity.

• Runs a VOP network to modify geometry attributes.

• Runs a VEX snippet to modify attribute values.

• Samples texture map information to a point attribute.

• Copies information from a volume onto the point attributes of another piece of geometry, with optional remapping.

• Converts primitives for ODE and Bullet solvers.

• Computes lighting values within volume primitives

• Provides operations for moving knots within the parametric space of a NURBS curve or surface.

• Applies captures such as bend, twist, taper, and squash/stretch.

• Deletes primitives, points, edges or breakpoints.

• Computes a 3D metamorphosis between shapes with the same topology.

• The start of a looping block.

• The start of a compile block.

• The end/output of a looping block.

• The end/output of a compile block.

• Supports Bone Deform by assigning capture weights to bones.

• Supports Bone Deform by assigning capture weights to points based on biharmonic functions on tetrahedral meshes.

• Utility node that supports Bone Capture Biharmonic by creating lines from bones with suitable attributes.

• Supports Bone Deform by assigning capture weights to points based on distance to bones.

• Uses capture attributes created from bones to deform geometry according to their movement.

• Creates default geometry for Bone objects.

• Combines two polygonal objects with boolean operators, or finds the intersection lines between two polygonal objects.

• Fractures the input geometry using cutting surfaces.

• Creates a bounding box, sphere, or rectangle for the input geometry.

• Creates a cube or six-sided rectangular box.

• Deforms the points in the first input using one or more magnets from the second input.

• Imports 2d geometry from a Composite network.

• Records and caches its input geometry for faster playback.

• Closes open areas with flat or rounded coverings.

• Converts array attributes into a single index-pair capture attribute.

• Converts a single index-pair capture attribute into per-point and detail array attributes.

• Adjusts capture regions and capture weights.

• Lets you paint capture attributes directly onto geometry.

• Copies capture attributes from one half of a symmetric model to the other.

• Overrides the capture weights on individual points.

• Supports Capture and Deform operation by creating a volume within which points are captured to a bone.

• Slices, cuts or extracts points or cross-sections from a primitive.

• Reads sample data from a chop and converts it into point positions and point attributes.

• Creates open or closed arcs, circles and ellipses.

• Transforms selected geometry into a circle.

• Lets you deform NURBS faces and NURBS surfaces by pulling points that lie directly on them.

• Helps clean up dirty models.

• Removes or groups geometry on one side of a plane, or creases geometry along a plane.

• Captures low-res simulated cloth.

• Deforms geometry captured by the Cloth Capture SOP.

• Creates a volume representation of source geometry.

• Fills a volume with a diffuse light.

• Applies a cloud like noise to a Fog volume.

• Low-level machinery to cluster points based on their positions (or any vector attribute).

• Higher-level node to cluster points based on their positions (or any vector attribute).

• Creates geometry and VDB volumes for use with DOPs collisions.

• Adds color attributes to geometry.

• Adjust surface point normals by painting.

• Creates lines between nearby pieces.

• Creates an attribute with a unique value for each set of connected primitives or points.

• Creates simple geometry for use as control shapes.

• Converts geometry from one geometry type to another.

• Converts a 2D height field to a 3D VDB volume, polygon surface, or polygon soup surface.

• Converts the input geometry into line segments.

• Polygonizes metaball geometry.

• Generates the oriented surface of a tetrahedron mesh.

• Converts sparse volumes.

• Converts a Point Cloud into a VDB Points Primitive, or vice versa.

• Converts the iso-surface of a volume into a polygonal surface.

• Decomposes the input geometry into approximate convex segments.

• Creates multiple copies of the input geometry, or copies the geometry onto the points of the second input.

• Copies geometry and applies transformations to the copies.

• Copies geometry in the first input onto curves of the second input.

• Copies geometry in the first input onto the points of the second input.

• Manually adds or removes a creaseweight attribute to/from polygon edges, for use with the Subdivide SOP.

• Deforms and animates a piece of geometry across a surface.

• Creates a surface around cross sections.

• Populates a crowd of agent primitives.

• Creates polygonal, NURBS, or Bezier curves.

• Deforms a spline surface by reshaping a curve on the surface.

• Finds the intersections (or points of minimum distance) between two or more curves or faces.

• Imports fields from DOP simulations, saves them to disk, and loads them back again.

• Imports scalar and vector fields from a DOP simulation.

• Imports option and record data from DOP simulations into points with point attributes.

• Generates point emission sources for debris from separating fractured rigid body objects.

• Runs a VEX snippet to deform geometry.

• Deletes input geometry by group, entity number, bounding volume, primitive/point/edge normals, and/or degeneracy.

• Smooths out (or "relaxes") point deformations.

• Attempts to prevent collisions when deforming geometry.

• Deletes edges from the input polygonal geometry merging polygons with shared edges.

• Measures the distance of the shortest path along the geometry’s edges or surfaces from each start point.

• Measures distance between each point and a reference geometry.

• Measures distance of each point from a target.

• Divides, smooths, and triangulates polygons.

• Imports and transforms geometry based on information extracted from a DOP simulation.

• Creates a curve based on user input in the viewport.

• Culls the input geometry according to the specifications of the For Each SOP.

• Collapses edges and faces to their centerpoints.

• Sharpens edges by uniquing their points and recomputing point normals.

• Inserts points on the edges of polygons and optionally connects them.

• Transforms selected edges so that all edges are of equal length.

• Flips the direction of polygon edges.

• Cuts geometry along edges using guiding curves.

• Straightens selected edges.

• Copies and optionally modifies attribute values along edges networks and curves.

• Edits points, edges, or faces interactively.

• Closes, opens, or clamps end points.

• Sets an attribute on selected points or primitives to sequential numbers or strings.

• Generates a message, warning, or error, which can show up on a parent asset.

• Pushes geometry out from the center to create an exploded view.

• Export transform attributes to object nodes.

• Computes the centroid of each piece of the geometry.

• Computes the best-fit transform between two pieces of geometry.

• Extrudes geometry along a normal.

• Extrudes surface geometry into a volume.

• Creates a surface or density VDB for sourcing FLIP simulations.

• Controls the smoothness of faceting of a surface.

• Evolves polygonal curves as vortex filaments.

• Reads, writes, or caches geometry on disk.

• Writes and reads geometry sequences to disk.

• Reads and collates data from disk.

• Creates smooth bridging geometry between two curves or surfaces.

• Finds the shortest paths from start points to end points, following the edges of a surface.

• Fits a spline curve to points, or a spline surface to a mesh of points.

• Compresses the output of fluid simulations to decrease size on disk

• Creates 3D text from Type 1, TrueType and OpenType fonts.

• Uses a metaball to attract or repel points or springs.

• Creates jagged mountain-like divisions of the input geometry.

• Creates a set of hair-like curves across a surface.

• Merges points.

• Geometry nodes live inside Geo objects and generate geometry.

• Adds strength to a glue constraint network according to cluster values.

• Generates particles to be used as sources in a particle-based grain simulation.

• Assigns a unique integer attribute to non-touching components.

• Creates planar geometry.

• Blends the guides and skin of two grooms.

• Fetches groom data from grooming objects.

• Packs the components of a groom into a set of named Packed Primitives for the purpose of writing it to disk.

• Switches between all components of two groom streams.

• Unpacks the components of a groom from a packed groom.

• Generates groups of points, primitives, edges, or vertices according to various criteria.

• Combines point groups, primitive groups, or edge groups according to boolean operations.

• Copies groups between two pieces of geometry, based on point/primitive numbers.

• Deletes groups of points, primitives, edges, or vertices according to patterns.

• Expands or shrinks groups of Edges, Points, Primitives, or Vertices.

• Runs VEX expressions to modify group membership.

• Constructs groups for paths between elements.

• Sets group membership interactively by painting.

• Converts point, primitive, edge, or vertex groups into point, primitive, edge, or vertex groups.

• Groups points and primitives by ranges.

• Renames groups according to patterns.

• Transfers groups between two pieces of geometry, based on proximity.

• Groups points and primitives by lasso.

• Creates a group that includes the boundaries of the specified attribute.

• Advects guide points through a velocity volume.

• Resolves collisions of guide curves with VDB signed distance fields.

• Deforms geometry with an animated skin and optionally guide curves.

• Allows intuitive manipulation of guide curves in the viewport.

• Creates standard primitive groups used by grooming tools.

• Quickly give hair guides some initial direction.

• Creates masking attributes for other grooming operations.

• Creates and prepares parting lines for use with hair generation.

• Looks up skin geometry attributes under the root point of guide curves.

• Constructs a coherent tangent space along a curve.

• Transfer hair guides between geometries.

• Converts dense hair curves to a polygon card, keeping the style and shape of the groom.

• Clumps guide curves together.

• Generates hair on a surface or from points.

• Generates a velocity field based on stroke primitives.

• Generates an initial heightfield volume for use with terrain tools.

• Blurs a terrain height field or mask.

• Limits height values to a certain minimum and/or maximum.

• Creates a copy of a height field or mask.

• Extracts a square of a certain width/length from a larger height volume, or resizes/moves the boundaries of the height field.

• Creates a cutout on a terrain based on geometry.

• Displaces a height field by another field.

• Advects the input volume through a noise pattern to break up hard edges and add variety.

• Lets you draw shapes to create a mask for height field tools.

• Calculates thermal and hydraulic erosion over time (frames) to create more realistic terrain.

• Simulates the erosion from one heightfield sliding over another for a short time.

• Distributes water along a heightfield. Offers controls for adjusting the intensity, variability, and location of rainfall.

• Calculates the effect of thermal erosion on terrain for a short time.

• Imports a 2D image map from a file or compositing node into a height field or mask.

• Generates flow and flow direction layers according to the input height layer.

• Copies another layer over the mask layer, and optionally flattens the height field.

• Composites together two height fields.

• Sets all values in a heightfield layer to a fixed value.

• Sets the border voxel policy on a height field volume.

• Creates a mask based on different features of the height layer.

• Creates a mask based some other geometry.

• Creates a mask where the input terrain is hollow/depressed, for example riverbeds and valleys.

• Adds vertical noise to a height field, creating peaks and valleys.

• Exports height and/or mask layers to disk as an image.

• Lets you paint values into a height or mask field using strokes.

• Patches features from one heightfield to another.

• Adds displacement in the form of a ramps, steps, stripes, Voronoi cells, or other patterns.

• Projects 3D geometry into a height field.

• Applies a material that lets you plug in textures for different layers.

• Remaps the values in a height field or mask layer.

• Changes the resolution of a height field.

• Scatters points across the surface of a height field.

• Simulates loose material sliding down inclines and piling at the bottom.

• Creates stepped plains from slopes in the terrain.

• Stitches height field tiles back together.

• Splits a height field volume into rows and columns.

• Height field specific scales and offsets.

• Visualizes elevations using a custom ramp material, and mask layers using tint colors.

• Makes holes in surfaces.

• Deforms the points in the first input to make room for the inflation tool.

• Instances Geometry on Points.

• Creates points with attributes at intersections between a triangle and/or curve mesh with itself, or with an optional second set of triangles and/or curves.

• Composes triangle surfaces and curves together into a single connected mesh.

• Processes its inputs using the operation of a referenced compiled block.

• Builds an offset surface from geometry.

• Generates an isometric surface from an implicit function.

• The Join op connects a sequence of faces or surfaces into a single primitive that inherits their attributes.

• Divides, deletes, or groups geometry based on an interactively drawn line.

• Creates fractal geometry from the recursive application of simple rules.

• Deforms geometry based on how you reshape control geometry.

• Reads a lidar file and imports a point cloud from its data.

• Creates polygon or NURBS lines from a position, direction, and distance.

• Animates points using an MDD file.

• Deforms geometry by using another piece of geometry to attract or repel points.

• Aligns the input geometry to a specific axis.

• Resizes and recenters the geometry according to reference geometry.

• Reorders the primitive and point numbers of the input geometry to match some reference geometry.

• Assigns one or more materials to geometry.

• Measures area, volume, or curvature of individual elements or larger pieces of a geometry and puts the results in attributes.

• Merges geometry from its inputs.

• Defines groupings of metaballs so that separate groupings are treated as separate surfaces when merged.

• Creates metaballs and meta-superquadric surfaces.

• Duplicates and mirrors geometry across a mirror plane.

• Displaces points along their normals based on fractal noise.

• Supports Muscle Deform by assigning capture weights to points based on distance away from given primitives

• Deforms a surface mesh representing skin to envelop or drape over geometry representing muscles

• Creates a "naming" attribute on points or primitives allowing you to refer to them easily, similar to groups.

• Computes surface normal attribute.

• Does nothing.

• Merges geometry from multiple sources and allows you to define the manner in which they are grouped together and transformed.

• Assists the creation of a Muscle or Muscle Rig by allowing you to draw a stroke on a projection surface.

• Deforms input geometry based on ocean "spectrum" volumes.

• Generates particle-based foam

• Generates particles and volumes from ocean "spectrum" volumes for use in simulations

• Generates volumes containing information for simulating ocean waves.

• Instances individual waveforms onto input points and generated points.

• Executes an OpenCL kernel on geometry.

• Computes orientations (frames) along curves.

• Marks the output of a sub-network.

• Packs geometry into an embedded primitive.

• Packs points into a tiled grid of packed primitives.

• Editing Packed Disk Primitives.

• Editing Packed Primitives.

• Creates a color volume based on drawn curve

• Creates a fog volume based on drawn curve

• Creates an SDF volume based on drawn curve

• Generates a surface around the particles from a particle fluid simulation.

• Creates a set of regular points filling a tank.

• Places points and primitives into groups based on a user-supplied rule.

• Deforms geometry using the shape of a curve.

• Moves primitives, points, edges or breakpoints along their normals.

• Creates a planar polygonal patch.

• Fills in a 2d curve network with triangles.

• Deforms flat geometry into a pleat.

• Creates platonic solids of different types.

• Constructs an iso surface from its input points.

• Deforms geometry on an arbitrary connected point mesh.

• Creates new points, optionally based on point positions in the input geometry.

• Jitters points in random directions.

• Moves points with overlapping radii away from each other, optionally on a surface.

• Generates a cloud of points around the input points.

• Splits points shared by multiple vertices, optionally only if the vertices differ in attribute values.

• Computes and manipulates velocities for points of a geometry.

• Merges points interactively.

• Creates set of regular points filling a volume.

• Creates flat or tube-shaped polygon surfaces between source and destination edge loops, with controls for the shape of the bridge.

• Creates offset polygonal geometry for planar polygonal graphs.

• Extrudes polygonal faces and edges.

• Creates straight, rounded, or custom fillets along edges and corners.

• Breaks curves where an attribute crosses a threshold.

• Helps repair invalid polygonal geometry, such as for cloth simulation.

• Fills holes with polygonal patches.

• Creates coordinate frame attributes for points and vertices.

• Creates new polygons using existing points.

• Creates a smooth polygonal patch from primitives.

• Cleans up topology of polygon curves.

• Reduces the number of polygons in a model while retaining its shape. This node preserves features, attributes, textures, and quads during reduction.

• Combines polygons into a single primitive that can be more efficient for many polygons

• The PolySpline SOP fits a spline curve to a polygon or hull and outputs a polygonal approximation of that spline.

• Divides an existing polygon into multiple new polygons.

• Constructs polygonal tubes around polylines, creating renderable geometry with smooth bends and intersections.

• Interpolates between a set of pose-shapes based on the value of a set of drivers.

• Combine result of Pose-Space Deform with rest geometry.

• Packs geometry edits for pose-space deformation.

• Creates common attributes used by the Pose-Space Edit SOP.

• Edits primitive, primitive attributes, and profile curves.

• Extracts or manipulates profile curves.

• Creates profile curves on surfaces.

• Applies common post-processing effects to the results of Pyro solves.

• Runs a dynamic Pyro simulation.

• Creates points for sourcing pyro and smoke simulations.

• Pyro Source Spread solves for the spreading of flame across a point cloud.

• Runs a Python snippet to modify the incoming geometry.

• Runs a dynamic Bullet simulation.

• Combines fractured pieces or constraints into larger clusters.

• Packs and creates attributes describing rigid body objects.

• Stores the primitive number and distance to the opposite face on the inside faces of fractured geometry.

• Creates attributes describing rigid body constraints.

• Creates rigid body constraint geometry from curves drawn in the viewport.

• Creates rigid body constraint geometry from interactively drawn lines in the viewport.

• Creates rigid body constraint geometry from a set of rules and conditions.

• Converts existing constraint prims into constraints with different anchor positions.

• Deforms geometry with simulated proxy geometry.

• Detects when connected faces have become separated.

• Merges RBD fractured geometry with the proxy geometry and pushes it out from the center to create an exploded view.

• Packs RBD fractured geometry, saves them to disk, and loads them back again.

• Creates additional detail on the interior surfaces of fractured geometry.

• Fractures the input geometry based on a material type.

• Packs RBD geometry, constraints, and proxy geometry into a single geometry.

• Paints values onto geometry or constraints using strokes.

• Unpacks an RBD setup into three outputs.

• Attaches RenderMan shaders to groups of faces.

• Generates surfaces by stretching cross-sections between two guide rails.

• Projects one surface onto another.

• Increases the number of points/CVs in a curve or surface without changing its shape.

• Scatters new guides, interpolating the properties of existing guides.

• Recreates the shape of the input surface using "high-quality" (nearly equilateral) triangles.

• Repacks geometry as an embedded primitive.

• Resamples one or more curves or surfaces into even length segments.

• Sets the alignment of solid textures to the geometry so the texture stays put on the surface as it deforms.

• Retimes the time-dependent input geometry.

• Reverses or cycles the vertex order of faces.

• Revolves a curve around a center axis to sweep out a surface.

• Rewires vertices to different points specified by an attribute.

• Generates ripples by displacing points along the up direction specified.

• Generates ripples by displacing points along the up direction specified.

• Scatters new points randomly across a surface or through a volume.

• Runs scripts when cooked.

• Lets you interactively reshape a surface by brushing.

• Morphs though a sequence of 3D shapes, interpolating geometry and attributes.

• Computes the post-deform or pre-deform difference of two geometries with similar topologies.

• Computes the convex hull of the input geometry and moves its polygons inwards along their normals.

• Builds a skin surface between any number of shape curves.

• Creates a sky filled with volumentric clouds

• Smooths out (or "relaxes") polygons, meshes and curves without increasing the number of points.

• Moves the selected point along its normal, with smooth rolloff to surrounding points.

• Moves the selected point, with smooth rolloff to surrounding points.

• Creates a tetrahedral mesh that conforms to a connected mesh as much as possible.

• Creates a simple tetrahedral mesh that covers a connected mesh.

• Creates a partition of a tetrahedral mesh that can be used for finite-element fracturing.

• Allows running a SOP network iteratively over some input geometry, with the output of the network from the previous frame serving as the input for the network at the current frame.

• Reorders points and primitives in different ways, including randomly.

• Creates a sphere or ovoid surface.

• Splits primitives or points into two streams.

• Spray paints random points onto a surface.

• A SOP node that sets the sprite display for points.

• Insets points on polygonal faces.

• Caches the input geometry in the node on command, and then uses it as the node’s output.

• Stretches two curves or surfaces to cover a smooth area.

• Low level tool for building interactive assets.

• Subdivides polygons into smoother, higher-resolution polygons.

• The Subnet op is essentially a way of creating a macro to represent a collection of ops as a single op in the Network Editor.

• Trims or creates profile curves along the intersection lines between NURBS or bezier surfaces.

• Creates a surface by sweeping a cross section curve along a spine curve.

• Switches between network branches based on an expression or keyframe animation.

• Switches between two network branches based on an expression or geometry test.

• Sends input geometry to a TOP subnet and retrieves the output geometry.

• Reads a CSV file creating point per row.

• Creates a rock creature, which can be used as test geometry.

• Creates a pig head, which can be used as test geometry..

• Creates a rubber toy, which can be used as test geometry.

• Creates a shader ball, which can be used to test shaders.

• Creates a squab, which can be used as test geometry.

• Creates a template body, which can be used as test geometry.

• Creates a template head, which can be used as test geometry.

• Creates a soldier, which can be used as test geometry.

• Provides a simple crowd simulation for testing transitions between animation clips.

• Provides a simple Bullet simulation for testing the behavior of a ragdoll.

• Partitions a given tetrahedron mesh into groups of tets isolated by a given polygon mesh

• Performs variations of a Delaunay Tetrahedralization.

• Cooks the input at a different time.

• Sets attributes used by the Toon Color Shader and Toon Outline Shader.

• Non-rigidly deforms a surface to match the size and shape of a different surface.

• Lets you interactively draw a reduced quad mesh automatically snapped to existing geometry.

• Creates a torus (doughnut) shaped surface.

• Traces curves from an image file.

• Creates trails behind points.

• The Transform operation transforms the source geometry in "object space" using a transformation matrix.

• Transforms the input geometry relative to a specific axis.

• Transforms the input geometry by a point attribute.

• Transforms input geometry according to transformation attributes on template geometry.

• Creates a triangular Bezier surface.

• Refines triangular meshes using various metrics.

• Connects points to form well-shaped triangles.

• Trims away parts of a spline surface defined by a profile curve or untrims previous trims.

• Creates open or closed tubes, cones, or pyramids.

• Generates an edge group representing suggested seams for flattening a polygon model in UV space.

• Adjusts texture coordinates in the UV viewport by painting.

• Lets you interactively move UVs in the texture view.

• Creates flattened pieces in texture space from 3D geometry.

• Merges UVs.

• Packs UV islands efficiently into a limited area.

• Relaxes UVs by pulling them out toward the edges of the texture area.

• Assigns UVs by projecting them onto the surface from a set direction.

• Applies an image file as a textured shader to a surface.

• Assigns texture UV coordinates to geometry for use in texture and bump mapping.

• Transforms UV texture coordinates on the source geometry.

• Separates UVs into reasonably flat, non-overlapping groups.

• Processes geometry using an external program.

• Unpacks packed primitives.

• Unpacks points from packed primitives.

• Converts "packed USD" primitives into normal Houdini geometry.

• Creates one or more empty/uniform VDB volume primitives.

• Activates voxel regions of a VDB for further processing.

• Expand or contract signed distance fields stored on VDB volume primitives.

• Moves VDBs in the input geometry along a VDB velocity field.

• Moves points in the input geometry along a VDB velocity field.

• Computes an analytic property of a VDB volumes, such as gradient or curvature.

• Clips VDB volume primitives using a bounding box or another VDB as a mask.

• Combines the values of two aligned VDB volumes in various ways.

• Tests VDBs for Bad Values and Repairs.

• Cuts level set VDB volume primitives into multiple pieces.

• Build an LOD Pyramid from a VDB.

• Blends between source and target SDF VDBs.

• Create a mask of the voxels in shadow from a camera for VDB primitives.

• Deletes points inside of VDB Points primitives.

• Manipulates the Internal Groups of a VDB Points Primitive.

• Computes the steady-state air flow around VDB obstacles.

• Removes divergence from a Vector VDB.

• Fixes signed distance fields stored in VDB volume primitives.

• Re-samples a VDB volume primitive into a new orientation and/or voxel size.

• Reshapes signed distance fields in VDB volume primitives.

• Splits SDF VDBs into connected components.

• Smooths out the values in a VDB volume primitive.

• Smooths out SDF values in a VDB volume primitive.

• Creates an SDF VDB based on the active set of another VDB.

• Merges three scalar VDB into one vector VDB.

• Splits a vector VDB primitive into three scalar VDB primitives.

• Replaces a VDB volume with geometry that visualizes its structure.

• Generates a signed distance field (SDF) VDB volume representing the surface of a set of particles from a particle fluid simulation.

• Converts point clouds and/or point attributes into VDB volume primitives.

• Converts polygonal surfaces and/or surface attributes into VDB volume primitives.

• Fills a VDB volume with adaptively-sized spheres.

• Configures geometry for Vellum Grain constraints.

• Configure constraints on geometry for the Vellum solvers.

• Vellum solver setup to pre-roll fabric to drape over characters.

• Packs Vellum simulations, saves them to disk, and loads them back again.

• Packs Vellum geometry and constraints into a single geometry.

• Applies common post-processing effects to the result of Vellum solves.

• Ties vellum points to a reference frame defined by moving geometry.

• Blends the current rest values of constraints with a rest state calculated from external geometry.

• Runs a dynamic Vellum simulation.

• Unpacks a Vellum simulation into two outputs.

• Verify that a bsdf conforms to the required interface.

• Manually adds or edits attributes on vertices (rather than on points).

• Shows/hides primitives in the 3D viewer and UV editor.

• Lets you attach visualizations to different nodes in a geometry network.

• Creates a volume primitive.

• Computes analytic properties of volumes.

• Computes a speed-defined travel time from source points to voxels.

• Blurs the voxels of a volume.

• Bounds voxel data.

• Cuts polygonal objects using a signed distance field volume.

• Re-compresses Volume Primitives.

• Convolves a volume by a 3×3×3 kernel.

• Compute the Fast Fourier Transform of volumes.

• Feathers the edges of volumes.

• Flattens many volumes into one volume.

• Combines the scalar fields of volume primitives.

• Translates the motion between two "image" volumes into displacement vectors.

• Fill in a region of a volume with features from another volume.

• Remaps a volume according to a ramp.

• Rasterizes into a volume.

• Samples point attributes into VDBs.

• Converts a curve into a volume.

• Converts fur or hair to a volume for rendering.

• Converts a point cloud into a volume.

• Converts a point cloud into a volume.

• Reduces the values of a volume into a single number.

• Resamples the voxels of a volume to a new resolution.

• Resizes the bounds of a volume without changing voxels.

• Builds a Signed Distance Field from an isocontour of a volume.

• Extracts 2d slices from volumes.

• Splices overlapping volume primitives together.

• Stamps volumes instanced on points into a single target volume.

• Adaptively surfaces a volume hierarchy with a regular triangle mesh.

• Computes a trail of points through a velocity volume.

• Runs CVEX on a set of volume primitives.

• Computes a velocity volume.

• Generates a volume velocity field using curve tangents.

• Generates a velocity field within a surface geometry.

• Adjusts attributes for multi-volume visualization.

• Runs a VEX snippet to modify voxel values in a volume.

• Sets the voxels of a volume from point attributes.

• Fractures the input geometry by performing a Voronoi decomposition of space around the input cell points

• Given an object and points of impact on the object, this SOP generates a set of points that can be used as input to the Voronoi Fracture SOP to simulate fracturing the object from those impacts.

• Cuts the geometry into small pieces according to a set of cuts defined by polylines.

• Creates the point attributes needed to create a Vortex Force DOP.

• Generates volumes to be used as sources in a whitewater simulation.

• Computes generalized winding number of surface at query points.

• Morphs between curve shapes while maintaining curve length.

• Captures surfaces to a wire, allowing you to edit the wire to deform the surface.

• Deforms geometry captured to a curve via the Wire Capture node.

• Transfers the shape of one curve to another.

• Constructs polygonal tubes around polylines, creating renderable geometry.

• Assigns channel paths and/or pickscripts to geometry.