H19.5: Feathers Procedural Tool for UE5
Feather Groom Guides Procedural Tool for Unreal Engine
The purpose of this procedural feather tool is to create dynamic feather curves as groom guides for Unreal Engine Groom system. The demo video below shows how to control each feather's shape (Curve, Density, Width, Length, Tip size, Root size), numbers of feathers, randomize the feathers (Scale size, Rotation, Shapes, Normal) and the areas of the feathers.
As you can see the image on the right. Fused to the rachis are a series of branches, or barbs; the barbs themselves are also branched and form the barbules. These barbules have minute hooks called barbicels for cross-attachment. And these tiny little cross-attachment create the main shaft. But it's so small that you cannot even see so I simplify the small barbules and replace it with grooms in Unreal Engine.
In order to create curves as groom guides for a feather, the first challenge is to create a rachis and the barbs on the rachis. Also remain the flexibilities to assign different look to each of the feather.
How to place each feather and have procedural control is the next challenge. In Houdini 19.5, there is a very powerful node solve the problem for us, "copyToPoints".
We use "copyToPoints" as the key node to inherit the attributes and random values and then assign them to the ideal place. So in this method, there's a hierarchy to create each feather. Feathers, Feather(Rachis) and the unit, Barb.
Here's the diagram:
Feather's Shape:
CopyToPoints is just a node that help you to replicate things you want. In order to create a feather look, I use attribute wrangle to create curves. For using these custom parameters to control the length and postionos of barbs, we are able to give a overall look of the feather and also add some random values to the feather shape.
Feathers' Normals, Positions and Rotations:
The second copyToPoints determine where are these feathers should be place at. In this step, we have to define the "Normal", the "Rotation" and the "Size". I added a multiply script to give more random control of the size. Also defined Normal for each point.
Same as the Feather Shape method, I use an attribute wrangle to add random vector to each feather's normal, add random float value to each feather's size scale, and finally add quaternion value to control the rotation of the feather.
Different Group of Feathers
In this case, chicken have noticeable difference of feathers according to the area of the anatomy. On wikipedia, we can see all the feather names from different parts.
Therefore, it's easier to pack all the nodes and make a digital asset. So, for different parts we can give different parameters according to the needs.
But there are too various bird anatomies, it's hard to define feather groups and numbers. So, at this point, it's mostly depended on artist's work.
In this case, I created 8 different feather groups as you can see the image below.
Note: I use Non-Commercial Edition License in Houdini. This license does not support exporting alembic, FBX, and etc. So, this document only shows the workflow of creating guide curves in Houdini. There is no further information such as add colors or export guides as grooms or import groom into Unreal Engine. Though you're welcome to email me with any questions regarding to this topic.
Special thanks to Jimmy Chao for the VEX guides.
Last Update: November 9, 2022
Software: Houdini 19.5
OS: Windows 10
Specs: RTX 3080, AMD 3900x, 64GB RAM
Reference:
Wiki Chicken Anatomy - https://en.wikipedia.org/wiki/List_of_poultry_feathers
Wiki Feather - https://en.wikipedia.org/wiki/Feather