¶Fiber Groom
The AdnFiberGroom node is a Houdini Digital Asset responsible for creating and editing muscle fibers. If a tendon mask is provided in the geostream, this node can also estimate an initial fiber flow. The AdnFiberGroom HDA uses the AdnFiberDiffusion and AdnFiberProjection SOP nodes as internal components.
¶How To Use
To create this node, follow these steps:
- Go to the geometry context that contains the muscle geometry for which fibers will be generated.
- Press TAB and navigate to the submenu AdonisFX > Utils to find the AdnFiberGroom
HDA type. - Connect the muscle geometry to the AdnFiberGroom input.
- Cook the node and select it. Then click the Gizmos icon (or press Enter in the viewport) to enter the view state and start grooming the fibers. The fibers will be written to the geostream as a point attribute called
adnFibers, and can be used to drive the activation of an AdnMuscle or AdnRibbonMuscle. - Connect the AdnFiberGroom HDA to the input of an AdnMuscle or AdnRibbonMuscle SOP node.

- If the geostream contains an
adnTendonspoint attribute as tendon mask, the AdnFiberGroom HDA will be able to estimate the initial fiber directions. Otherwise, the initial fiber directions will be empty.- It is recommended to place the AdnFiberGroom node after an
attribpaintnode, which is used to paint theadnTendonsmap.
To simplify the creation and initial setup, AdonisFX provides two utilities: Make Paintable and Make Groomable. These utilities automate the creation of the attribpaint node and the AdnFiberGroom HDA.
With the muscle geometry connected to the corresponding AdonisFX muscle SOP (i.e., AdnMuscle or AdnRibbonMuscle), select the muscle SOP node and click AdonisFX > Utils > Make Paintable. This utility will create:
-
an
attribcreatenode to define the required point attributes and assign default values, followed by -
an
attribpaintnode to allow those attributes to be edited.
Both nodes are automatically named and correctly connected to the muscle SOP node.
Next, paint the adnTendons map using the attribpaint node.
Then, select the muscle SOP node again and click AdonisFX > Utils > Make Groomable. This utility will create the AdnFiberGroom node that computes the initial fiber directions based on the previously painted adnTendons map. It also allows to further groom and refine the fibers if additional adjustments are needed. The AdnFiberGroom node will be automatically named and properly connected to the muscle SOP node.


- If the geostream is a combination of multiple muscles (with a piece ID primitive attribute) instead of single muscle pieces, it is also possible to use an
attribpaintto paint theadnTendonsfollowed by an AdnFiberGroom node to groom the fibers of all muscles at once (see Figure 4).- To be able to groom the fibers of a single muscle, press the Group selector on the AdnFiberGroom node, press the 9 key in the viewport and select a muscle to isolate it. This will automatically populate the Group entry allowing to groom the fibers of a single muscle.

¶Attributes
¶General Attributes
| Name | Type | Default | Animatable | Description |
|---|---|---|---|---|
| Group | String | ✗ | Isolate a specific group for the fiber grooming process. | |
| Piece Attribute | String | muscle_id |
✗ | Piece attribute from which isolated muscles will be deduced. If not present, the pieces will be isolated from the connectivity information. |
| Fibers Scale | Float | 10.0 | ✗ | Visualization scale of the projected fibers. |
| Strokes Ignore Pieces | Boolean | False | ✗ | Ignore the pieceid for the stroke data processing. This allows for a stroke to affect multiple pieces at once. |
| Triangulate Mesh | Boolean | True | ✗ | Triangulate the mesh internally for the AdnFiberDiffusion and AdnFiberProjection. For the diffusion step it alters the output fiber layout. This parameter should match the triangulate option of your AdnMuscle or AdnRibbonMuscle nodes connected downstream for consistent results. |
| Enable Mirror | Boolean | False | ✗ | Enable mirroring the strokes for grooming. |
| Mirror Origin | Float3 | {0.0, 0.0, 0.0} | ✗ | Mirror origin from which to consider the mirroring process. |
| Mirror Direction | Float3 | {1.0, 0.0, 0.0} | ✗ | Direction in which to mirror. |
| Mirror Distance | Float | 0.0 | ✗ | Distance to mirror the plane. |
| Clear Strokes | Button | ✗ | Returns the fiber directions to their initial state |
¶Parameter Template
