Houdini 20.0 Nodes Geometry nodes

Fiber Groom geometry node

Defines the fiber direction vector for input solid muscle geometry.

On this page
Since 19.0

This node allows you to interactively paint the fiber direction for your muscle tetrahedral meshes.

Each vertex on your tetrahedrons has a direction or vector associated with it. When you paint fiber direction on your muscles, you are adjusting these vectors. Vector values are stored in the materialW attribute.

Fiber direction establishes the anisotropic compression axis that scaling happens along for muscle contraction. This means that when a muscle flexes (activates) and a muscle scale force is then applied to a muscle tetrahedron, the tet is then scaled in the direction its fiber vectors point along the muscle.

When you paint on your geometry with the Fiber Groom brush, the fibers are pushed in the direction of your strokes and the orientation of their vectors change accordingly. You want your muscle fibers to flow in the most logical direction for your muscles based on their shapes and where they should bulge when flexed.


  • Some of your fiber direction vector lines may appear to go inside or disappear inside your muscles. This is expected and will not affect your painted vector values as materialW only accepts a direction along the surface of your muscles as a value. You cannot paint values contrary to this even when the fiber direction vector lines in the viewport state may depict otherwise.

  • The initial fiber groom for each muscle is based on a muscle’s longest axis. As such, the default fiber groom values for regular shaped muscles may be more desirable initially than those for oddly shaped muscles.


Fiber Groom state hotkeys

Hotkeys or Interaction



Paint the direction of the muscle fibers.

Press+hold S

Enter isolation selection mode. LMB-click a muscle while in this mode to isolate it. While in isolation paint mode, any strokes you paint will only affect the isolated muscle. By default, you can paint across all muscles.

Fiber Groom state right-click menu
Fiber Groom state visualizers
Example: Painting the fiber direction




Sets and stores the local space direction or vector that is used for the fiber groom direction.



Restricts the groom to only the specified muscles (muscle_ids).

Piece Attribute

Specifies the attribute that identifies your muscle geometry pieces for the fiber groom. By default, Piece Attribute is muscle_id.

If you are using this node for a purpose other than for muscles, you can specify your custom attribute here.

Visualize Fiber Direction Vectors

When on, the fiber direction vectors for your muscles are represented by blue lines in the viewport state.

Example: Visualize Fiber Direction Vectors on/off

Vector Scale

Increases or degrees the length of the fiber direction vector lines in the viewport state.

Strokes Ignore Pieces

Each of your strokes registers itself on the first point you click. When on, you can stroke the fibers across multiple muscles at once. When off, you can only groom the fibers on the individual muscle you began your stroke on. Strokes Ignore Pieces is off by default.

Example: Strokes Ignore Pieces on/off

Axial Ramp Correction

When on, the axialramp attribute will tend to be more sensible about which way is up. This will affect the initial orientation of the the materialW attribute which is used as the fiber direction. When off, this orientation can appear somewhat arbitrary. The axialramp attribute will only be computed if it doesn’t already exist. Therefore, this toggle will only have an effect when the incoming muscle geometry does not have an axialramp. Once strokes have been cached, materialW will no longer react to changes to this parameter.

External Curves

Uses a series of external curves to drive the fiber groom stroke direction for your muscles.

This parameter is only available when you have external poly lines connected to input 2 of the Fiber Groom SOP node.

Groom Fibers By Proximity

Muscles use the curves closest to them in proximity to determine their fiber groom stroke directions.

Groom By Matching MuscleID

Muscles use the curves that match their muscle IDs to determine their fiber groom stroke directions.


Enable Symmetry

When on, groom both halves of your character’s muscles at the same time if your character is symmetrical.

Mirror Origin

XYZ position of the symmetry plane relative to the origin of the muscles.

Mirror Distance

Distance offset of the symmetry plane from the Origin.

Mirror Direction

Across which plane (X, Y, or Z) to mirror the muscles. Also determines the normal direction of the symmetry plane.

Clear All Strokes

Deletes all the unsaved fiber groom strokes from all your muscles.


Input 1

Muscle tetrahedral meshes with muscle_ids.

Input 2

Helper curves to direct muscle fiber direction. You can use these poly lines alone or as your first set of strokes. Poly lines that have the same muscle_id names as muscles are automatically linked to their like-named corresponding muscles.


Output 1

materialW attributes values.

See also

Geometry nodes