Introduction to Houdini Groom

Jesus FC
Lead Groom TD
Julian CG
Junior Groomer

Introduction

Hello, hello! Welcome to a new free tutorial! We'll go through the basics and some unique grooming techniques in Houdini!

Chapter 1- Basic Groom Setup

First things first, let’s open Houdini!

Once Houdini is open, let’s start with the basics, create a sphere. For that, we add a node called “sphere”.

Then, on the sphere node, we will change the primitive type to a polygon mesh.

Then we jump 1 level up.

And then rename the node to “GEO”. It’s very important always to use proper names.

If you see it at the top of the screen, go to the build window and the Hair Utils tab.

On the Hair Utils tab, we’ll select Add Fur, which creates all the basic networks for you to add the Houdini fur and Houdini setup.

Now the moment you click Add Fur, you can see a message to “Select a static geometry to add fur to.”, the static geo is the one that doesn’t move, in this case, our sphere.

We click the geo and hit enter!

This will create the following 3 nodes:

Now we have all the nodes ready, but we still need to make the connections between the nodes!

So, the first thing to do, it’s to go inside the GEO node, where we have our sphere, and we create a node called “Null”.

Extra information for those who are using Houdini for the first time!

To connect one node to another, just click on the white dot that it’s located on top or the bottom of the node.

Then just drag to another white dot.

Let's continue! Now we need to rename the Null node, and we will name it on caps “OUT_GEO”.

We use caps to name the null because you will see the cap word at the start if you go to the tree view.

And this will be our first setup. And now, we’ll start seeing the basics of the Guide Groom. 

First, select the Guide Groom.

On the top is the first area, named the import area.

This is just an import option for the areas where we want to spawn the fur on. We also have the VDB, this one is going to create a group of box cells that will be generated from the input skin. These boxcells are going to be used mostly for everything that has collision parameters inside of Houdini.

Then we also have the basic scatters, like how many guides we want to scatter, or the ways that we wish to, like one guide per point.

So it’s going to be on each point of the surface.

Then we have “Use External Geometry” if we want to use external geometry as the guide creation.

In this case, we’ll select “Scatter On Surface”.

With the Density parameter, you can control how many guides are scattered along the surface.

For example:

Density = 100:

Density = 1000:

We also have the override option. With this one, you can multiply these values by data, in this case, Skin Attribute (attributes that reside on the skin) and Texture(texture created on the software of your choice, like Substance or Mari).

Then we have the Scatter Seed, which changes the spawn of the guides, and finally, the Relax Iterations. The more iterations you have, the more of an even distribution you have, and the fewer iterations, you have a more uneven distribution.

A quick tip: If you go for a realistic groom, evenness is not the best way to go. But also non iterations will give you weird clumpy hairs. So a good level is when you don’t see a perfectly relaxed distribution.

Now let’s talk about the guide properties!

First, we have the Initial Direction Attribute.

This one will be the default “furdirection”. 

The second one will be the segments of the guides.

How many points will a guide have per guide?

The basic level to work with is 8.

And finally, we have the main length controller.

As the name says, it controls the length of the guides.

And finally, the last two options we will see in this chapter. For the first one, we have the display options.

This is to change the color of the guides on the preview. 

And the second one will be Draw Wide Curves. To activate this option, just hit the check box.

Now you’re going to see the width option. This allows you to control the width of the curves on the previews.

So now you can decide how you see your guides!

Chapter 2 - Curve Advect

At this stage, you should be able to do this basic setup with “Guide Groom”. Now let’s take a more detailed look into this node! 

Inside the guide groom node, there are three inputs and three outputs.

So, we have “GUIDES”, “SKIN” and “SKINVDB” inputs.

  • GUIDES: Contains all the guide information. 
  • SKIN: where the hair gets generated and has the attributes.
  • SKINVDB: mostly for collisions.

There are several ways to affect the guides! The first one is the “Guide Process” node.

All the nodes in there can be affected via the guide process node.

Now let’s talk about curve advect. This one is a different process from the guide groom.

*If you want more information about the curve advect, here is the link to the side fx official website: https://www.sidefx.com/docs/houdini/shelf/sop_groom_curveadvect.html

To add the curve advect, first, we go inside the guide groom node, then you click on curve advect.

It automatically creates a set of nodes for the guide advect already connected. Let’s go one by 1 to check what they do.

  1. And the last one, “volumevelocityfromcurves”, is basically for the VDB, so don’t worry much about it for now. https://www.sidefx.com/docs/houdini/nodes/sop/volumevelocityfromcurves.html

To select a node and make it visible, just click on the node and then click on the last little cube on the node:

