Proced_title.jpg

INTRODUCTION

After my collaboration with Illusorium Studios during which I dug deep into Maya tube grooming, I took some time to make some research and try to replicate the same technique in Houdini. Not an easy task for a no-nerd artist like me.

Anyway, I got somehow what I was looking for and in this tutorial, I will go through the main steps.

To better follow all the steps, here you can download the file, ready to be rendered:

Remember to set the project to the directory where you unzip the file.

The grooming is very complex and heavy in terms of curves. There are almost 30 hairgen nodes and to load all of them takes several minutes. Be sure to set Houdini in manual mode and activate the ones you need.

You need GroomBear.

AN IMPORTANT NOTE

This is a personal project and some solutions I found may not be suitable for production. The goal of this effort was to make some research and try some tools and workflows. To be more specific and make an index for this tutorial, these are the main topics:

REFERENCES

As always this is the key to a good job. Never work by heart. Your mind is unreliable and you may get this only after many hours of hard work. Grooming is a very complex task and you need clear references to follow.

To start, I made a quick search and once I found the key image, I looked for other views of the same subject:

Refs.jpg

Another key reference for grooming is video. Sometimes the hair flow is so complex that watching how hair is combed can help you a lot. In my case I googled "dread bun" and I found these refs:

Dread_bun_video_01.jpg
Dread_bun_video_02.jpg
Dread_bun_video_03.jpg

FACE MODELLING

Even if I'd love modeling my characters, as a groomer I prefer to concentrate just on hair/fur and spend all my time doing this task well and quickly. For this reason, I tried two different approaches to quickly get what I was looking for.

The first method was Face Builder (for Blender) by Keen Tools:

Face_b.jpg

This is a very cool plugin that lets you model quickly and with ease a face using a bunch of images (in different angles) of the same person. A good starting point if you want to go further with the modeling task or just a reference if you don't care to have a final model under your groom.

Tip: This tool is very useful to get 3D cameras from your photos and use them to follow the hair flow

Using the best refs of my guru and a little bit of sculpting I got this:

Guru_blender_02.jpg
Guru_sculpted.jpg

click image to enlarge

Not bad for a couple of hours of work. Likeness and clean topology.

But I decided to go another way. The reason is that the goal of the project was tube procedural modelling and not digi-double. If I had chosen to use this approach, the model and the groom should have perfectly matched, and with a procedural approach this is not possible.

So I decided to use Human Zbuilder - Head a very cool plugin for ZBrush:

ZHead.jpg

The goal was to get an Indian-like face to put under my big dread bun. So, after another couple of hours, adding some details with some skin brushes in ZBrush I got this:

Indian_strip_big.jpg

click image to enlarge

Once again, not bad: cool model, clean topology, 6 ZBrush levels, UV and albedo:

Uv_strip.jpg

click image to enlarge

For my personal projects, to speed up the texturing process, I usually buy a model from 3D Scan Store. This way I'm sure that textures perfectly match the model. But this time I wanted to make something different and starting from my refs and the plugin albedo I made my maps.

As regards displacement, the plugin creates different kinds of skin pores that are cool, but for this project I wanted to try the Multi-channel Faces by Texturing.xyz:

Displacement.jpg

click image to enlarge

To match the textures to the model, I exported an UV wireframe image from Houdini and put it over the albedo as guide. Then, with the Photoshop Puppet Wrap tool I deformed the Multi-channel face image:

Puppet_04.jpg

click image to enlarge

This is the final result (ZBrush sculpting + displacement map):

Head_displ_03.jpg

click image to enlarge

GROOMING

Now comes the tricky part.

The whole process is very complex and going into detail for each setting would take forever. My goal is to explain the main steps and make the file available for download for those who are interested in deeping dive into it.

I was looking for a tool that could let me turn simple guides into tubes. To better match my reference I divided the dread bun into 6 parts:

Tubes.gif

click image to enlarge

To start, I procedurally created the tubes and then I drove them with a guide.

 

I started with a circle, a line, a copytopoints, and a sweep nodes:

Net_01.jpg

click image to enlarge

Net_01.gif

click image to enlarge

  • Circle > Uniform scale controls the diameter 

  • Circle > Divisions controls the number of tubes

