Making a Dragon Material in Substance & ZBrush

Khayyam Naghiyev showed us how to create a dragon material using Substance, ZBrush, and Marmoset Toolbag.

Introduction

Hello, comrades. My name is Khayyam Naghiyev and I am a self-taught artist from Azerbaijan in addition to currently being an undergraduate student in my pre-final year at State Physical Education and Sports Academy. I was introduced to 3D graphics back in 2009 when I was just 14 years old and my dad enrolled me in 3ds Max architectural visualization courses. I turned out to be a swift learner and managed to get my first job the same year. This is when my journey began.

Despite studying at a Sports Academy, my heart always belonged to visual arts and video game environments in particular. As a child, I would spend countless hours at our local internet café, playing games like Halo and Fable which served as a foundation for my creative process today. The materials I create are heavily inspired by fond memories of canonical games I had the pleasure of playing.

My first introduction happened a year and a half ago when algorithms of YouTube incisively suggested that I watched Pauline Boiteux’s “Deer Panel” tutorial. I became thoroughly intrigued by the results she got. The crucial point for my development as a material artist was Abderrezak Bouheda’s request for my feedback on the material he was working on at the moment. Since then, I would ask him back for his advice, critique, and help. He always responded happily and mentored me throughout my projects. Big shout out to him for his kindness and willingness to help anyone in need.

It took me a little less than a year to fully grasp the process of material creation. But of course, the right mentor and inextinguishable desire to keep raising the bar were crucial components.

Pre-Production

The idea to create a material that consisted of entangled dragon torsos came to me randomly when I was iterating through different variations of my “Accumulation of Crystals” material. It was eventually to serve as a texture for my upcoming UE4 environment which is on hold for now. I had the entire scene and the backstory of the cavern environment in my head, however, something was still missing. Suddenly, this exciting dragon idea materialized out of thin air! At first, it was supposed to be a completely monochromatic set of textures meant to be chiseled into a cliff. I felt myself in a need of some references to start working on. After browsing Pinterest for almost an entire day I had collected an impressive amount of old Chinese oil-painted sculptures, some of which you can see below:

I like to think about references in the following way: I have ideas, seeds if you will. After planting them in the soil of my imagination, I need to water them with some reference images for the sprouts to appear.

Once the references were in place and I had made up my mind about the approximate end result, I had delved right into production.

Production

This time, production was not as straightforward as I was used to in my previous projects. Right from the very beginning, I had discovered an impossibility of adherence to general workflow principles of procedural material creation. That is if this material was to be done in a reasonable amount of time. Hence, I have chosen a pragmatic approach instead. No more running after a “100% procedural workflow” this time, no more feeding the procrastination monster which thrives on making every little procedural detail “perfect” and hugely impacts the creative side of work. I am obsessed with doing everything procedurally, however, knowing when to pull the emergency brakes helps get more creative control and in some situations might be a huge time-saver.

So, once the burden of the “fully procedural” approach has been lifted from my shoulders, the Zbrush -> Bake -> Substance workflow, known to every artist, had slowly begun rising from the ashes.

NB: This workflow might not be suitable for production in your project. This was just how I decided to work on my material given the constraints that I had.

Work on the dragon itself required yet another set of references where I once again had stumbled upon an important choice. What kind of dragons?! Traditional Chinese? Or the one well known from TV shows? Given that I needed them to have snake-like prolonged torsos to make the entanglement possible and believable, I had decided to go with the bodies of traditional Chinese dragons. But frankly speaking, I am not a fan of the way their heads look. So, it did not take long for me to decide to merge the unmatching heads and torsos. 

The torso was rather trivial to sculpt in ZBrush; just a simple cylinder with back scales applied using the new ZBrush feature, Dynamic Micropoly. Belly scales were placed manually and later served as a base for an Insert Mesh with curve mode set to On.

If you wonder, whether this piece has been welded well, don’t! There was no need to worry about tiling in this case since I didn’t need a welded Insert Mesh. Instead, I tackled the problem with the Curve Step modifier. Adjusting it to the value of 0.5 gave me an ideal overlapping placement for my Insert Mesh.

After several attempts of running through the entire pipeline from ZBrush to Substance, I quickly realized that to achieve the best result for the final material I would need to break the geometry into two separate parts. The first one, (let’s call it part A), consisted of a number of entangled dragons in the middle of the scene, placed manually in ZBrush. The second part, (let’s call it part B for clarity), three separately made and baked dragon meshes. The idea behind having these three separate dragon maps was to use them later in Substance Designer to make the material seamlessly tileable.

Quick Tip: In ZBrush, to get the variety of twisting angles, hover over for the blue circle that appears on the curve and left-click & drag your curve while simultaneously holding the Ctrl key. That way you can adjust the twisting angle by moving your mouse to the desired position.

Turn off Snap in the Stroke menu to avoid the glitch you can see in the video below. 

Since I am not a character artist, for proportions and the placement of the eyes I simply used the Dragon Skeleton brush, hidden under the Lightbox>Brushes>Insert-IMM menu entry. Later, I cranked-up the dynamesh resolution of the Head sub-tool and added secondary details by using brushes like Blob, Chisel Creature, and low-intensity Soft Concrete surface modifier for the final surface noise.

I approached the limbs in a similar manner. First, by inserting a couple of cylinders. Then, stretching over the bones sub-tool that I had already had in the scene. The idea was to mimic the muscle placement over the bones. Finally, went with some scale brushes through the surface of the dragon's skin. For the hair strands, I grabbed the Makkon Haircurves brush.

The next step was to give some color IDs to the scales of each of the body parts, collection of hair strands, the head, and to bake them into an ID map later. After that, I exported each of the body parts to a corresponding file in a .fbx format since they had a dynamic subdivision applied to them and it became very heavy for my PC to process the mesh in its entirety at once.

