Free Electron Documented Operators
Common Operator Info
FE BladeOp

gourd in grass

spiked hair in velocity field


Simulate grass or short hair.

This operator is highly optimized for simulating fairly stiff short curves. Specific features focus on peculiar behaviors of grass that can also appear in fur and some hairstyles.

Segments do not twist, stretch, or compress in the simulation. Only the bend angles are subject to a physical response. However, facing vectors are processed, so twisting of geometry can be achieved on the output using other operators such as TwistWrapOp.


The Input Surface should be a collection of curve primitives with exactly five vertices each. It is presumed that the first vertex of each primitive is the base of a curve.

An optional Collider defines a region to be avoided.

An optional Driver Reference Surface and Deformed Surface allow the curve to be attached to a moving skin. Without an enabled driver, each curve base is presumed to be fixed in space attached to a nearly flat ground surface pointing generally upwards.


Common threading options are supported as inherited by OperatorThreaded.

The Tangent primitive vector attribute specifies the direction of travel for each curve. For efficiency and directable behavior, the curves are constrained to planar movement forwards and backwards along this tangent. The optional Facing point vector attribute specifies a direction perpendicular to the curve, intended to indicate the more planer side, such as with a feather of grass blade. The simulation may rotate this vector to imply twist to conform to preferential bending towards a facing direction.

A Force point vector attribute applies a force to each point without regard to its geometry or current orientation. Better results may be possible by specifying a Velocity point vector attribute to use the detailed air movement along with the local geometry to produce more realistic forces. Either attribute can be omitted. If both are used, the effect is cumulative.

The Tension value specifies a global angular spring strength for all curves. Drag will resist motion and is also computed angularly. Mass is a uniform scalar of Newtonian presence. Viscosity scales the effect the air velocity. Restoration is intended to pull the tips of curves back to their original world-relative angles even if the bases of the curves are pushed away. The Time Step should usually be set to the multiplicative inverse of the frame rate.

If the curves are Driver Bound, they are presumed to be attached to the Driver Surface and will be automatically moved with the Deformed Surface. The Deformed Surface can be omitted to just use the static Driver Surface. If a Driver Group is specified, the only the primitives in that group will be considered with the attachment. The Bind Attribute Prefix specifies where to find the bind data in the point attributes and can be generated using a SurfaceBindOp.

The Collision Method choose an algorithm to use for the optional Collider Surface. Only Ray Cast - Halvsies has had appreciable testing and is the only one recommended for general use. The precision of this method is limited by Halfing Steps. The Halvsies method narrows the potential angular displacement by diminishing splits, thereby reaching 1/256 precision with only eight sampling steps. A Collision Gap forces an extra space around the collider and may be used to account for imprecisions, either in this solver or in other aspects, like coarse proxy geometry. A non-zero Refinement will use adaptive subdivision on the collider to better follow the implied curvature.

Grabbing can be used to conditionally catch the tips of curves on the collider. This grabbing system detects curves impacted nearly flat to their tip and will produce a bowing arch instead of splaying out. This special case bypasses the physics engine for grabbed curves until they are released. You can influence the grabbing algorithm with the Grab Bias.

Debug Surface and Debug Collisions may draw extra information in the viewer. An debugging may be internally deactivated, such as if multi-threading is being used.

Buckling utilizes a non-uniform response where curves bent beyond the Break Angle temporary alter their rest angle to the peak angle minus the Elastic Angle. Until a buckled curve recovers to the Pop Angle, its temporary "plastic" rest angle is incrementally reduced by the Recovery Angle. When reaching the Pop Angle, the original rest angle is immediately restored.


tested in Houdini and Maya

Web page, Copyright 2008-2021, Free Electron Organization