This node generates coordinate frame attributes for points and vertices
based on a user selected frame-style. Computed frames consist of normal,
tangent, and bitangent vectors; however, the user may choose to disable
output of tangent and/or bitangent vectors. Computed vectors are normalized
but are not necessarily orthogonal. You can choose to make the vectors orthogonal by turning on the **Make Frame Orthogonal** checkbox in the parameter editor.

The **Texture UV Gradient** frame style requires texture coordinate attributes (either point or vertex attributes). Texture coordinates are taken from the current layer.

## Parameters

Group

A subset of the source geometry for which attributes are to be computed.

Entity

The type of elements referenced in the **Group** field.

Style

First Edge

For each point, the normal vector is a smoothed point normal, the tangent vector is in the direction of the edge on which the point lies (specifically, the edge appearing first in the winding order), and the bitangent vector is orthogonal to the normal and tangent vectors. The following image shows tangent (red) and bitangent (yellow) vectors computed for the points of a triangle.

Two Edges

For each point, the normal vector is a smoothed point normal, the tangent vector is in the direction of the sum of the two edge vectors (where the edge vectors are the vector differences between the neighbouring points and the point for which the frame is being computed) on which the point lies, and the bitangent vector is orthogonal to the normal and tangent vectors. The following image shows tangent (red) and bitangent (yellow) vectors computed for the points of a triangle.

Primitive Centroid

For each point, the normal vector is a smoothed point normal, the tangent vector is in the direction of the vector difference of the point and the primitive centroid, and the bitangent is orthogonal to the normal and tangent vectors.

Texture UV

For each point, the normal vector is a smoothed point normal,
the tangent vector is the direction most corresponding with
an increase in u and no change in v, and the bitangent vector
is the direction most corresponding with an increase in v and
no change in u. If **Attribute Name** is not empty, it will
try to read an attribute with that name for the UV attribute.
If **Attribute Name** is empty, it will use `uv`

.

Texture UV Gradient

For each vertex, the normal vector is the polygon’s surface normal, the tangent vector is in the direction of maximum increase of the u texture coordinate attribute, and the bitangent vector is in the direction of maximum increase of the v texture coordinate attribute.

Attribute Gradient

For each vertex, the normal vector is the polygon’s surface normal, the tangent vector is in the direction of maximum increase of the first component of the specified attribute, and the bitangent vector is in the direction of maximum increase of the second component of the specified attribute.

Attribute Name

The name of the point or vertex attribute to use when **Style** is
**Attribute Gradient** or **Texture UV**.

Normal Name

The name of the normal attribute.

Tangent Name

The name of the tangent attribute.

Bitangent Name

The name of the bitangent attribute.

Make Frame Orthogonal

When enabled, enforces the constraint that the frame vectors be orthogonal. The tangent and bitangent vectors are adjusted to be orthogonal to each other and the normal.

Left-Handed Frame

When **Make Frame Orthogonal** is enabled, this specifies whether to
create a left-handed (on) or right-handed (off) coordinate frame.
Most situations require a right-handed coordinate frame, where
the cross product of the tangent (x) and the bitangent (y) is the normal (z).
In a left-handed coordinate frame, the cross product of the bitangent (y)
and the tangent (x) is the normal (z), or equivalently, the cross product
of the tangent (x) and the bitangent (y) is the negative of the normal (-z).