Baking

After a series of short tests with Substance Designer, Toolbag and Xnormal, I chose Xnormal as it yielded the cleanest baking of height values. I used a simple plane (behind the body parts in the image above) as a low definition mesh to bake the high-res meshes (I have exported to .fbx files previously) onto.

Baked height and ID maps:

Layering in Substance Designer

I started by compartmentalizing part A (entangled dragons in the middle of the map), and part B (consisting of three separate dragons made for tiling purposes) into corresponding Subgraphs with respective Height, IdMap, Greyscale, and Mask outputs.

I borrowed The Substance Designer layering technique from the Advanced Shape Creation tutorial by Eric Wiley. I also grabbed the Rotation Subgraph and slightly modified it by adding a Safe Transform for manually tweaking the positions of each of the dragons of part B. For those of you who are not familiar with this approach, feel free to check out the aforementioned tutorial to better understand the Layering method used here. But in short, it is a simple graph built with the Shape Splatter node.

Inside of the Layering subgraph I exposed the Height Offset, Height Offset Map Multiplier, Height Scale, Conform to Background, and the Smooth Conformed Background modifiers of the Shape Splatter node. I had also extracted the data1 modifier of the Shape Splatter node as an output for the Layering Subgraph.

Now that I have set up the Subgraphs, representing the Layering, Rotation; dragon Height Maps that were isolated previously for the tiling purposes (part B), and the subgraph, representing the collection of the dragons in the middle (part A), I had moved on to combining them under a new subgraph.
After that, I created multiple copies of the Rotation node to add some positional variation to the dragons that were meant for seamless tiling (part B). Also, the Layering node was adjusted for each of the dragons to avoid artifacts that stemmed from visually unappealing intersections. Thus, I managed to achieve a good enough presentation of the sculpt from the most favorable angles while getting it to tile seamlessly for the Height Map.

I had repeated the process described above multiple times until all of the visible gaps were filled and the intersections looked believable. Then I added surface cracks and damage to get some weathering for the final Height Map.

Coloring

Before we jump into colors, remember what I had mentioned earlier about exposing the output for the data1 property of the Shape Splatter of the Layering graph. I used that data1 property to feed the masks as I was combining the ID Maps of the isolated dragons that were meant for tiling (part B) with the dragons in the middle (part A). Thanks to the Shape Splatter node of the Layering Subgraph, the overlaying and intersection were automatically inherited for the mask. Later I used the Material Selector node to pick up the required color from the final ID map and feed it to the Gradient Map node as a mask.

The color harmony I have in the final renders is a result of many iterations. I started with the base material of yellow paint which utilized the Moisture Noise modified by the Multi-Directional Warp node by Vincent Gault. After that, for the red, green, and blue color masks, I subtracted a grunge map to expose the base color in some areas for a more pronounced wear effect.

As you can see from the two pictures above, they are nowhere near what I got in the end. At this point, my sight was too biased from constantly staring at the same color palette to know better. I decided to take a break for a day and ask some friends for feedback.

The idea of using three main colors developed during one of the iterations, when I was switching between Marmoset Toolbag and Substance Designer. The initial idea was to only have green and red dragons. However, now I knew what was missing. Without hesitation, I picked a color between Cerulean and Sapphire on the color wheel and everything worked out nicely on the first try.

When I was done with the materials, I dropped the textures I got into Marmoset Toolbag 3 and started playing with the classic lighting setup, which happens to be rim light, light from below, above, and child lights of the HDRI map. I highly avoided direct key light as it tends to erase crevice shadows. I felt like I really needed those since they can add sharpness and finesse to the final composition. For those of you who are wondering, I used the “Castle Sunset” HDRI map.

The second, metal version of the material was the easiest of the two to set up. All that was needed was to drop a built-in “Metal Weathering” node into my graph and tweak a couple of settings.

I finished the material by adding some dirt. The Dirt Generator seemed to be perfect for the task. It required the World Space Normal as an input, so I connected the Height Map to the Flow Map Generator by Bruno Afonseca to get it.

I also wanted to add some clear brass shininess to the edges of the scales. To achieve this effect, I made a mask out of a Curvature Sobel and ran it through the Level node.

Overall, coming up with a workable pipeline that would produce high-quality Height Maps and fill in every gap with the aid of layering, was, perhaps, the most challenging task of all. Although, now that I think about it, for the final refinement, I would have probably run the maps again through ZBrush, this time with tileable height in order to refine harsh edges and give them a bit of a slope. 

Some Tips and an Afterword

Based on the experience that I gained during the last couple of projects I had worked on, I'd say that one of the most important lessons was to never hesitate to ask other artists for help and feedback. Learning Substance Designer requires perseverance and could be tedious sometimes. So it is ok to retreat and start over.

I believe that for artists it is crucial to have ideas and passion. And the software that we use is secondary, they are merely tools to help us bring our artistic visions into reality. The rapid evolution of technology hints upon the fact that nothing is going to remain irreplaceable forever. Things change on the go and what matters the most is a strong desire to create unique pieces of art.

I hope that there are some useful takeaways for you in this article. And for anything I might have missed or didn’t mention, please reach out; as I am always happy to discuss or answer questions if needed. I really hope that it helps or inspires you as much as I was inspired by reading other artists' articles here. Gonna wrap this up now and would like to thank Arti Sergeev of 80 Level for giving me this opportunity of jotting down my thoughts and work process. It was an immense pleasure!

Khayyam Naghiyev, 3D Material Artist

Interview conducted by Arti Sergeev

Join discussion

Comments 1

  • Anonymous user

    Amazing art piece and execution!!😍

    1

    Anonymous user

    ·19 days ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more