Houdini 20.0 Feathers

Guide processing and noise

On this page

Experienced groom artist will certainly already know the versatile Guide Process SOP. In general, it’s possible to apply any of the node’s operations to feathers. However, some tools make more sense in conjunction with hair and fur. There are also two tools (listed below) that are particularly suited for feathers and provide a specific Feather Barbs mode. These tools let you differentiate between the feather’s left and right vanes.

To restrict the effect of an operator to a certain area, you can apply a mask.

Another advantage of the Guide Process SOP is that it lets you “stack” several operations. You can, for example, adjust frizz and barb lengths through one node. A Solo checkbox helps you to analyze the result of a particular operator by temporarily turning off the other operator(s). You can also chain several nodes, e.g. if you want to apply different masks to different operations.

In the tab menu you can find several preconfigured tools. On the Network Editor, press ⇥ Tab to open the menu. Then enter guide process in the search field to see all available tools.

Note

The following guide is based on the setups from the Drawing feathers and Clumping pages. Below is the network that’s used to draw the feather and adding clumps.

Click the image to zoom.

Set Length

When you take a closer look reference image, you’ll see that the barbs of the right vane have the same length and create a hard edge. On the left vane, however, you can identify small differences in the barbs' lengths.

  1. Add a Guide Process: Set Length tool from the tab menu. Connect the guide node’s first input with the first output of the upstream Feather Clump SOP.

  2. On the Operation tab, go to the second dropdown menu and choose Feather Barbs.

  3. There are now Left and Right buttons. In this example, only the Left barbs should be changed.

  4. When you turn on Randomize, you have access to the Min Length and Max Length parameters. Use the sliders to adjust the values interactively in the viewport.

On the right image you can see a possible result with Min Length set to 0.045 and Max Length set to 0.057. On the left, you can also see that the barbs at the feather’s tip are strongly curved and too long. One method to achieve a less exaggerated result is to decrease Operations ▸ Blend. With 0.7 the barbs' curvature is better, but still not as in the reference. To fix this, add a mask around the tip.

Masking

Note

This chapter can be seen as a blueprint for all masking work on the Guide Process SOP.

A mask protects certain areas of an object from becoming modified. The Guide Process SOP provides several methods and you can find them on the node’s Masking tab. You don’t have to choose one method, but you can also combine the different options.

Geometry masking

If you've read the Clumping chapter, you’ll already know how to create a geometry mask. You can even reuse an already existing mask, but in this case, a new object will be added around the tip.

  1. Add a geometry, for example a Sphere SOP or a Box SOP, and rename the node to setlengthmask_geo.

  2. Use Center to shift the object to the area you want to mask.

  3. Depending on the type of object, you can use Radius, Size or Uniform Scale parameters to define the size of the mask.

  4. Lay down a Guide Mask SOP and rename it to setlengthmask_guide.

  5. Place the new node between the Feather Template from Shape and Guide Process SOPs to connect its first input. The fourth input is linked to the mask geometry’s output.

    If you've already have a Feather Clump SOP in your network, place the Guide Mask SOP between the clump and the guide nodes.

  6. On the Guide Mask node’s General tab, go to the Output section. From the Output Type dropdown, choose Point.

  7. Change Output Attribute to setlengthmask.

  8. Open the Additional Masks tab and turn on Use Geometry Mask to connect the mask object object.

There are also some useful settings to improve and customize the mask.

  • If the result doesn’t meet your expectations, try to decrease Voxel Size to add more resolution to the mask.

  • To invert the mask, go to the Presets menu and choose Outside.

  • The Depth Ramp controls the mask’s softness or falloff.

Activating the geometry mask

You must activate the mask on the Guide Process SOP to make it work.

  1. Connect the output of the setlengthmask_guide node with the first input of the Guide Process SOP.

  2. On the process node’s Masking section, set the Blend parameter’s dropdown from No Override to Guide Attribute.

  3. Change the default entry on Blend Attrib to setlengthmask.

Here’s a possible result with a spherical mask. The mask’s center is around the feather’s tip. On the left side you can see that the barbs near the tip look realistic again.

Curve Mask

You can also use a Curve Mask to fix the long barbs at the feather’s tip.

  1. Select the Guide Process SOP and open the Masking tab.

  2. Turn on Use Curve Mask to unlock a couple of parameters. The most striking element is the Curve Mask Ramp.

    This curve is basically a gradient. When you take a look at the barbs, you will see that the barbs near the shaft’s bottom are no longer affected by Set Length.

  3. Click the Reverse Domain button to invert the ramp. Now the barbs around the tip have their original length again.

  4. Use the ramp’s sliders to adjust the mask to your needs. Or click the Presets button to choose a curve like Hill like in this example

The image below shows the result of the curve mask and on top you can see the used ramp.

