Grooming

Although the graph provides enough control to get a decent overall fur result in most cases you’re going to want a much more aesthetic means of controlling the look of the system.

Yeti provides this control via Grooms which is a set of controllable strands that can be shaped with the ability to store any number of custom attributes on each.

A graph can rely on any number of input grooms which may control the length, density, direction or other node parameters via the Attribute node.

Creating a Groom

A groom is generated via a groom node in Maya - to create the groom select a mesh and press the CRG ( Create Groom ) button in the Yeti shelf and a new empty node will be created.

Grooms consist of any number of strands, defaulting to none, and require the user to create an initial set of strands - to do this use the Add followed by the Fill tool to quickly create a strand at every vertex which is a good default starting point for most grooms.

Note

Although strands can be created at each vertex location this is not a requirement, Yeti does not rely on the vertex topology (nor the UV topology) so strands can live anywhere on the surface - creating initial strands at the vertex locations is convenient. The Add and Scatter tools will let you place strands anywhere on the surface.

_images/groom_01.png

The Yeti Groom node works within it’s own grooming context where you can use brushes to cut, comb and paint the Groom.

To enter the combing mode select the groom and in the attribute editor press any of the tools in the Tools palette - from this point on you can click and drag across the surface of the mesh to comb the strands in various modes.

As you groom the node maintains the length of the strand and tries to relax the segments to give a more fluid feel to the workflow.

Using Grooms

Once a groom has been created you’ll want to use the result in your graph.

The first step is to attach the groom to your Yeti node, to do this select the Yeti node and open up the Graph/Input Grooms palette and Add Grooms(s). This will bring up a selection window that lists all the possible grooms in the scene.

_images/groom_05.png

Select the desired groom and Select Groom(s) which will attach the Groom to your Yeti node and you should now see it in the list of Input Grooms.

The next step is to return to the graph editor ( selected the Yeti Node and press GE in the Yeti shelf or Open Graph Editor ). As with all data you will need to import the groom, use the Import node and in the attribute inspector set it too groom mode. In the name field specify all or some of the name of the groom ( you need to specify the groom shape node, in practice it’s safe to use myGroom* vs. having to explicitly set myGroomShape ).

_images/groom_06.png

It’s likely that the minimal use for the groom will be to adjust the fibers directions and to do this you will need to use the Comb node. Once created make sure the main fur flow ( output from Grow ) is connected to the first input of the Comb node, and connect the output from your groom Import node to the second input of the Comb node. When set as the root you should now see the fibers adhering to the groom you created.

_images/groom_07.png

If you adjusted the lengths of the strands in the groom node you can also connect the groom to the second input of the Grow node, this tell the grow node to use the length attribute of the strands as a multiplier. Lastly, if you painted a density attribute on the groom node you can also connect the groom to the Scatter node in a similar manner to control how the initial source points are generated.

_images/groom_08.png

Once the groom has been imported and used in the graph and changes to the groom will dynamically be updated in the graph and viewport. This is useful to see the final result of the graph though depending on the density and complexity of the graph it may slow down interactivity.

Tool Settings

When in the Groom context the Tool Settings window will present many of the tools you can use to comb, sculpt, trim and paint the strands as well as offering control over mirroring and update frequency.

_images/groom_tools.png

Brush Settings

_images/groom_tools_brush.png
Parameter Description
Strength Strength of the brush.
Radius Radius of the brush.
Softness How soft the brush is, this controls the falloff from the centre of the brush to the full radius.
Base/Tip Strength Control the brush strength along the length of the strands.
U/V Tangent Weight Used to control how the U and V tangents are mixed when using the Tangent brush.
Mirror Choose an axis to turn mirroring on.
Sculpt Mirror Style Use World to mirror the sculpt brush in world space, or Screen to do so in screen space.
Obey Surface Normal Used to determine if strands facing away from the stroke will be affected.

Grooming Tools

_images/groom_tools_grooming.png

Populating

When populating you are adding or removing strands from the groom, depending on parameters selected you may be arbitrarily adding points to the surface or the new surface points can be constrained to the vertex positions.

_images/pgYeti_add.png

Add - used to add strands to the groom, only a single strand will be created within the radius of the brush.

_images/pgYeti_delete.png

Delete - used to remove strands from the groom.

_images/pgYeti_scatter.png

Scatter - add strands by scattering them on the surface under the brush as if using a spray can.

Combing

Combing tools affect the strands based on their surface position with the effect generally based on their relationship to the underlying surface and surrounding strands.

_images/pgYeti_comb.png

Comb - is the most familiar mode where the stroke pulls the strands in the direction of the brush stroke.

_images/pgYeti_direction.png

Direction - similar to comb, this will change the orientation of the strand but not it’s shape.

_images/pgYeti_lift.png

Lift - is used to lift the strands off of the surface of the mesh.

_images/pgYeti_straighten.png

Straighten - is used to straighten out the strands.

_images/pgYeti_smooth.png

Smooth - can be used to smooth out the strands to create a more even groom.

_images/pgYeti_move.png

Move - used to move strand around the input surface

_images/pgYeti_scale.png

Scale - used to uniformly scale the strands, this differs from length as you’re not altering the strands shape.

_images/pgYeti_clumping.png

Clump - as the brush moves the strands are pulled towards the centre axis.

_images/pgYeti_twist.png

Twist - twists the strands around the center axis of the brush.

_images/pgYeti_tangent.png

Tangent - aligns the strands to the surface tangent.

Sculpting

Sculpting acts on the strands in world space. While sculpting the groom is less concerned about strand to strand relationship and focused on the over all shape/mass of the groom.

_images/pgYeti_sculpt.png

Sculpt - used to push/pull the strands as if you were sculpting them in a surface

