logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Sculpting, Grooming, & Rendering a Stylized Elf with ZBrush & XGen

Kevin C. Sepúlveda talked to us about how he created a stylized-realistic elf, discussing sculpting in ZBrush, grooming with XGen, adding detail using Displacement Maps in Substance 3D Painter, and rendering in Marmoset Toolbag 5.

Introduction

Hello, my name is Kevin C. Sepulveda. I'm a 3D Character Artist from Colombia, currently based in Madrid, Spain.

My first contact with 3D art happened while I was studying at university. I had entered a more advanced class to complete a Photoshop assignment. The professor allowed me to stay, and that's when I saw the ZBrush canvas for the first time. Until that moment, I had only considered becoming an illustrator or concept artist. But then, as the professor started sculpting and explained the process, I was completely amazed that something like that was even possible – and I immediately knew that's what I wanted to do.

I began working with 3D in December 2019 and have been self-taught ever since. Everything I've learned was from my room in Colombia, through countless hours of practice, watching videos, following guides, and exploring various tutorials online.

Inspiration & References

I decided to sculpt a face to add to my portfolio, focusing on simplicity and anatomy – without any accessories – and aimed to create an appealing and eye-catching hairstyle using XGen. The goal was to improve the final render and achieve a character with the highest possible quality, both visually striking and cohesive.

For this project, I didn't rely on many references. I had a fairly clear idea in my head of what I wanted to create in ZBrush. The reference that had the biggest influence on the character was Aurora; I used her features to shape the nose, and also drew inspiration from her to create the smiling expression.

When it came to hair, I originally had more complex ideas (which I plan to explore later), but as I mentioned earlier, I wanted to focus on simplicity, so that's what I did. Still, I try to think of unique and uncommon design choices. That's when the idea of the bow came to mind – something I hadn't seen on a character before.

Modeling

I started with a free base mesh from 3D Scan Store. They offer different options to start sculpting – some are great for studying expressions, others are compatible with Metahuman, and they also have a variety of high-quality paid assets that are definitely worth checking out.

3D Scan Store

The great thing about these resources is that they already come with UVs, good topology, and are compatible with the Displacement Maps they provide, which saves a lot of time. The eyes also look good by default – I only had to tweak a few maps in Photoshop, and they were ready to go.

For this project, I used ZBrush, Maya, XGen, Substance 3D Painter, Marmoset Toolbag, and Photoshop. In my opinion, that's a fairly simple and standard workflow, but one that can produce high-quality results. I chose Marmoset not only because it's user-friendly, but also because it's focused on rendering game characters, and that's exactly where my passion lies, which is why I always focus on game engines.

I aim for a stylized-realistic look when it comes to hair, because I feel it gives characters a lot of personality. My approach to working in XGen is quite straightforward, you could say – I'm usually more comfortable working from a mental image rather than relying heavily on references. In this case, I only used two references. Of course, if I were doing a likeness or something more complex like braids, that would require a lot more attention and visual guidance to make sure it looks natural.

Continuing with the hair process, I set up the project in Maya and started working with a scalp mesh. I recommend this ArtStation article, which collects various tips and information for working in Maya.

After creating a description, I began adding guides and shaping the hairstyle. I used a total of 13 descriptions to create this look.

For the fuzz, I always use the same reference from Anatomy for Sculptors – it serves as a great guide for understanding how it behaves and flows across the body.

The bow, which is the most eye-catching element, only uses two guides per loop, four in total. I placed the first guide to define the shape I wanted, then added the second one close to it to follow the same curve. This second guide helps give the strand thickness and volume.

I adjusted it until I liked the result. Finally, I selected both guides and hit the "mirror" button to duplicate them for the other side. The last touch was adding a bit of asymmetry – and that's it.

The rest of the guides are very simple – their only job is to fill in the hair and support the look using modifiers to give it a clean, realistic finish.