Noise Mask

Noise is the Guide Process SOP’s last masking option. For the Set Length operation, a noise mask might not be the right choice, but you can experiment with different settings. If you want to create the noise through a different node, e.g. an Attribute Noise SOP, you can also create an attribute like noisemask.

  1. To use the attribute, select the Guide Process SOP and go to Masking ▸ Noise Mask ▸ Amount. Change the parameter’s dropdown from No Override to Guide Attribute

  2. Change Amount Attrib to noisemask.

Bend

The Bend operation is the other tool that’s available for left and right barbs. This mode pushes the barbs into a given Direction, e.g. towards the feather’s tip or bottom, or to bend the barbs to create a U-shaped feather profile. In this example, the barbs direction is only changed around the feather’s bottom. The reference image also shows that the barbs are differently shaped on the left and the right vane.

  1. Add a Process Guide (Bend) tool from tab menu and connect the node’s first input with the first output of the previous upstream node. If you have followed the workflow guides up to here, the last node is also a Process Guide SOP.

  2. On the Operations tab, and change Curves to Feather Barbs.

  3. Click the Right button to turn it off.

  4. From the Mode dropdown, choose Direction Constant.

    The Direction parameters let you define an axis and the default vector 0,0,-1 will push the barbs towards the tip. Right now, all feathers from the left vane are affected, so you need another mask. The process of adding a mask is the same as described in the Masking chapter above. Here you will most probably use a geometry mask. The mask’s Output Attribute is bendmaskleft, but feel free to use any other name.

    You might also end up with a very small object. In that case you have to decrease Additional Masks ▸ Geometry Mask ▸ Voxel Size on the Guide Mask SOP. Only then you will have a resolution that’s fine enough to restrict the mask to the desired area. Values between 0.005 and 0.01 should work.

  5. Once you've created the new mask, you can start to adjust Angle and Random Angle to move the barbs.

  6. Change the mask object’s position and scale if necessary.

For the right barbs near the bottom you need one more Guide Mask SOP with a mask object. The process of shaping the barbs is the same as described in this chapter. You can copy the nodes for the left barbs and use them as a starting point. Don’t forget to set the Output Attribute to bendmaskright. The final result could look as shown here.

Frizz

The Frizz operation (and also the process node’s remaining modes) only works on curves, not on barbs. This means that the operator modifies the shaft’s points to displace the barbs.

Note

If you want to add frizz to the barbs, you have to convert the entire feather into real geometry with curve points. This conversion process is called uncondensing and opens various possibilities like splitting a feather into shaft, left and right barbs, or manipulating the barbs' curves through appropriate SOP nodes.

For this feather, Frizz isn’t necessary, but you can test out the operation to see its effect.

  1. Add a Guide Process (Frizz) tool from the tab menu and connect its first input with the first output of the last upstream node.

  2. Increase Frequency and decrease Amplitude. You can see more clumps and stray barbs between the clumps. The barbs' midpoints are also displaced, because the shaft’s points are no longer aligned along the original curve.

  3. If you want to avoid a uniform look, change Random Frequency and Random Amplitude.

Of course, you can again apply masks to the node.

Noise

Noise is a very effective method to randomize feathers. The Feather Noise SOP uses a 3-dimensional noise function to create a more organic look. The noise is applied along the feather’s tangent, bitangent and normal vectors (TBN matrix). It can be confusing that the node doesn’t use the common XYZ notation. The reason for using a TBN matrix is that the noise-based transformation has to be independent from the feather’s global orientation. However, TBN vectors have directions and introduce a local XYZ system for each shaft point, but this system doesn’t necessarily correspond with the global XYZ direction.

  • If you consider the feather a plane, normal is the normal of this plane. Since feathers must be drawn in Houdini’s XZ space, normal corresponds with the Y axis.

  • tangent defines the transformation along the shaft.

  • bitangent defines the transformation along the barbs.

  • The node’s three Amplitude parameters let you control the strength of the noise/displacement along each vector.

The following image illustrates this concept.

The Feather Noise SOP only works in conjunction with condensed feathers. You can’t differentiate between left and right barbs, but you're able to control noise frequency on barbs and shaft independently. The image below uses the following values.

  1. Set Amplitude to 0.001. This is a global multiplier for the vector amplitudes.

  2. Amplitude Normal and Amplitude Tangent are not required and set to 0.

  3. To create small ripples in the lower half of the right vane, increase Shaft Frequency of 150.

Click the image to zoom.

Feather atlas

The Guide Process SOP does not only work in conjunction with a single feather, but you can also merge several feathers and apply the node to the entire group. This is a fast and convenient way to randomize large feather sets through a single node.

Feathers

Basic setup

Drawing and shaping

Brushing and grooming

Simulation

Textures and rendering

Tools

Videos