Houdini 20.0 Nodes Geometry nodes

Tangent Field geometry node

Creates a smooth tangent (multi-) vector field on a polygonal surface.

On this page
Since 19.5

Overview

The Tangent Field generates smoothly varying tangent vector fields on polygonal surfaces, and stores the fields as either point or primitive attribute data. The fields may be optionally directed by sparse guide values and smoothly interpolate between the given values. Curvature directions and boundary curves can also influence the fields.

For fields computed over points, instance vectors are reported as being tangent to one of the faces incident to a point. In this case, the instances of a multi-vector at a point are equally spaced around the point in terms of the total face angle sum between consecutive pairs of them.

You can use this node as an alternative to PolyFrame to generate smoothly varying frames across the faces of a surface mesh. To do this, generate a 4-vector field over the faces and report only the first two instances. Optionally, you can make the frame line up with curvature directions or boundary curves.

Notes

  • This node also generates instances of rotationally symmetric (RoSy) multi-vector fields, such as line-fields (RoSy 2-vector fields) or cross-fields (RoSy 4-vector fields). You can think of such fields as assigning to each point multiple tangent vectors (for example, 4 in the case of cross-fields) that are rotationally spaced evenly in the tangent plane of the point. Each of these vectors is an instance of the multi-vector. As a multi-vector field, these vectors represent the same object. In the same way that rotating a tangent vector by 360 degrees in its tangent plane doesn’t change the vector, rotating a 2-vector field by a multiple of 360/2 = 180 degrees or a 4-vector field by a multiple of 360/4 = 90 degrees gives the same multi-vector. In other words, a 2-vector field is like a vector field in which we do not distinguish between a vector and its negation. Similarly, a 4-vector field is like a vector field where we think of a vector as being the same as the 90, 180, and 270 degree rotations of that vector. This node represents a multi-vector field by reporting all or some of the instance vectors at each element. For example, a smoothly varying pair of local UV coordinate axes over a patch of surface can be thought of as the first two instance vectors of a 4-vector field (the other two being the negative U and V axes). As a result, this node produces smoothly varying frame-fields over geometries.

  • In general, you can’t have an everywhere nonzero smoothly varying frame-field across an entire surface. For example, it’s impossible to have such a frame field over a deformed sphere regardless of the connectivity or the deformation (The Hairy Ball Theorem). However, the output of this node is a discrete sample (one sample per point or polygon) of a smooth field that ranges over the whole surface and this larger field becomes zero in some (non-sample) singular locations. If the field is computed over points, these singularities land inside some of the faces (known as singular faces). If the field is computed over primitives, then singularities are vertices. Indexing the instances of a multi-vector field at a point or a face are arbitrary. This node tries to choose the first instance vectors so that individual instances with the same index over all elements appear like a smoothly varying vector field with as little discontinuity as possible. However, it’s not always possible to avoid discontinuities entirely as this violates similar provable restrictions.

  • This node doesn’t alter the geometry of its input. However, the computations in this node are always performed on a triangulated surface. If the input geometry has non-manifold edges or points, they're treated as being cut away with narrow slits or holes left in their place. Polygonal faces with four or more vertices are triangulated internally. The result reported on an input face that’s internally triangulated is picked arbitrarily from one of its member triangles. In other words, this node doesn’t combine the results from individual member triangles by some form of averaging. This is because complicated polygons generally exhibit a substantial amount of variation over the member triangles, which means an average inaccurately represents all the individual member values. Therefore, triangulating a surface before using this node yields better results.

Parameters

Group

A subset of primitives or points in the input geometry over which the field attribute values are set. Leave this blank to affect the attribute value for all closed polygons in the input.

Carried On

Specifies whether the generated field is carried over points or primitives.

The default value is Points.

Directions

The number of directions in the output field. Set to 1 for ordinary vector fields.

The default value is 4. The most common values are 1, 2, 4, and sometimes 6.

Global Rotation

Rotate all the generated directions uniformly in their respective tangent spaces.

The default value is 0.

Guides

When there is no guiding (when all guide strength parameters are set to zero), the Tangent Field node finds the smoothest field over the surface. This smoothest field is equally smooth when globally rotated using the Global Rotation parameter.

Curvature

