|On this page|
This node can be used to make smoothly varying tangent vector fields on polygonal surface that closely follow and smoothly interpolate between sparsely given guide values. It has built-in support for guiding of the generated fields by curvature directions or boundary curves. In addition to generating ordinary vector fields, this node can also generate instances of the more general concept 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 (e.g. 4 in the case of corss-fields) that are rotationally spaced evenly in the tangent plane of the point. We call each of these vectors 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 does not 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 would give the same multi-vector. In other words, a 2-vector field is like a vector field in which we do not distinguish betwen 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 2 instance vectors of a 4-vector field (the other two being the negative U and V axes). This means that this node can be used to produce smoothly varying frame-fields over geometries.
Technical note: In general it impossible to have an everywhere nonzero smoothly varying frame-field across an entire surface, with few exceptions. For example, it is provably 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, conceptually, a discrete sample (one sample per point or polygon) of a smooth field that ranges over the whole surface and this larger field does become zero in some (non-sample) singular locations. If the field is computed over points, these singularities will land inside some of the faces which we then call singular faces. If the field is computed over primitives, then singularities will be vertices. Also note that the indexing of the instances of a multi-vector field at a point or a face are arbitrary. This node tries to choose the first instance vectors in such a way that individual instances with the same index over all elements appear like a smoothly varying vector field with as little discontinuity as possible. It is however not always possible to have no discontinuities as this would in other ways violate 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 nonmanifold edges or points, they are treated as being cut away with narrow slits or holes left in their place. Polygon faces with four or more vertices are triangulated internally. The results reported on an input face that is internally triangulated is picked up from one of its member triangles arbitrarily. In other words, this node does not combine the results from individual member triangles by some form of averging because in complicated polygons there can be a substantial amount of variation over the member triangles and an average may be inferior to all individual member values. Therefore, for better accuracy when generating tangent fields over faces, it is a good idea to use this node on surfaces that are already triangulated.
In the case of fields computed over points, instance vectors are reported as being tangent to one of the faes 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 paris of them.
You can use this node as an alternative to PolyFrame for generating very 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.
A subset of primitives in the input geometry over which (or its points) the field attribute values will be set. Leave this blank to affect the attribute value for all closed polygons in the input.
Determines whether the generated field will be carried over points or primitives.
The number of directions in the output field. Use 1 for ordinary vector fields. This node allows up to 8 directions. In practice, there is little use for values other than 1, 2, 4, and rarely 6.
This parameter can be used to rotate all the generated directions consistently in their respective tangent spaces.
In absence of any guiding, i.e. when all guide strength parameters are set to zero, this node finds a “smoothest” field over the surface. By construction, this smoothest field will be equally smooth if rotated globally by any mount using the Global Rotation parameter.
Set the force of curvature directions in influencing the generated field. Note that this option is only avaiable for 2-vector fields and up. You can specify whether the field should follow the Maximum or Minimum principal curvature directions. Note that this choice becomes irrelevant for 4-vector field since the two principal directions are orthognoal to each other and lining up the field with either has the same effect.
This node cannot force an ordinary vector field (a 1-vector field) to be guided by principal curvature directions of the surface. This has to do with the fact that each of the principal directions is a 2-vector field, meaning that at each point the indicated direction of curvature is unoriented. The algorithms used in this node can only use a multi-vector fields to guide the construction of a fields whose number of directions is a multiple the number of directions of the guide.
Set the force of boundary tangents in influencing the generated field. Tangents can be oriented in clockwise or counterclockwise directions around each boundary loop, where in a counterclockwise orienteation the surface will be to the right of the direction of traversal of the loop. Similarly the field can be forced to be orthogonal to the boundary by choosing the boundary directions to point inward or outward with respect ot the surface.
If the surface has multiple boundaries, then chances are that none of these options are ideal for guiding a 1-vector field, since in such cases the natural arrangement would be to have some of the boundaries oriented clockwise or inwards and others counterclockwise or outwards. For example, one 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.
Set the influence of the guide attribute. A guide attribute must be a vector-3 attribute that assigns a nonzero vector to points or primitives on which the field is guided. Zero values are ignored by this node and filled in. Note that the output directions assigned to points or primitives with nonzero guide values may not exactly match the input values and their magnitudes may be very different.
Name of the guide attribute.
Output Attributes and Groups
Name of the field attribute(s) to be created. Depending on the number of directions generated, individual direction attribute names are appended by their index number.
If toggled on, all generated field vectors will have unit length. Otherwise, they are reported as computed with smoothly varying magnitudes which typically drop near singular locations.
Determines the number of field instance vectors that will be produced in the output as attributes. The directions are numbered 0, 1, … in counterclockwise order.
All directions will be generated. So, e.g. a 4-vector field will produce four direction attributes.
One Direction Per Symmetric Pair
If the number of directions is even, this option would only generate the first out of any two directions that are opposites. For example, choosing this option on a 4-vector field would produce a coordiante frame (a pair of axis vectors) over each element.
Only One Direction
Only the first of the directions is reported.
If enabled, the list of singular elements (points if the field is generated over primitives, or primitives if the field is generated over points) will be reported as a group.
If enabled, and when the number of directions is greater than 1, an edge group is reported that indicates discontinuities in field direction indexing. In most places each individual field direction vectors behaves like a smoothly varying vector-field. However, this often cannot be achieved globally and there will have to be places that individual directions appear to jump, e.g. 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.
These parameters are used by the viewport state of Tangent Field and do not cause a recooking of the operator when modified.
If enabled, the field is displayed 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 drawn in red, and all the other ones in 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 4 vertices or more.
If enabled, all field vectors are displayed as unit length even if the computed values are not.
Prescale for Viewing
If enabled, the vectors are displayed at a precalculated scale to prevent clutter.
Allows rescaling of the current viewing scale of the vectors by any factor.
If enabled, a dot is displayed in the approximate location of each singularity. A red dot indicates a singularity with positive index and a blue dot indicates a singularity with negative index.