(Full breakdownand final result)
I made this eagle as a personal project to understand the Yeti feather system. In this article, I will explain how I arrived at this result, how the workflow was to texture the feathers, and how to group them in each zone of the body.
In any software, creating feathers is not an easy task since there are many variations of shapes and colors for each one of them. Moreover, the feathers are a groom within a groom, making it complex.
In this case, I selected the golden eagle. I found its plumage with abstract spots and its colors between brown, white, and golden tones attractive. So I looked for several references and began to see groups of feathers, such as the head, body, tail, legs, and wings.
The primary and secondary feathers are in the longest feathers, followed by the smaller covering feathers.
The 3D model, all geometry, for reference the length of the wing and tail feathers.
I created a groom to add attributes in the body, which is colovarBody to define where each feather would be, painting values from 0 to 10. For example, the head has values from 0 to 2, the back from 3 to 5, the chest from 6 to 7, and the legs from 8 to 10. These are values only for the body. To the wings, I assigned another groom with another attribute.
I made several grooms for each body section. I created different grooms to make it more organized, but you can also do it with a single groom.
And then, I created 2 or 3 feathers for each body part, using the default yeti tool to create the feathers in a total of 20 feathers with different shapes and variations.
To texture the feathers, I imported them into my YetiNode, created a convert node to convert it into fibers, then two attributes, CustomU and CustomV. This makes the feather have X and Y coordinates, and the texture is assigned as a plane. You have to do this with each feather.
I took a screenshot of each feather at 1K and painted it in Photoshop; this image is assigned to the texture in the shader.
Ex. Wings Feather secondaries viewport.
Ex. Wings Feather secondaries color.
To place the feathers on the head, I converted the groom into fibers so that each guide is a feather. The vital thing, in that case, is to bring the node with the attributes of the body. For example, here is the color of the body. In the head are the values from 0 to 2 so that only these feathers grow here. I copy this same structure for the other grooms.
It is essential that the instance is in Expression and places the name of our attribute and the deform so that the feathers follow the guides.
Generally, I use Arnold to render, so in the shader, I brought the two attributes of customU and customV using userDataFloat and assigned them to the U and V coordinates of the texture. Then, I created a switch to transfer the surface corresponding to each feather's values. The index must have another userDataFloat with the name of the attribute that has our scatter with the values from 0 to 10, in my case colorvarBody.
Then we need to add another switch. We need a userDataFloat in the index with the name feather_part. With this, we define the texture on the rachis and the barbs (rachis = 0, barb left=1, barb right = 2). This is explained by Yuriy Dulich in a youtube tutorial. And at the end, we assign the hair shader to control the diffuse and specular levels.
To make the simulation in yeti, activate it in the groom and give the values. You have to experiment a lot because only sometimes what is by default works well, and assign to the scene a Maya airField and add it to the groom to affect the yeti groom.