The force of curvature directions in influencing the generated field. Specify whether the field follows the maximum or minimum principal curvature directions.

This parameter is only available for 2-vector fields and up. For a 4-vector field, whether you use the maximum or minimum principal curvature directions is irrelevant since the two principal directions are orthogonal to each other and lining up the field with either has the same effect.

The default value is 0.1.

Note

This node can’t force an ordinary vector field (a 1-vector field) to be guided by principal curvature directions of the surface. Each principal direction is a 2-vector field, which means that at each point the indicated direction of curvature is unoriented. This node’s algorithms can only use a multi-vector field to guide the construction of a field whose number of directions is a multiple of the number of directions of the guide.

Boundary

The force of boundary tangents in influencing the generated field.

The orientation of tangents are either in Clockwise or Counterclockwise directions around each boundary loop. When set to Counterclockwise, the surface is to the right of the direction of traversal of the loop. Similarly, you can force the field to be orthogonal to the boundary by choosing the boundary directions to point Inward or Outward with respect to the surface.

The default value is 0.

Note

If the surface has multiple boundaries, none of these options are ideal for guiding a 1-vector field, since the natural arrangement is to have some of the boundaries oriented clockwise or inwards and others counterclockwise or outwards. For example, a common model is to have one boundary act like source (oriented inward) and others like sinks (oriented outward). For such fine control, use an attribute guide.

Attribute

The influence of the guide attribute. The guide attribute must be a vector-3 attribute that assigns a nonzero vector to points or primitives on which the field is guided.

This node ignores and fills in zero values. The output directions assigned to points or primitives with nonzero guide values may not exactly match the input values and their magnitudes may be different.

The default value is 0.

Attribute Name

The name of the guide attribute.

Output Attributes and Groups

Field Attribute

The name of the field attribute(s) to create.

Depending on the number of directions generated, individual direction attribute names are appended by their index number.

The default value is field.

Normalize

Provides all generated field vectors with unit length. Otherwise, they're reported as computed with smoothly varying magnitudes that typically drop near singular locations.

Generate

The number of field instance vectors produced in the output as attributes. The directions are numbered 0, 1, and so on in counterclockwise order.

All Directions (default)

Generates all directions. For example, a 4-vector field produces four direction attributes.

One Direction Per Symmetric Pair

If the number of directions is even, this generates the first out of any two directions that are opposites. For example, a 4-vector field produces a coordinate frame (a pair of axis vectors) over each element.

Only One Direction

Reports only the first of the directions.

Singular Group

Reports the list of singular elements (points if the field is generated over primitives or primitives if the field is generated over points) as a group.

The default value is singular.

Positive Singular Group

Reports the list of positive singular elements (points if the field is generated over primitives or primitives if the field is generated over points) as a group.

The default value is positive_singular.

Negative Singular Group

Reports the list of negative singular elements (points if the field is generated over primitives or primitives if the field is generated over points) as a group.

The default value is negative_singular.

Discontinuities

When the number of directions is greater than 1, this reports an edge group that indicates discontinuities in field direction indexing.

In most places, each individual field direction vector behaves like a smoothly varying vector-field. However, this often can’t be achieved globally and there must be places that individual directions appear to jump (for example, by 90 degrees). For fields generated over points, these edges indicate a jump from one end of the edge to the other. In the case of fields on faces, these edges indicate jumps between the faces on the two sides of the edge.

The default value is discontinuities.

Visualization

The viewport state of Tangent Field uses these parameters, which don’t recook the operator when modified.

Visualize Field

Displays the field over the geometry when the viewport state of the node is active.

When displaying multi-vector fields, the vector field of the first instance is red and the other vector fields are blue. When displaying a field computed over primitives, a set of instances is displayed for every member triangle in the internal triangulation of faces with four or more vertices.

Display Normalized

Displays all field vectors as unit length even if the computed values are not.

Prescale for Viewing

Displays the vectors at a precalculated scale such that the field vectors are easier to discern.

Vector Scale

Rescales the current viewing scale of the vectors by any factor.

The default value is 1.

Show Singularities

Displays a dot in the approximate location of each singularity. A red dot indicates a singularity with a positive index and a blue dot indicates a singularity with a negative index.

See also

Geometry nodes