It will turn blue, so that means that this node is displayed.

We just have to draw our curve, so click and drag on the geometry to create your curve.

If you pay attention, we can barely see the curve. But what if I just want to see the curve, not the geo?

On the top, there’s a little icon with a cylinder, sphere, and cone. This means that everything is visible. Let’s click on it.

You’ll have these three options:

  1. Show All objects: It shows everything.
  2. Ghost Other Objects: It will show the other objects on low opacity except for the one that you have selected.
  1. Hide Other Objects: It will only show the node selected.

So if you don’t see your curve, you can ghost or hide the other objects.

For example, if we click on hide other objects and select the mirror node:

You should see only the curve that we created and the mirror of the curve.

Let’s see now what happened to the advent curve node after we created this curve:

What happened is that the node creates guides following the guide that we created!

So, if we create more curves, the node will make the groom follow and interpolate properly. 

For example: Let’s create some random curves.

Now let’s go back to our guide advect node.

The flow of the guides changed to follow our guides. 

You can add a lift node:

You can also add a pair of CB to bend the guides upwards or downwards.

If you go out, deselect the guide groom, and select the hair gen node, you should see the hair following our guides:

With this method, you can have a nice groom very fast.

Chapter 3 - Types Of Deformation

Now that you know what the curve advect does, let’s eliminate that and allow us to begin from scratch!

If you paid attention to Chapter 2 when we saw the curve advect, there were more options on the guide process, so let’s take a look! If you hit tab with your cursor on the geometry section, this little menu will appear:

Now let’s search for “guide”, and you will see all the guide process options:

Those options are also on the top of the screen, on the window guide process, but it’s more efficient to search for the one you need on the geometry tab. 

Let’s check one by one to see what they do!

- Guide process: Bend

To create the guide process bend, hit the geometry section tab and search for it. When you select the guide process bend, it will create a little box on your cursor like this:

You can just drag in on top of the connection:

And it will automatically create the connection.

As always, we can edit the node on top of the geometry section.

Let’s take an in-depth look at all the options here:

  1. First, we have the general tab to change the group type (Primitives, points, or edges).

We have the groups, but now we don’t have any, so let’s leave it like that. And the last option is to visualize masks.

  1. Next to “Operation” we have “Masking”, but we’ll explain it further along the tutorial.
  1. On the “Operation” tab where we have all the operators of the node. The operations will set the number of operations that you’ll do for this node.

*It’s important to know that these will affect depending on the order of your operations, and some operations don’t have an attribute to override the blend. So if you have to blend it, it’s better to create more than one. If they are not going to share the same mask, it’s important to take that into account. 

For example, if the operators are not going to share the same going to, let’s say, one is on the foot and the other one is on the head, you don’t want to affect one with the other, it’s better to create a different guide process. But if they share the same area, for example, let’s say that you want the leg to bend and increase the length. Creating the same node and adding an operator inside it will be better.

So this is the basic setup for that. We have an active operator, in this case, is the basic blend.

The other operations are:

  • Set Direction (rotate curves towards a direction)
  • Set Lift (Lift curves off the skin or flatten curves against the skin)
  • Set Length (Lengthen or shorten curves)
  • Displace (Push curve points along the skin normal)
  • Wave (Displaces using a wave pattern)
  • Smooth (Average neighboring curves)
  • Frizz (Offset curve points using noise)
  • Bend (Bend curves)
  • Set Simulation Attributes(Sets attributes that are used by hair simulation)

*If you want more information about every one of these operations, you can check them out on the sidefx website: https://www.sidefx.com/docs/houdini/nodes/sop/guideprocess.html

Let’s check the parameters of the blend operation.

First, we have the blend slider.

The blend slider is a mask, so the main mask of the effect.

Then you have the mode, in this case, “Bend in Root Direction”.

With the Angle slider, that will read the matrix of the root and bends the guides on that angle.

Lets’s put it into practice:

Angle set to 0:

Angle set to 20:

You also have a Random Angle slider, which adds a random value to Angle.

Let´s take a look at this example, this is what happens when we put a random value of 10.

And finally, we have the Randomness Bias. This is how tight we want these random to happen.

We saw all the modifiers for the angle, but let´s see the different ways that you can bend your guides:

  • Bend In Root Direction: Bend in the direction the root points relative to the skin.
  • Direction Constant: Bend in one single direction.
  • Direction Curve Attribute: Use an attribute on each curve as its bend axis.
  • Direction Skin Attribute: Use a skin attribute as the bend axis.
  • Axis Constant: Increases the effect constantly per curve on the axis.
  • Axis Curve Attribute: A vector attribute on the curves to use as the bend axis.
  • Axis Skin Attribute: A vector attribute on the skin geometry to use as the bend axis.