A couple of tips:

  • The first is using "Set Stray Percentage" to create flyaways. Create a new Noise modifier, go to the Description tab, and click "Set Stray Percentage." A menu will pop up – set it to 5 as a starting point. In the Mask field, instead of entering a number, type in the expression stray(). Then play around with the values to get the type of flyaways you want.
  • The second technique (which I didn't use in this project, but have used in the past) is creating a separate description for placing small individual strands around the hairstyle. This helps a lot in creating volume, casting interesting shadows in the final render, and helps to stylize the character.

Now… exporting the hair to Marmoset. There are two main options, and I used both in this project. Let me begin with the older method:

  1. Convert XGen to Polygons:
    First, disable the "Face Camera" option in each description. It's in the primitive attributes palette. Then, select all your descriptions in the Outliner, go to Modify > Convert XGen to Polygons. Check Combine Mesh, it's important to enable the Width Ramp option to preserve the thickness you gave the hair – set the Layout Type to 4x4 and Tile Separation to 0.02. Convert and export. While this method offers solid fidelity and precision for presenting the hair, it does lack some of the advantages found in newer approaches.
  1. Interactive Groom (.abc file):
    Marmoset Toolbag 5 supports interactive groom rendering. When you load the .abc file, it automatically creates a material for your hair and allows you to set a color gradient and adjust the thickness of the strands.

To export: Select your descriptions in the Outliner, go to XGen, and click "Generate Interactive Groom." Then, in the Interactive Groom Editor, select each description, go to Description > Cache > Export Cache. Make sure to export only the current frame, and it's very important to check the "Write Final Width" box. Use HDF5 as the file format.

Now you can fine-tune the groom using the sliders and adjust the hair color directly inside Marmoset Toolbag 5.

Retopology & Unwrapping

As I mentioned earlier, the model already comes with good topology and UVs. What I changed was the Color Map. It includes a default one inside ZBrush, which I applied to the vertex color to start painting.

I used Adjust Color to shift the tone to something paler and less saturated. Of course, this could also have been done in Substance 3D or Photoshop, but doing it directly in ZBrush made it easier.

From there, I had to bring it into Substance 3D and, when baking, make sure to switch the ID map source to vertex color.

Texturing

Something new I tried was exporting the Displacement Map from ZBrush and bringing it into Substance 3D to capture the high poly detail there. It worked well for adding depth and definition without having to rely solely on Normal Maps.

Here are two great videos that show how to do it:

Since about 90% of the color was already done in ZBrush, in Substance 3D, I only made some small adjustments – things like cavity detailing, veins, and a few corrections, such as the lips.

Overall, it was a fairly simple process. It's mostly about constantly comparing how things look inside the engine and making adjustments as needed, especially to the Roughness Map.

One thing that might stand out is the orange paint texture. I used a "Cells 4" alpha with metalness enabled to give it a sparkly, metallic paint effect.

Rendering

For the final render, I used a key light and one or two rim lights as needed to highlight the details in the hair.

Rendering in Marmoset is a fairly simple process. There's a great variety of HDRIs available, and setting up lighting is very intuitive. From that point on, it's a matter of finding the perfect look.

Conclusion

I spent about a week sculpting, three to four days working with XGen, and two more days on texturing and rendering. This was one of those projects meant to study, improve, and identify what could be done better, so that the next time, the result will be stronger. It's all part of staying in constant evolution.

The biggest challenge in 3D is simply having the willpower to show up and try again the next day, especially at the beginning. It can be tough and frustrating at times. But once you push through that learning curve, it becomes easier to create and finish things.

As artists, what drives us is the passion to create and the hope that one day, we can make a living doing what we love. That's why my message to anyone just starting out is this: enjoy the process, keep improving, think differently, and contribute to the community, so we can all grow together and enjoy our art.

I'm very aware of the challenges and the current state of the industry. And to be completely honest, it's tough to break in nowadays, especially when you're from Latin America, like me. But it's not impossible.

Hard work always pays off, even when we're not immediately aware of it. So trust in yourselves and remember the sun will rise again tomorrow, bringing a new opportunity to fight another day. Stay strong.

Thank you so much to 80 Level for giving me the chance to share my work and process. Valar Dohaeris.

Kevin C. Sepúlveda Márquez, 3D Character Artist

Interview conducted by Gloria Levine

Join discussion

Comments 0

    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