Net_02.gif

click image to enlarge

I used a sweep node rather than an extrude node to have the following settings which helped me to match my reference:

  • Radius

  • Scale along curve

  • Roll/twist

  • Pitch

Net_03.gif

click image to enlarge

To have some variation in the diameter of the single tubes I added a couple of nodes:

  • attribrandomize​​

    • set to "Two Values" gives you Value A/B to get play with

  • attribpromote

    • set to "pscale"

To add even more variation, I duplicated this first part of the tree and added a delete node in both branches with some parameters linked to keeping, when merged, always the same amount of tubes (controlled by the circle divisions):

Net_04.gif

click image to enlarge

At this point, I added 3 twist nodes to start shaping the tubes: 

Net_05.gif

click image to enlarge

Using the taper option of the bend node I got the diameter reduction in the bottom part of the tubes:

Net_06.gif
Net_06_bis.gif

click image to enlarge

Now, to shape the tube group (I divided the dread bun into 6 parts), I used a single guide. I usually use GroomBear, but you can do the same using a regular guide groom node

Net_08.gif

click image to enlarge

At this point I added the guide into the second input of a pathdeform node using an object merge node:

Net_07.gif

click image to enlarge

What I've done so far (variation, twist, taper) was meant to create all these different directions in the edges that will be converted into curves and then into guides:

Net_09.gif

click image to enlarge

This is a key point.

After long research, I found SideFX Labs which is a collection of 230 tools. Among these, the Labs Edge To Curve is exactly what I was looking for.

To use it, you have to convert the tubes into curves, group them and finally feed this node.

So I added these 3 nodes to the tree:

1.

convert node set this way:

  • Convert to: Mesh

  • Connectivity: Rows

Net_10.gif

click image to enlarge

This could be a very long process, so pay attention to select/enable it if not necessary.

2.

group node to select all the edges

Net_11.gif

click image to enlarge

3.

Now it's time to feed the Edge Group To Curve node that ends the process:

Net_12.gif

click image to enlarge

Before converting the tubes, you can modify their shape using sculpt, lattice, soft transform etc. This is useful to avoid interpenetration between the different parts of the dread bun. A quick way to fix the issue without modifying the curves or other settings.

TIP: A very simple but cool node I use a lot is the switch node. In this case you can put it at the very end of the tree and connect:

  • the Edge Group To Curve output

  • the pathdeform (or other modifying nodes you used) output

This way you can avoid the long convert process ad keep the tubes visible:

Net_13.gif

click image to enlarge

This ends the tube grooming part.

 

It's time to feed a guide groom node and add some variation to the curves:

Net_14.gif

click image to enlarge

As you can see, using only external curves you don't get a thick dreadlock tube. On the other end, filling all the tubes with curves means getting a very heavy scene.

 

As a compromise, I duplicated the guide groom node and added a resample node to reduce the volume:

Net_16.gif

click image to enlarge

When both nodes are enabled, this is the effect:

Net_18.gif

click image to enlarge

Now, you simply need to add an hairgen node and use the modifiers (clump, frizz, bend, etc.) to get the look you are looking for.

LONG HAIR GROOMING

Before ending this tutorial, I would like to share with you 2 techniques I use for this task.

The key is GroomBear the grooming toolkit for Houdini. With this technique, you can comb even the most complex hairstyle very quickly. If you are not familiar with GroomBear, please read my previous tutorial "From hitch to hypster" on Pixar's Renderman website" or find other tutorials or resources like this.

Please pay attention at the steps and especially at the settings of the tools I will use.

1st TECHNIQUE

1.

SHAPE THE GUIDE

Using the draw or scatter brush, shape your guide

long_01.gif

click image to enlarge

2.

SCATTER SOME GUIDES

Using the scatter brush with "initial brush" option disabled plant some guides

long_02.gif

click image to enlarge

3.

SELECT ONLY THE SCATTERED GUIDES

Leave the shaped guide unselected

long_03.gif

click image to enlarge

4.

CLUMP - Part I

  • Select the clump tool

  • uncheck "maintain length" (in the parameters window)

  • Clump Screen Method > Clump select

  • hit the "Clump Select" button 