- Guide process: Set Direction

We just saw the guide process of the bend, so now let’s look to set direction! 

To change the guide process, go to operation and change Bend for Set Direction.

Set Direction is quite a similar node to Bend, but slightly different. We have some values that are the same, for example, the blend slider:

We also have a Rotate with Skin Animation. This is in case we have a rest skin.

Then we have the Solo and Active options, so when you have more than one operator, you can have it Active o Inactive, and the Solo option is just to isolate it. 

Uniform Direction, this is going to drive the guides toward the direction (X, Y, Z) you set on.

 

Direction Amount is the amount to rotate towards a direction around the skin normal. This only changes direction in the skin plane without changing how far the curve lifts off the skin.

The lift Amount is quite an important one. It curves off the skin or flattens curves against the skin to match the given direction. This only rotates away from or towards the skin but doesn’t change the orientation around the skin normal.

And finally, we have the modes Rotate Rigidly Around Root and Set Each Segment.

  • Rigidly Rotate: Rotates the entire curve around its root.
  • Rotate Each Segment: Rotates each segment, allowing individual segments to rotate by different amounts when using a Curve Mask.

Guide process: Lift

Let’s see now what the guide process lift does.

This one is like the Set Direction. It’s a pretty simple operator.

We have three new options for this operator, the Randomize, the Lift, and Follow Skin Contour sliders.

First, we’re going to check the Lift slider. We have a value from 0 to 1, where 0 it’s going to attach the guides to the surface:

And with a value of 1, it’s going to have completely straight guides:

We also have the Follow Skin Contour.

This causes flattened curves to follow the skin's contour rather than just pointing straight toward the skin tangent. This produces a more natural effect but is a bit slower to compute.

Then we have the Randomize, which randomizes the effect per curve.

This also adds two more sliders, the Min Lift (the lowest lift value used) and Max Lift (the highest lift value used).

As mentioned before, you can have multiple operators, so let’s look at how to add and delete operators. 

To delete an operator, you just have to click on the little “x” under “Operations”.

And now, we have 0 operations.

Now to add an operator, we just have to click on the “+” symbol. 

When you create an operator, it’ll create by defaul. Thist direction, this is just because is the first one on the list.

 

Now that you know how to add and delete operators, let’s play with them and see what kind of result we can accomplish! 

First, we’re gonna set a clean and fancy direction for the guides.

And you should see something like this on your viewport:

Now, click on that “+” symbol to create another operator!

As you can see now we have 2 Set Direction operators, let’s change the second one for a Lift operator. We’re gonna turn on the Randomizer. You should have something like this:

But, maybe this is a little bit too strong, so let’s lower the value of the blend for the Lift to 0.5.

As you can see, this is a smoother result than the last one! 

We encourage you just to play with the values and the operators, and make a lot of mistakes! You’ll learn more from your mistakes!

- Guide process: Lenght

Now let’s take a look at one of the most basic but useful ones! Maybe not at a guide level, but afterward we will be able to use the same operator in a really nice way!

Here it is a really important thing to remember, in Houdini, the guides are curves, but the hairs are curves too! So we can actually do a lot of things, because the hair strands and guides are exactly the same thing, just with different positions and different connections between them.

So first, if you still have the operators, just delete one, and change the operator to “Set Length”.

Set Lenght has some different modes:

Let’s check them one by one:

  • Set: Set curve length to an absolute value.
  • Multiply: Scale curves by the specified amount.
  • Add: Lengthen curves by the specified amount.
  • Subtract: Shorten curves by the specified amount.
  • Set Maximum Length: Sets the maximum length value on the guide network.
  • Set Minimum length: Sets the minimum length value on the guide network.

We’re going to set the node to Set so we can check the other options in this operator.

First, we have the Method, Scale, and Cut or Extend. 

Scale, uniformly scales curves around the root point and Cut Or Extend, cuts or extend curves at the tip.

We also have a length slider.

As the name says, the Length slider changes the length of the guides. A quick note is that this doesn’t apply to Multiply mode. When we change the Mode to Multiply we no longer have this option, instead, we have a new slider called Scale Factor.

Scale Factor doesn’t just change the length, instead scales it as a whole from the root position. 

Then we have Randomize, which randomizes the operation’s effect. 

The Randomize will replace the Scale Factor for 2 sliders, Min Scale Factor and Max Scale Factor, where the Min Scale Factor is the smallest length to use when Randomize is enabled and the Max Scale Factor is the greatest length to use when Randomize is enabled.

