Free Electron Documented Operators
Common Operator Info
FE SurfaceBindOp

(bound to green area only, using a group)


Associates points, primitives, or fragments to a driver surface.

A fragment is usually a set of points or primitives that make up a collective body. General polygonal surfaces may be composed of polygon primitives, like triangles. Fragments give an option to use a coarser binding.


Attributes are added to the Reference Input Surface to represent a displaced connection to a Reference Driver Surface. The input and driver should be supplied at the same frame, commonly the reference pose.



Common threading options are supported as inherited by OperatorThreaded.

The Bind Attribute Prefix specifies the names where to store the binding attributes. For the default prefix of "bind", each binding will have numbered attributes such as the integer "bindFace0" and vector "bindBary0". Currently, the weights between multiple bindings are determined during the wrapping process.

If an Input Group is specified, only the elements in that group will be bound. If primitives are bound, a primitive group is expected. Otherwise, a point group is expected.

Similarly, a Driver Group can be specified which limits the faces or curves that the input can be bound to. This is always expected to be a primitive group.


The Partition Driver option can limit bindings from the input only onto primitives of the driver that have a matching string attribute. The comparison is made between the primitive Driver Attr on the driver surface and the point Input Attr on the input surface. The value in the Driver Attr is generally a simple name, but the value in the Input Attr can be a regular expression.

Selecting Subdivide Driver will smoothly increase the resolution of the driver to a given Depth. Quad drivers tend to produce better subdivision results than triangular drivers.

If Bind Fragments is used, a Fragment Attribute string attribute is read from the point or primitive data, depending on whether Bind Primitives is used. All points (or primitives) with the same fragment name are bound as a rigid unit.

For fragment bindings, a number of Samples more than one will take multiple sample along the fragment. This can be used to bind along a spine, such as for a feather.

When fragmentation is being used, activating Generate Locators will create three detail attributes for every fragment. The attributes names have three parts separated with underscores, starting with a Locator Prefix, followed by the fragment text, and each completed with the character P, N, or T, representing position, normal, and tangent respectively. A following SurfaceWrapOp with a matching binding prefix will transform these locators into its output. These locators contained in the output of the bind and wrap nodes are the form required by ClaspOp to update surfaces meant to represent ties between these fragments (like shoe laces).

A specified maximum number of Bindings are made from the input to the driver. By default, each input point is bound separately, but Bind Primitives will bind all the points in each primitive the same. If points are shared between primitives, one primitive will be used arbitrarily.

Binding data can be stored privately using Covert Bindings. Instead of adding attributes to the mesh, this stores bindings under a named entry in a global catalog. The name of this entry is written into a detail attribute on the mesh where a wrap node can find it. Storing the bindings covertly appears to be slightly slower for Houdini, but much faster for Maya.

Using Conform Primitives will force all the points on each input curve to use to same subset of driver elements (curves, triangles, or quads). Currently, only input curves are affected and this option is disabled when binding by primitive.

For primitive and fragment binding, the Pivot Point specifies where to make the collective connection. The default of First uses the first point found in that collection. Center will calculate an average point for that connection. Using Nearest will scan all the points and finds the nearest point to the driver. The nearest point search on each input point can take a noticeable amount of extra time. The first point is usually good for hair curves, while the center point is generally a good choice for buttons. The nearest point could be helpful for mesh-based hair bounding regions.

The binding Metric can choose nearest points on the driver using either the Spatial Distance or by a UV Match. To successfully bind using UVs, it is expected that the input and driver surfaces should already line up well in UV space. Also, if any driver surface UVs overlap, the selection process should be considered arbitrary and the results could easily be unusable.

The Limit Distance option can be used to discard bindings beyond a certain range from the element using the To value.


tested in Houdini and Maya

Web page, Copyright 2008-2021, Free Electron Organization