long_04.gif

click image to enlarge

5.

CLUMP - Part II

Brush the guides until you get a very tight clump

long_05.gif

click image to enlarge

6.

SMOOTH

  • Select the smooth tool

  • uncheck "maintain length" and "orient" (you can use these option later if you need them)

  • Smoot Method > Average Tangents

  • Smooth Radius > 0.6 

    • this is a key setting. With this value, you can avoid interpenetration​

  • Set the brush strength to a low value (0.26) to have more control

long_06.gif

click image to enlarge

Brush untill you get the shape you are looking for:

long_07.gif

click image to enlarge

With this technique you can change the shape very quickly:

long_08.gif

click image to enlarge

Working with the smooth brush and its options you can shape even large areas and the result is pretty clean:

long_09.gif

click image to enlarge

If you want, you can now select the most external row of guides and shape them over all the others to avoid any interpenetration:

long_10.gif

click image to enlarge

2nd TECHNIQUE

If you want more control, you can use the Clump Brush and the Scatter Interpolate tool:

long_12.gif

click image to enlarge

Let's see quickly how.

Once the main guide is created, plant just one guide using the scatter tool with "initial brush" option selected:

long_13.gif

click image to enlarge

Now, as you did before, use the clump brush:

long_14.gif

click image to enlarge

And the smooth brush, but this time with the "Average Neighbours" option:

long_15.gif

click image to enlarge

Do the same for another couple of guides:

long_16.gif

click image to enlarge

Now, using the "Scatter Interpolate" tool, add as many guides as you need:

long_18.gif

click image to enlarge

Using this technique, you can quickly build your grooming following the main clumps, and using GroomBear groups or multiple GroomBear nodes you can keep the whole thing well organized.

Tip: Using the new Houdini 19 guide groom node (which is very similar to GroomBear), you can add parting lines very easily and this helps keep things neat even in complex groomings. 

HAIR SHADING

I'm not a lookdev artist so, in production, I usually deal only with grooming.

But for this personal research project, I wanted to test the new Renderman MaterialX Lama. I will not go deep since you can find all you need to know here in the learn section of the Renderman website.

Here I will simply show you my graph and share a simple technique to add variation to the shader.

THE GRAPH

Shader_03.gif

click image to enlarge

As you can see, nothing fancy. Just a LamaHairChiang whose TT Specular color is driven by a PxrHairColor. To add some variation I used a PxrColorCorrect whose mask input is fed with a PxrVary.

Let's see in detail.

I will use a simplified version of the drealock and exaggerated colors/variations.

The first settings for variation are inside the PxrHairColor:

  • Melanin Randomize (Hair Color tab)

  • Stray Density/Random Melanin (Stray Hair Color tab)

  • Dye Random Hue/Random Saturation (Dye Color tab)

All these settings are effective only if you write "id" in the Hair ID Primvar in the Random Setup tab:

Random.gif

Here's the difference:

id.gif

You can visualize the randomness of your settings by checking View Index Random in the Random Setup tab:

variation_viz.gif

At this point, we can add some more variation using the PxrVary

With this node, you can vary the input color. The cool thing is that you can use an attribute inherited from the hairgen node as a mask. In my case I used the clumpid:

PxrVary.gif

Let's see in detail.

1.

Set the attribute you want to transfer inside the hairgen node in the Attributes tab. In my case I chose a clump node and assigned it the clumpid_big attribute:

clumpid_big.gif

Now exit the node and in the Attributes tab you will find the new attribute in the dropdown menu of the Ouput Attributes/Primitive Attributes:

Main_attrib.gif

click image to enlarge

With all this set you can now add as many variations as you want to the hair using all the parameters of the PxrVary: Hue/Sat/Lum/Gamma:

Id_on_off.gif

CONCLUSIONS

As I told you at the beginning, this is more research rather than a digi double project.

 

Procedural vs handmade is an old topic. Choosing one or the other depends on many factors. As regards hair, if you want to exactly match a reference, procedural is not the way to go, but if you want to make an alike, this could be a solution.

Tube grooming is a key feature for grooming and this is how a no-nerd artist like me tried to achieve the result. It would be nice if an advanced user could find a better solution and share the knowledge.