And finally, we have the Cull Threshold.

What Cull Threshold does is that after changing the curve lengths, cull any curves that are shorter than this value.

- Guide process: Wave

Let’s continue our journey with the Guide Process! Before checking the Wave operator, we’re going to check very quickly the Displace operator.

As you can see, there’s only one slider or option to edit this operator, the Amount Slider.

You just have to put an attribute, it can be a Guide Attribute, Skin Attribute, or Texture attribute.

This will displace the information that we have put as any of the attributes. This is just a basic displacement.

Now let’s check the guide process “Wave”.

So this creates a wave that will be and behave as a constant value. This one has 4 options that we can manipulate:

  • Frequency X: The frequency of waves tangential to the skin. 
  • Amplitude X: The amplitude of waves tangential to the skin.
  • Frequency Y: The frequency of waves in the normal direction of the skin.
  • Amplitude Y: The amplitude of waves in the normal direction of the skin.

- Guide process: Straighten

The guide process Straighten is a really basic one. 

This is just going to straighten out any curve on the guides. 

We have 2 options to manipulate this operator, Tangent Straightness and Normal Straightness.

  • Tangent Straightness: Straightens curves in the skin plane.
  • Normal Straightness: Straightens curves in the skin’s normal direction.

- Guide process: Smooth

We have the guide process Smooth. Basically, this operator will smooth any other operator that we put in.

 

We have our blend slider, that blends the overall effect of the operation.

Also, we have 2 Smoothing Modes:

  • Object Space: Average the shape and orientation of neighboring curves.
  • Skin Space: Average the shape of neighboring curves while preserving their orientation relative to the underlying skin.

Then, the Search Radius searches for neighbors within this radius. The search is performed on curve roots, so this specifies the distance between roots.

And finally, we have the Num Neighbors, it’s the maximum number of neighbors to take into account. The actual number may be lower when fewer neighbors are found within the Search Radius.

- Guide process: Frizz

Finally, we have the operator Frizz.  

This one is similar to the wave, but the Frizz works on a vector 3D space global noise.

First, we have a Frequency slider, which is the frequency of the noise function, and a Random Frequency which adds a random value to the Frequency. The random value is generated between the negated and positive value of this parameter.

Then we have the Limit Frequency To Representable Values option, which clips the frequency to a range that can be represented using the number of points per unit length found on each curve. Without this, high values can result in random values instead of predictable noise.

And finally, we have the Amplitude and the Random Amplitude sliders:

  • Amplitude: The maximum distance to offset curve points.
  • Random Amplitude: Adds a random value to Amplitude. The random value is generated between the negated and positive value of this parameter.

Now we’ve finished with all the operators, remember, if you want more information about any of the operators we’ve just seen, go to the official Sidefx website: https://www.sidefx.com/docs/houdini/nodes/sop/guideprocess.html

Also to see more in-depth every operator and examples, you can check the video tutorials for Introduction To Houdini Groom! https://courses.creaturegarage.com/playlist/6JbEN9vLVK

Chapter 4 - Curves And Masks

Now that we have the basic setups for the guide process, it’s time to start understanding how masking works.

We have several types of masking, first, it’s the overrides that we’ll have Guide Attribute, Skin Attribute, and Texture.

Guides Attributes are the curve attributes or the per-point attributes we bring in. Skin is the geo attributes and texture attributes are the ones that we bring from different software (Mari, Substance, Photoshop, etc…)

But we also have masking.

Masking is an important feature because it has the main blend, and if you turn down the main blend, the effect gets completely removed.

So this is the main driver of the whole node, not just for the operator. Remember that you can have several operators in one node. And for this one, we also have an override.

Now let’s check the 2 types of masking:

  • Curve Mask: Controls the effect of operations along the length of each curve.
  • Noise Mask: When enabled masks the effect of any operation using a noise function.

First, let’s go ahead and activate the Curve Mask. 

As you can see now we have several options to edit this mask! Let’s go 1 by 1 so you can understand what every one of these options does. 

First, we have a check box for Range In Absolute Length, when this one is enabled, the range parameters below operate in world units.

We have the Range Min and the Range Max:

  • Range Min: The position along the curve where the effect of the ramp starts. Curve points before this position use the first value of the ramp.
  • Range Max: The position along the curve where the effect of the ramp ends. Curve points after this position use the last value of the ramp.

Also, we have an Effect Position. 

It sets the position where the curve is affected most. The root is at 0 and the tip at 1.

Then, we have the Falloff.

The high values result in a wide, bell-shaped ramp. Low values in a pointy shape.

Finally, we have the Influence Width.

It scales the falloff handles around the effect position for additional control. 

