Houdini 20.0 Feathers

Feather blending

On this page

Blending is a convenient way to shape and modify condensed feathers with the help of a target object. This way it’s possible to create deformations that are normally difficult to achieve or require uncondensed feather, where you can work on curves. However, When you uncondense a deformed feather, all transformations will be kept, of course. Blending works with both static and animated target objects. Here’s what you're going to create.

The following example explains how to match a feather’s shape with an underlying wave-like surface. This guide starts with a fresh feather object and you don’t need any prerequisites. The final network looks as shown in this image.

Click the image to zoom.
  1. On the obj level, press ⇥ Tab to open the tab menu. From the menu, add a Geometry OBJ. Double-click the node to dive inside.

  2. Open the tab menu again and choose the Feather Template entry. This tool creates a network with three nodes to describe a complete feather.

    The basic shape you get from the tool is good enough to illustrate the blending process, but a few parameter adjustments are necessary.

  3. Select the Feather Template from Shape SOP and increase Barb Density to 150. Normally, you need much higher barb counts, but here you’ll be using fewer and thinner barbs to get a better idea of the deformation.

  4. Set Width Root and Width Tip to 0.003 each.

Wave grid

The wave grid is the target object and the feather should follow its surface structure.

  1. Add a Grid SOP.

  2. Change the Size parameters to 1, 1.5.

  3. For Center.Z, enter -0.5 to shift the grid along the negative Z axis. It’s important that the grid covers the entire feather to avoid unwanted distortions.

  4. Set Rows to 150 and Columns to 100 to get enough resolution.

  5. Put down an Attribute Wrangle SOP and connect its input with the output of the Grid SOP.

  6. Copy ⌃ Ctrl + C and paste ⌃ Ctrl + V the following line of code to the VEXpression field.

    • @P.y = sin(@P.z * chf("frequency")) / 25;

    • The expression uses a sine function and the grid point’s Z values to displace the Y positions. A custom frequency parameter lets you control the number of waves. To create the custom parameter, click the Create sparse parameter from… button. Enter a value of 20.

    • The divisor of 25 limits the height of the waves.

Surface blending

The Feather Surface Blending SOP is the node you’ll be using to perform the surface match.

  1. Add the Feather Surface Blending SOP and connect its first input with the output of the Feather Template from Shape node. The fourth input is connected to the output of the Attribute Wrangle.

    When you turn on the surface blend node’s blue Display/Color flag, you can see a slightly stretched feather with flat waves.

  2. Go to Ramp and click the Presets button. From the menu, choose Flat. The feather looks much better, but the waves are still not high enough.

  3. In this example we want a perfect match. Go to the Resolution section and turn off Resample Shaft. The barbs now follow the waves, but there’s still room for some improvements.

  4. Increase Iterations with the slider to monitor the changes in the viewport. Try a value around 5. This parameter defines the accuracy of the blending process.

  5. You might observe that the distance between the barbs isn’t constant. To harmonize the barbs, use Relaxation ▸ Relax Iterations and start with a value of 30.

Here you can see the feather with Relax Shape turned off and on.

What you have now is a feather that perfectly follows the grid’s hills and valleys. The degree of deformation and distortion strongly depends on the target object, the feather’s base shape and the used Ramp.

Feathers

Basic setup

Drawing and shaping

Brushing and grooming

Simulation

Textures and rendering

Tools

Videos