Introduction

I am a generalist developer who began to look into 3D and game development related topics about 2 years ago. I initially focused on learning Unreal Engine 4 and photogrammetry techniques, and more recently Substance Designer. At this time, I was also looking at modeling characters and creatures and this is why I got interested in hair and fur generation.

Approaching Hair Generation

The first introduction I had to real-time hair was when watching Johan Lithval’s CGMA webinar Creating hair for games. I was blown away by the quality of what was done there, the techniques used and that I was finally understanding how the different parts were coming together. However, not being a Maya user I had to find another way to generate the hair textures. I looked at other tools but was not very successful in producing something easily and in a reasonable amount of time.

From what I could see, the most common way to make hair/fur for games was to use hair cards, low-poly geometry onto which hair clump textures are mapped. These are then handled by a specific shader that can drive various effects such as depth, transparency, anisotropic reflection, etc. The types of texture maps required and the way shaders use them is not necessarily common to all workflows, it depends on how the shader is working and performance requirements. I think the fact that some workflows require specific maps and some others (for which sometimes only the map name changes but not the function) is creating some confusion among artists, at least it did that to me at first. Hair & Fur is able to deliver 10 types of maps (including derived ones, not counting all the possible generation modes) which generally covers most usages.

In parallel to hair topics, I was looking at Substance Designer and was especially interested in its programmatic capabilities (functions). What really linked the hair texturing to Substance Designer was when I watched Vincent Gault’s enlightening FX-Map introduction stream (in French). I understood then that most Substance Designer nodes were built upon a reduced set of atomic nodes, and the FX-Map was actually acting as an advanced screen device able to display patterns anywhere into a texture with various options. Most of them could be driven by functions. Adding to this the ability to iterate, this makes the FX-Map a freely programmable self-contained texture generator. I started to implement a Bézier curve and gradually it started to look like a tool that could generate hair/fur textures.

I want to thank Nicolas Wirrmann from Allegorithmic who provided invaluable help regarding the understanding of Substance Designer programming specificities, advice, and optimization tips. Hair & Fur wouldn’t have been the same without his support.

Hair & Fur Features