top of page
tutCover_02.jpg

INTRODUCTION

Working on vanilla Houdini feathers, I built this HDA to add more realism, especially in close-ups. Assigning a different shader to the barbules, which are physically different (more fluffy and thin) from the barbs and shaft (more rigid), gives your feather groom better realism.

 

I paid great attention to poly count to avoid having something realistic but unusable in production. For this reason, I added a camera culling option (barbules are created only inside the camera field of view) and a general culling that lets you work with only a fraction of the barbules.

For this reason, it is crucial that you create a camera, name it cam1, and play with its distance from the feathers.

 

To follow the tutorial better, you can hit the above download button to get the HDA and the sample scene I prepared.

Please remember that the tools I create are tailored to my needs. It's more like a training center where I can develop what I have in mind, learn by doing, and share the knowledge with the community.

 

In this case, it's even more interesting since I developed this hda, strictly working for over a month with chatGPT as I usually do with coding guys in production. I will discuss this very interesting experiment at the end of the tutorial.

 

Let's start.​​​​​​

index

INDEX

To quickly move through the tutorial, you can click the following topics:​

installation

INSTALLATION

Unzip the file you downloaded and put the HDA dir content (rocketbarbules.1.0.hdalc) in your otls dir located in:
 

C:\...\Documents\houdini20.0\otls

If you need to reload the icon, load the ICON dir content (rocket.svg) within the Asset > Edit Asset Properties menu:

assets.jpg

​As you can see, the icon is embedded. If not, load it here:

icon.jpg

I developped this hda using a Indie version of Houdini, so it works only with this kind of license.

network

INPUTS AND OUTPUTS

First thing first, let's see how to connect the Rocket Barbule and which are its outputs:​

network.jpg

SECTION 1 

Regular feather creation using the vanilla template and some modifiers.​

SECTION 2 

Rocket Barbule node

connections.jpg

INPUT

Simply comnnect the output of the last node of your feather creation.

OUTPUTS

All geo
Barbules, barbs, and shaft in uncondensed mode. This is the heaviest output in terms of poly count.

All geo packed
It is the same as the previous output but in packed mode (1 single primitive).

Barbules only

Only the barbules geo. It can be useful to evaluate better their settings.

Shaft and barbs packed

Everything but the barbs packed as single primitive

SECTION 3

Shading

Starting from the first input (All geo), you can isolate the feather's parts using a blast node and apply different shaders.

For more tips about shading techniques, go to the UV section.

settings

FEATHERS

Before going into the nitty gritty, let's look at feathers' parts quickly. This is just a quick look since there is massive documentation on Houdini's help and all over the web:

FeatherParts.jpg

Image from SideFX online help

Even if it may seem that barbules are a minor part,​​​​​​ they are the key element for the color, the beauty and the recognizability of the feather:

barbsCloseup.jpg

ROCKET BARBULE

Add the rocket barbule node at the bottom of your grooming network, not in the template, to grow barbules on your feathers. The reason is that feathers can not be condensed again once you add this node.

Let's dive into the tool:

rocketClosed.jpg

IMPORTANT NOTE

Barbules significantly increase your poly count. For this reason, Rocket Barbules has many options to avoid this, and their creation happens only inside the camera's field of view.

 

Please read carefully what follows.

SECTION 1 - Vanilla feathers toggle

Use this toggle to switch from your regular groom to barbule creation. This is the first option I added to keep the poly count under control and make it easy to work with.

I suggest you frame your groom, and after checking this option, start the barbule creation.

SECTION 2 - Culling percentage

This is the second option to keep the poly count under control. I suggest keeping this value at 0.9 or even more until you start getting what you are looking for. 

SECTION 3 - Barbules settings

 

​Here is where you can shape your barbules. I tried to set reasonable ranges, but please feel free to use over or under-range values depending on your scene.

barbulesSettings.jpg

SECTION A - Length
 

This section controls the length of the barbules. When setting their length, keep in mind that most of the time barbules overlap as you can see in this image:

barbulesCloseup.jpg

click image to enlarge

Barbule Length Ramp - Single feather
 

You can use this ramp to control the length of the barbules from the bottom to the tip of the feather. This can be useful if you want to have barbules only on the bottom part, which is where they are more noticeable:

