Houdini 20.5 Feathers

Feather UVs and textures

On this page

A birds feather colors are also characteristic for the species: colorful parrots, camouflaged birds of prey, brilliant hummingbirds and eye-catching peacocks. Colors make the bird and that’s why you need to texture your feathers. There are several methods that let you create UVs.

Feather Template from Shape

When you're drawing a feather, you need a Feather Template from Shape SOP to convert the curves into an object. You will also see that the node creates UVs to the feather. This UV set comes from the node’s Add Barb UV Attributes option and its main purpose is to have initial UVs. If you don’t need UVs at that point of the design process, it’s save to turn off this option. There are more sophisticated methods to add UVs, esp. when you create a feather atlas.

Add Barb UV Attributes creates three attributes: uv, uv_barbl and uv_barbr. The first attribute determines the global UV space. The other two attributes add UVs to the barb segments. When you uncondense the feather, you’ll lose uv_barbl and uv_barbr, because this process turns the virtual barbs into real curves and all values are transferred to a common uv point attribute.

UV projection

The following approach is a convenient way to apply texture coordinates to your feathers: you take the UVs from a grid and project them onto the feathers. We recommend making this workflow your default method for adding UVs. Here’s the complete network for the UV projection method.

Networks

In this example, you will keep the networks for feather and UV projection separated: the feather atlas is located inside a Geometry OBJ on the obj level. The atlas is terminated with a Null SOP, named FEATHERGEO. For the UVs you will create another network.

  1. Go to the scene’s obj level and turn off the existing Geometry OBJ’s blue Display/Render flag. The feathers are no longer visible in the viewport.

  2. Add a new Geometry OBJ for the UV network. Double-click the node to dive inside.

  3. Add an Object Merge SOP.

  4. Go to the Object 1 parameter and click the Open floating operator chooser. On the new floating panel, navigate to FEATHERGEO. Choose the node and press Accept.

The feathers will now appear inside your new container.

Grid UVs

A Grid SOP will serve as a template for the feather’s UVs and also textures.

Note

Background image and grid match, so you can also connect the image as a texture to your hair or fur shader in Solaris/Karma.

  1. If your background reference image isn’t visible, hover the mouse cursor over the viewport and press D to show the Display Options.

  2. On the Background tab, turn on Display Background Image/Video and close the window.

  3. Add a Grid SOP and use the ladder to adjust the grid’s Size and Center values to the background image’s borders.

    The grid’s size and position aren’t deciding, but its aspect ratio must match the image’s ratio as good as possible to avoid distortions.

  4. Lay down an UV Project SOP and connects its input with the output of the grid.

  5. Open the Initialize tab. It’s not absolutely necessary, but you can set Method to To ZX Plane to be sure that you get correct UVs.

  6. Click Initialize to auto-apply correct transformations to the UVs. Open the Transformation tab to see the values.

Projection

The last step transfers the UVs from the grid to the feathers in the Object Merge SOP.

  1. Add a Feather Ray SOP.

  2. Connect its first input with the output of the Object Merge SOP. Connect the fourth input with the output of the UV Project SOP.

  3. On the Attributes section, go to Vertex Attributes and enter uv.

  4. Create a Null SOP and rename it to FEATHERGEO_UV. Then connect its input with the first output of the Feather Ray SOP.

  5. To finally see the UVs, turn on the feather ray’s blue Display/Render flag.

Here’s the result for the template from the Feather atlas page.

UV Project SOP

Instead of the grid projection method, described above, you can still use individual UV Project SOPs for your feathers.

Generally, the UV Project SOP should be located at the end of the feather network, e.g. before Null SOP that terminates the network. However, with uncondensed feathers, split into barbs and shaft, you also have the possibility to apply different UVs to each element. This can be interesting for close-ups, where shafts and barbs require different materials.

Applying materials

Houdini’s feather system is optimized for rendering in Karma and blends seamlessly into Solaris. A Houdini Procedural: Feather LOP generates the feathers from your template and adds them to Solaris, where you can render them. The procedural supports both Karma GPU and XPU, but also any other Hydra render delegate.

For a complete workflow description on how to apply a material for Karma, read the Feather rendering guide.

Feathers

Basic setup

Drawing and shaping

Brushing and grooming

APEX Add Groom

Simulation

Textures and rendering

Tools

Videos