Now let us take a look at the Curve Mask Ramp.

Basically, it controls the curve mask directly.

Let’s continue with the other type of mask, the Noise Mask.

First things first, we have the amount as always. It blends the effect of the noise mask.

We also the noise frequency.

As the name says, it controls the frequency of the noise.

Then we have the Gain.

The high values result in more contrasted noise and fewer areas with medium values.

Finally, we have Bias, which biases the noise towards low or high values.

If you want to check more in-depth how the masks work, you can check the full course here! https://courses.creaturegarage.com/playlist/6JbEN9vLVK/file/04NyaQjgNa

Chapter 5 - Guide Groom

Now that we know how the guide process works, we will jump into the guide groom node!

To create a guide groom node, first, we will delete the guide process node and add the guide groom to the shelf.

And we put the node on the skin connection, and Houdini makes the connections automatically. 

For this tutorial,we’re going to work with the “guidegroom”, so just click on the top of the options of the node and change “guidegroom::2.0” to “guidegroom”.

It should look like this:

The first option we will see is the “Recache Strokes”.

This one is used to load new information. 

Also, try not to use a guide process node on top of the guide goom node.

- Guide groom: Plant Guides

First, we will see the essential tool of the guide groom, “Plant Guides”.

To change the tool, just click on the box next to “Tool”.

A quick tip: if you don’t see the cursory change to plant guides on the viewport, click on the symbol down below, and your cursor should change like the one below.

Now let’s try to add some guides:

Just click where you want your new guides:

One important option on the plant guides brush, is he interpolate neighbors.

Let me explain this one with an example:

If you create a guide longer than the other one, like this:

And you add a new guide:

It will interpolate the length of this guide.

And the last important option of this brush is the mirror:

If you click on the check box for Mirrorring, it will mirror every new guide that you create:

- Guide groom: Surface Brush and Screen Brush

Let’s take a look at what the Scrrn Brush does. To select the Screen Brush go to the same little box next to the tool, and select Screen Brush.

This brush will be your best friend. It’s the brush that let us comp the active areas of the hair.

This is a basic grooming tool. you can also change the radius of the tool to affect more or less guides.

You can also change the strength of the tool, to control how much you affect the guides.

Also, we have a Randomize.

 

And the last important one, is Constrain Length, if it is with a check, it will preserve the length of the guides, if don’t this will happen: 

The difference between the surface brush and the screen brush is that the surface brush will only work if the cursor travels on a surface (geometry).

And the screen will work anywhere on the screen.

- Guide groom: Cut

We have the tool Cut.

This is a very simple one. We have first the same option as the previous tools, the radius. What this does, it’s going to cut the guides by the rim of the curve of the tool. 

Finally, we have the Ray Bias, also in the Screen and Surface Brush.

 

The Ray Bias controls the thickness of the collision layer around the character’s skin. The Guide Groom SOP prevents curves from passing through this outer layer while you edit them. The ideal value would be something like 1/10th or 1/100th of the shortest segment length in a groom. Making it much larger would keep curve points far from the skin. Making it too small would make it easier for curves to end up inside the skin.

To see more in-depth this tool more, check the video tutorial here: https://courses.creaturegarage.com/playlist/6JbEN9vLVK/file/g92QZ346Dp

- Guide groom: Extend

Now we’re going to check the Extend tool.

Technically the Extend is the opposite of what cut does, but it has a drawing mode which is the really nice thing about it. 

 

This is a straightforward tool, but if you want a more in-depth look, you check the video tutorial here: https://courses.creaturegarage.com/playlist/6JbEN9vLVK/file/l7qLKRLlN9

- Guide groom: Lift

Another simple brush is the Lift.

This one will lift the guides, but it will lift based on the amount that you put on the lift option.

- Guide groom: Clump

We also have the clump brush.

This one is not very used because we usually work the clump on a hair level, not on the guides. But if you want to use it, it will create a clump with the guides within the brush's radius.

- Guide groom: Part

Finally, we have the Part brush. 

This brush will move the guides outside the radius of the brush.

These last two brushes are rarely used, but now you know what they’ll do if you want to use them!

Remember, if you want to see a more in-depth look at the brushes or any option we saw in this playbook, check the video tutorials here: https://courses.creaturegarage.com/playlist/6JbEN9vLVK 

So thank you for reaching the end! 

See you on the next one!

We recommend checking out some of these tutorials:

  • Houdini for Groomers.

https://creaturegarage.com/playbooks/houdini-for-groomers

  • Introduction to Xgen.

https://creaturegarage.com/playbooks/introduction-to-xgen

//Section Share-on 2