length_ramp.jpg

click image to enlarge

Barbule Length Ramp - Grooming

In this case, the ramp controls the length in the left-right direction. In this way you can for example concentrate the max number of barbules in the center of the frame:

rampGroom.gif

SECTION B - Length Variation
 

Use this slider to add variation in length:

lengthVariation.gif

SECTION C - Resolution
 

This value is very important for noise, but, as you can imagine, it adds more points to your geo. So, keep it as low as you can get what is expected.

Also, remember that sometimes, low-resolution gives different but not worse results:

resolution.gif

SECTION D - Max Left and Right Density
 

With these sliders, you can decrease the left and right density to get some nice variation:

maxDensity.gif

Remeber that left and right are referred to the barb side:

maxRightDensity.gif

SECTION E - Left and Right Density
 

Here, you can decide the barbules' density, which makes what you see a flat surface. So, to have a realistic effectkeep it high and use the culling tools to avoid working with too many primitives.

In this case, the left and right are referred to the shaft side:

leftRightDensity.gif

click image to enlarge

SECTION F - Width
 

Here, you can model your barbules. I added a ramp so you can taper their shape. Remember, also, for hair, never leave the thin value to 0. No width does not exist in the real world.

barbulesWidth.gif

In this case left and right is referred to the barb side:

barbulesWidth.jpg

SECTION G - Angle and Angle Variation

Barbules have different angles, and variation is the key to realism. In this section, you have two sliders to accomplish this:

angle.gif
angleVariation_02.gif

SECTION H - Noise

This setting is strictly related to the barbules resolution (section C):

noiseValue.gif
noiseRes.gif

You can also change frequency to get even more variation:

noiseFreq.gif

SECTION 4 - Barbs and Shaft settings

 

In this section, you can modify Left and Right barbs (A) and shaft (B) using ramps to shape them:

barbsWidth.gif

SECTION 5 - Camera Culling
 

Before going any further, please remember to rename cam1, the camera you will use to create barbules.

 

Barbules means adding a lot of new geos and increasing the poly count. For this reason, I restricted their generation to the camera field of view, and I added a Distance Threshold slider to drive the creation referring to the distance from the camera:

cameraCulling.jpg

click image to enlarge

cullingFront.gif
cullingSide.gif

Once you are happy with your barbules settings, unlocking the camera padlock you can see the whole grooming and keep tweaking the settings without creating extra geo:

padlock.gif
noExtraGeo.jpg
shading

SHADING WITH ARNOLD

Rocket Barbules has a procedure to transfer barbs' UV to the whole mass of barbules, allowing you to apply textures in bottom-tip and left-to-right (for each side) directions.

To do this, there are two attributes you have to pick in a User Data RGB node inside an Arnold Material Builder. These attributes are:

horizontal_uv
vertical_uv

uvAttr.gif
uvDetail.gif

You can also connect them to the input of a mask (a ramp for example) in a Layer Shader:

layerShader.gif

For those unfamiliar with using attributes in shading, the User Data RGB node allows you to access attributes you created in your network. Simply write the attribute in the text field and connect one of its outputs:

userData.jpg

click image to enlarge

chatGPT

INTERACTION WITH ChatGPT

The best way to achieve what you have in mind is to have a coding guy who creates the tools you need. In production, this is normal, but when you work alone on your projects, this magic stops.


Until AI came in.

Rocket Barbules is my first attempt to work with this new entity as if I were working remotely with a human.​​ I spent almost one month interacting with ChatGPT, and I must say it was an incredible experience. While deep neck in the development, I mostly forgot I was chatting with a bot since his answers and behavior were similar to human ones. On my side, I treated it as if it were human, greeting it every time we started working and advising it if I could not go back for a while. It was just a test, a kind of HAL experience. Fortunately, it never said I'm afraid I can't do that :)

Anyway, I will not discuss this topic in too many words since there are many articles and thoughts on it.  AI is here, and I don't think it is a temporary gimmick. Fighting against it is a nonsense. The best way is to use it for our needs, getting the best we can from it. Jobs and many other things will change or disappear, but this is not a reason to hate it. ​​

blackColumn.gif
bottom of page