logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Breakdown: Stylized Hand-Painted Fantasy Priest Character Made With ZBrush & Substance 3D

Matthieu Lemoule Duparc took us behind the scenes of creating a hand-painted game-ready Moon Priest character, sharing his process from sculpting in ZBrush to texturing in Substance 3D Painter and rendering in Unreal Engine 5.

Introduction

Hello everyone! My name is Matthieu Lemoule Duparc, a 3D Character Artist based in Bordeaux, France. I have the chance here to break down for you my process of my Moon Priest character!

Like many of us, I am a real art, drawing, video games, and film lover. I discovered 3D art during my early college years when I was introduced to Maya software. From that moment on, I realized I had found the ultimate creative tool. I've always enjoyed working with various mediums, such as drawing, painting, building with LEGO, or even playing Minecraft, to bring my stories to life and express my creativity. So, discovering 3D art was truly exhilarating for me!

Later in my education, I discovered ZBrush and Substance 3D Painter, and a new passion was born in me. Then, after 3 years of college, I entered Artside School and discovered what game art really is. Since then, I decided to spend most of my time studying 3D character art. Here I met a lot of great people and friends who always push me to the top to create more and more, better and better. Thanks to them, this journey and this part of my life became a really epic and enriching time!

After two years of studying at Artside, I have been working as a 3D Character Artist in the game industry for almost two years now. I've had the opportunity to work in indie studios for exciting projects that haven't been released yet. Well, enough about myself; let's speak about the Moon Priest! 

References