_images/pgYeti_trim.png

Trim - trim away the ends of strands, as if you were using a plane/scissors to cut them

Workflow and Settings

The last few tools in the Tool palette are to help with Workflow as well as a general setting which controls how often graphs are evaluated when painting.

_images/groom_tools_workflowandsettings.png _images/pgYeti_fill.png

Flood Fill - flood fill using the currently selected tool

_images/pgYeti_deselect.png

De-Select - deselect strands previously selected with the ctrl-hot key

_images/pgYeti_convert.png

Invert Selection - invert the current selection

_images/pgYeti_mirror.png

Mirror Selection - mirror the current selection

_images/pgYeti_undo.png

Undo - undo the last action ( CTRL + Z )

_images/pgYeti_redo.png

Redo - redo the last action ( CTRL + SHIFT + Z )

Attribute Painting

Besides used to adjust the shape of strands Yeti Grooming allows any number of custom attributes to be painted.

Attribute Painting is used to control attributes that generally represent one value per strand where the interaction takes on a more painterly feel vs. adjusting the strands directly, this includes length ( which is always available ), density and width.

_images/groom_attributepaint.png

Except for Length any other attribute needs to be added before painting - using the four buttons at the bottom of the palette a user can Add, Duplicate, Rename and Remove attributes ( except Length ).

To start painting an attribute double-click on it’s name in the Attribute List, all the brush parameters will affect the attribute paint as expected.

Parameter Description
Display Turn attribute display on/off.
Display As Heat Map Will draw the displayed paint values as a heat map vs. a greyscale representation of the values.
Display Size Size of the attribute in the viewport.
Clipping Level An attribute is treated as an HDR value which means it’s possible to paint above 1.0 - by adjusting the clipping level you can change.
Randomize Seed The seed to use with the Random brush.

Add Layer Mask

When a groom is used as an input to a Deformation Layer a layer mask can be used to paint and isolate the effect of the groom like an alpha channel.

Tools

When in the groom context specific Attribute Paint tools can be used - the Attribute Paint Value is controlled via a monochromatic colour (only floating point attributes can be painted at this time).

_images/groom_tools_attributepaint.png

Paint - Paint the current value on the surface.

Increase - Increase the current attribute by the paint value.

Decrease - Decrease the current attribute by the paint value.

Smooth - smooth out the painted values modulated by the brush strength.

Random - randomize the painting effect.

Sample - used to sample the attribute value already painted.

Selection

While grooming it’s possible to select and de-select strands to limit the effect of the brush, to do this hold down the CTRL key and the first mouse button to select points and the CTRL key with the second mouse button to deselect points. You may find that while working on a groom you may want to only see strands you have selected, this is possible by toggling on the Isolate Selected attribute in the grooms Display palette.

Groom Node

Parameters

Global parameters are used to control the behavior of the Groom.

Parameter Description
Radius Of Influence By default a strand in a groom has the potential of affecting any fur element created in the graph, by adjust the radius of influence you can limit the radius at which the strands affect the data. It’s generally a good idea to use the Display Radius Of Influence display parameter to visualize this.
Parting Randomness Can be used to globally control how random the parting regions are.

Strands

General settings to control the strand topology.

Parameter Description
Initial Strand Length The default length for new strands, this can also be 0 to paint points vs strands.
Strand Segment Length Each strand is made up of a number of segments, each segment will be equal too or less than this specified value - depending on the Initial Strand Length parameter.
Resample Use the previous two parameters to reconstruct the selected/all of the strands within the Groom to match the new topology.
Conform New Strands When off new strands will use defaults set above, when on new strands will use interpolated values from the surrounding strands to conform itself to the neighbourhood.
Populate At Mesh Points When on new strands will be created on the vertices of the input object, when off you’re able to create new strands anywhere on the input object.
Minimum Strand Distance When adding or moving strands Yeti will ensure that this minimum distance is kept between strands within the Groom.

Deformation Layers

Introduced in Yeti 3.0, Deformation Layers provide a way of layering in additional Grooms and Guides on top of the current groom to mix, blend and deform the strands in a flexible way.

Note

Other than being created on the same mesh there are no additional requirements for the guide layers, they can vary in strand count, length, etc.

_images/groom_deformationlayers_01.png
Parameter Description
Do Layer Deformation Toggle layer deformation on/off.
Add Guise Set Layer(s) Add a guide set as a new deformation layer.
Add Groom Layer(s) Add a groom as a new deformation layer.

Once a layer has been added it’s weight can be controlled via the input or slider, or it can be re-ordered with in the stack.

Utilities

It is also possible to export the current attribute to a texture map ( using the current UV coordinates of the input mesh ) and import a texture to set the values of the current attribute.

Display Parameters

_images/groom_display.png
Parameter Description
Display Strands will turn off/on the display of the strands.
Display Strand Segments will draw the strand segments in the viewport.
Isolate Selected Strands will only draw the currently selected strands in the viewport.
Display Strand Length provides feedback on the length of each strand, which is drawn at the tip.
Color Color of the strands.

Parting

Many hair styles are defined by a part where hair is combed in opposite directions to define a distinctive shape to the groom - although it’s possible to groom strands in opposite directions; by default Yeti tries to interpolate between the strands leading a fanning effect which may not be the desired result.

To support grooms where true parting is needed part regions can be created using a part_ tag as a prefix to a new attribute ( eg. part_left, part_right ). These attributes are masks that define the area of influence for the region and strands fully contained in one region will not interpolate with those fully contained in a different region, if a strand is contained in two ( or more ) regions then the effect is weighted based on the value of the masks.

A special attribute called part_randomness can also be painting which modulates how random the parts appear which is helpful to avoid uniform looking results.

Please see yeti_partingExample.ma for a reference.