This project started almost a year ago (yeah, it's a lot). I wanted to take my time on this project. I really wanted to work with no pressure to test and learn new processes like rigging or animation but also perform some skills I love to work with. The main purpose is that I want this character to be fully game-ready, including rigging and animation and, of course, the topology and textures.

For that, I decided to choose a concept art from the amazing HaoYu Xu:

HaoYu Xu

The first thing I did was to gather some references and find an artistic target. I wanted to have a goal so that I would not lose myself during the project, especially because this project would be dedicated to a huge time plan.

Secondly, I wanted to make something stylized and hand-painted, but I would also love to play around with PBR workflows. I always found Wayfinder's 3D artworks really inspiring, especially the way they managed to cook physically rendered things with hand-painted textures. At the same time, Fortiche Production did an amazing job on their show Arcane; it inspired me a lot for my texturing job.

I also gathered some artworks of artists who really inspire me, like Aleksander Ladosha for the creativity and diversity he can bring to his projects or Francisque Facon for his insane 3D painting skills. I was also inspired a lot by Fred Arsenault's artwork for his approach to game-ready and optimization models. 

I also gathered a lot of anatomy references, which are essential for character art. These could be photos, 2D artworks, or even 3D sculpts. Just be sure that these resources are reliable!

For example, here, I was hugely inspired by Mark Lambert's work, particularly his stylization of anatomy and the addition of dynamism to his model’s gestures. I also brought some real material references that would be useful for my texturing process.

Sculpting

One of my favorite steps here. For the modeling and sculpting parts, I did all the job in ZBrush. First, I had to block out all the elements that composed the character. I dealt with anatomy first with simple shapes with low-resolution topology. I tried to avoid maximum DynaMeshing elements. At this stage, I think it's important to work with a low-resolution mesh to have greater control of the overall silhouette and to work properly on the first level of detail of the character without thinking about thinner elements.

For that, I mainly use the Move, MoveTopological, and ClayBuildup Brushes. Also, I tend to prefer separating most of the anatomy elements, which allows me to move them more easily with the transform tool. 

Once I was satisfied with the first anatomy path, I blocked out the character's stuff elements. Again, I tried to keep the lowest resolution possible, but for some elements, I decided to start DynaMeshing some of the most organic parts.

One good tip I can share at this stage is to often check out the silhouette of your model at the top left corner of your screen in ZBrush. It's important to recognize your character's identity only with this view. The more powerful the silhouette, the more efficient your character will be.

Once I felt my silhouette and the model's elements were aligned with the concept art, I was ready to move on to detailing!

For most elements, except organic ones, I'm used to following these steps for my process: 

At first, I played with the ZModeler and the move brush. The Move brush is very useful for moving vertices on my low poly model to have the exact shape I want. Then, I polygrouped my model by normals, cleaned these groups with the ZModeler brush, and creased these polygroup's borders. It allowed me then to add dynamic subdivisions and, so, to have a great preview of what my model would look like before I applied them all. The good thing is that with this feature, I can play with my low-poly mesh with a high-poly preview and so be non-destructive in my workflow. I do this for every piece that needs to be sculpted.

Once I'm satisfied with the overall look of those pieces, I apply these subdivisions and start sculpting! A good thing to do after applying them is to be sure that the low model will have a homogenous polygon retribution all over his geometry. If it doesn't, you could have some poor poly resolution somewhere on your mesh. This will force you to push over and over the subdivision level and have insanely high-density polygons on your model. To avoid that, I tend to save the history step of the applied subdivision, ZRemesh my model to have a good topology basis and reproject the previous surface information on the new mesh. By doing this, I can save millions of polygons on an entire character, for example.

To sculpt details, I tend to use the TrimDynamic and Clay Brushes for edge damage and details. To smooth and facet surfaces, I use the HPolish and Flattenedge Brush from Michael Viciente's Orb Brushes pack. I also like to play with the mask lasso and Move brush to add variation on huge flattened surfaces. For most of my cracks, I use the Orb_slash_curve Brush and the ClipCurve for bigger cracks, which involve shape deformations. Also, I use the ClayBuildup and DamStandard brushes for other details.

Retopology & UVs

Now, the retopology time has come! The objective here was to create a game-ready and rig/anim-ready model on a mid-budget. So, I set myself a limited polygon budget of around 50K triangles for the overall character and his dependencies.

For this part, I think it's necessary to use references instead of just drawing your polygons stupidly. Most of the time, I like to have a nice homogeneous polygon distribution all over the model, especially on pieces that will be deformed during the animation. On solid parts that wouldn't be deformed, I like to favor the optimization rather than the deformation by using more triangles.

Also, during this step, I focused a lot on the silhouette again, so I paid a lot of attention to not seeing polygon steps on the mesh border. To do so, I increased the density of rounded shapes, for example. 

Here, most of the topology was done in Blender with the RetopoFlow add-on. It's a very intuitive tool where you can draw and play with vertices with your pencil and tablet, which is very comfortable. As for the weapon, I did the retopology with CozyBlanket on my iPad when I was on the train while traveling. It's a good nomad solution that offers nice possibilities.

To anticipate the UVs unwrapping part I thought to anticipate what parts will be mirrored by only retopologized one side. This is useful for saving time and UV space. The selected faces in orange here are the topologies that I have mirrored.

I did all the UV seams in Blender, and then I imported my models in RizomUV and did the unwrapping and packing parts in it. The reason for those choices is that Blender offers more comfort for selecting and editing UV seams. As for RizomUV, its unwrapping algorithm is one of the best you can find. It also offers a lot of nice features for packing elements.

Regarding the UV distribution, the face must be in a dedicated UV tile for a better resolution. Though I hadn't planned to make a specific shader for the skin or the eyes, I gathered all the head elements except hair on the same UV tile. The rest of the body will be on another one.

A 4K map would be fully sufficient for the overall body in terms of resolution. Though I won't have noise, grain, or dirt on the textures, I don't have to bring some overkill resolution maps on the model. For the other parts, I fit them all in another 4K slot. By doing so, the whole character will fit in 2x4096² pixel maps, which is quite well optimized!

The only specific thing I had to carry on was the transparent material. The Moon Priest has a cape, which I decided to deal with transparency, so I had to do a specific translucent shader in Unreal Engine 5. I gathered the cape with the eye specular mesh, which I had to make on separate topology rather than the eyeball, so I could have mirrored eyes with non-mirrored specular.

Texturing

I decided to do the whole texturing part in Substance 3D Painter. The reason is that I can have procedural texture generator tools all along my process. But before that, I needed to bake my high-poly model to my low-poly mesh to have some maps: normal, AO, thickness, curvature, world space normal, and a vertex color map. To do that, I used Marmoset Toolbag.

After adding these to Substance 3D Painter, I separated all the different material types into several folder layers, such as fabric, skin, gold, etc. Doing this allowed me to have a clean and very visual workspace, which is important to avoid wasting time searching for layers. Then, I created masks from all these folders to isolate all my colors and materials. For that I like to use the vertex color as an input in the color selector generator into the mask. If needed I clean them with some paint sublayer or filters to make it smoother. 

As a basis for my paint, I created my base paint smart material. It's a tool I put in each folder I mentioned to blockout colors and volumes. It's composed of a fill layer at a base, referring to the material color. One top and bottom light fill layer. One curvature layer and an AO layer. All these use an anchor point set in the first fill layer. By doing so, this tool is very reusable without touching the color on each layer. If I want, I can always tweak their mask’s generator for better customization.

Now, the painting time has come! To do that, I used the Knife brush in Substance 3D Painter. I added a painted layer on top of the previous smart material and painted along the model in the 3D viewport. For that part, your best tools are the time and nice references.

When the base color was done, I had to extract my roughness information. To do so, it’s pretty simple. I took my color info and turned it into black and white with a passthrough paint layer, attached an HSL Perceptive filter to it, and turned the saturation slider to 0. That turned my base color into grey values. Then, I placed an anchor point on top of it and plugged it into the roughness value on another layer. You can also tweak this grey value with a level or a contrast light sublayer to have the result expected.

I also added some metalness information to make the metal parts metallic. For this, there are no gradients, only straight grey values. I like to add a little bit of it to the hair or some types of fabric to make it more vibrant for the rendering part. 

Lighting 

For this part, I rendered my character using Unreal Engine 5. As I said, the main topic of that project was to make a fully game-ready character. So, once the character was rigged and animated, I imported it into the engine. Rigging and animation were done in Blender. While I am not a professional rigger or animator, I will not comment on those parts.

For the Moon Priest, I decided to make a PBR shading. So, an unlit version of the character wouldn't be sufficient. But as I spent a lot of time painting my character, I really wanted to highlight my painting job. I also wanted to see some normals and reflections thanks to the roughness map. Firstly, I make a very simple lighting setup, 3-point lighting with a Key light, a Fill, and a Rim light. We can say at this moment that I have a lighting blockout.

Then, I created my master shader. To highlight the albedo as much as possible, I put this map into the base color and into the emissive input of the shader with 30% power. By doing so, the emissive will not override lighting and roughness information. 
 
For more customizability, I added a CheapContrast node to my albedo to tweak it a bit. A Multiply and an Add node combined with parameters to my Roughness input in order to make the model more or less glossy and to tweak its contrast on the parts needed. And a Multiply parameter to my metalness and AO maps to do the same. Extremely simple shader here, but it did the trick.

As for the outline shader, I searched the internet extensively to find the perfect tutorial for my project. I found Evans Bohl's tutorial on his outline shader. I invite you to check that out if you're curious. He surely will comment on it better than me!

Now that I had good shaders and a nice lighting blockout, I thought it would be nice to have a custom ground and sky sphere. I created a simple UV sphere in Blender, inverted the normals, and scaled it a lot to fake a sky in Unreal Engine 5. Then, I made a gradient map in Photoshop that I put into an unlit shader in Unreal with some nodes that permitted me to customize it a bit directly into the engine.

The ground is a simple plane on which I painted sandstone tiles in Photoshop. I extracted the greyscale from the paint to have a roughness pass and used it in Substance 3D Painter as a height map to export a normal map. Then, I had all the maps I needed for PBR. I duplicated the master material of my character and tweaked it a bit, and then I had my ground.

After finishing my materials and shaders, I could enhance and improve the lighting by adding source lights in areas that need to be enlightened.

Et voilà! The Moon Priest is finally done! 

Conclusion  

To conclude, I can say that I feel I have improved my skills after this project. I learned new things. I really take my time on this character, so that permits me to discover and experiment a lot! For example, the rigging task required almost a week of work. It was a real struggle and a painful time, but it was necessary to make the necessary mistakes to understand this process well. To sum up, the overall project took me over a month to complete, spread over several months. 

The advice I can give to beginners is to always be surrounded by people who can give you some feedback on your work. It could be friends, professionals, or even some people who are not artists. It's very important to take steps back on your art and to accept criticism of it. Because most of the time, they are constructive and will lead you to the top.

Matthieu Lemoule Duparc, 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