I’d like to note that this is not a production-ready workflow. I only use it for personal pieces, and it allows me to focus on the artistic aspect.
In this image, you can see some work I’ve developed using this workflow, from simple sketches to more complex compositions. With that said, there are two workflows that I’ll be going over in detail. One demonstrates the use of ZBrush’s Polypaint tools to create vertex color maps and later rendering in Toolbag, while the second workflow demonstrates texturing and rendering in Toolbag.
The polypaint workflow is the quicker and easier workflow of the two, which simply involves painting the ZBrush sculpt using polypaint. For those who are not familiar with polypainting, it involves painting on a 3D mesh without having to first assign a texture map. You will require dense enough topology to work with polypaint. Some ZBrush features to use would be auto-masking, various alphas and brushes, and the layer stack.
I used black and white values to paint tattoos along the nose, lips, ears, and eyelids. This allowed me to easily change the overall colors in Toolbag (shown later). But feel free to use colors here to paint an elaborate polypaint for your mesh.
Once you’ve polypainted your mesh, export the model from ZBrush. I usually export an .obj file and use the default settings from ZBrush. That combination has never given me any problems, however, be aware if you’re using layers, make sure that none are recording during the export process.
Setting up in Toolbag
After importing your mesh into Toolbag, go to the Materials window and change the material’s Albedo module to Vertex Color. This will ensure that the polypaint is applied correctly. Note: This option won’t be available in the Roughness channel, so we’ll have to use a flat value.
Now, this is where the fun comes in. We can start playing with our materials to produce some interesting results. I started by changing the Albedo Color values to create color variation.
To create the outline look, I duplicated the mesh, inflated it, and inverted its normals. I made a new material and set it a dark color. I changed Microsurface to None to keep the material flat with no reflections, and set the Diffusion module to Unlit.
For the skin material, I set the Transmission to Volumetric Scattering. Volumetric Scattering works wonders straight out of the box, but playing with the Scatter Depth will usually lead you to good results if you need to make adjustments. You can also use the Fuzz slider to fake some peach fuzz.
These are a few short examples. You could use Sheen for fabric materials or the Anisotropic Clearcoat Reflection to create shiny fabric reflections. You can even set the Transmission to Refraction for glass materials. Feel free to experiment with the various options you have at your disposal.
As you can see, this process gives us an exciting render with much less effort compared to the traditional production workflow (retopologizing, unwrapping, and baking). However, this workflow skips the texturing aspect. Texturing with UVs allows the creation of more complex materials driven by input texture maps.
For the second half of the article, we’ll begin to dig into these advanced methods and learn how to texture sculpts in Toolbag.
Texturing Sculpts in Toolbag
For this part of the article, I’ll use my soldier model as an example, which is based on a concept by Yun Zhang. This workflow is a bit more complicated, but it will pay off in the outcome. To summarize the ZBrush aspect, I created Polygroups and used ZRemesher on each group to convert them to UV islands. This produces a low poly mesh quickly that I can bake and texture inside of Toolbag.
The main thing to remember here is that every Polygroup created will exist on a separate UV island. With that said, simply make the same seam cuts you would commonly do on any 3D character model.
For the shirt seams, I followed standardized cloth and fabric pattern sewing seams. For the rest of the pieces, I look for spots to hide seams while thinking of a layout that will work well with tileable patterns. Since the composition of this piece is a still front view shot, there are areas that will never be seen, and having a seam cut there won’t affect the outcome.
I’ve ZRemeshed the polygroups once I activated the Polygroups option. I tend to have the Half option enabled and play with the SmoothGroups slider to determine the mesh density I want. I also dial the Smooth slider down to preserve the shapes on the borders of the polygroups.
If you lose some shapes while ZRemeshing, you can reproject the original high poly mesh to recover them. You can use a lower density mesh than my example, but I’ve noticed that Toolbag tends to handle high poly meshes very well, which is why I kept it as it is.
Creating and Adjusting UV’s
To unwrap the model, I use the Unwrap function under the ZPlugin menu with the Polygroups option enabled to unwrap the model. To check your UV’s, simply hit the Flatten button. To see the model in 3D again, hit Unflatten.
To maximize your UV space, use the Transpose tool to better fit the UVs according to texturing needs. This means scaling, rotating, and moving shells around, even deforming them. I make sure to mask out different UVs or some sections of them to make the process easier.
Here’s a video to better demonstrate the process.
Baking in Toolbag
Once you’ve imported your meshes into Toolbag, you can bake the high poly onto the low poly as normal.
An important thing to notice here is that I’ve also baked a Height Map. This will help retain the look of a high poly mesh using tessellation. You’ll have to play around with the settings to see what works best. In this particular case, my Height Settings were as follows.
The best approach is to keep testing and checking your mesh while baking, as shown in this video.
Now we can treat the process similar to a standard texturing workflow. Below are a few sections that highlight the most important parts of each material type.
Painting Skin Tones
Skin is relatively easy to create. I usually start with a base color that has the AO and thickness maps tinted towards red. I also added a red tint to the cavity map to create redness inside the pores.
I used a small brush to continue painting red areas and painted yellow near boney places while creating a seamless transition in between. Then I used a stronger brush to create some noticeable veins on the nose or ears. To finish painting the base albedo map, I tinted the lips red and added purple to the eye bag region. I also added subtle yellow tones to the prominent wrinkles and a slight green tint to the beard area.
After I had settled on the base albedo map, I started working on the roughness map. I added a flat base value and started working my way up. I treated it similarly to the albedo map and began working on my first pass using the AO, thickness, and cavity maps. I usually make the forehead, nose, and ear areas glossy and include high roughness in the beard area. I created a few layers with Albedo and Roughness channels enabled for the freckles, black spots, and the glossy red areas on the eyelids.
To finish making the material, I set Transmission to Volumetric Scattering, added a Detail Normal Map that includes a tileable skin texture, and set Clearcoat Reflection to GGX and Clearcoat Microsurface to Roughness. This will help improve reflections on skin.
Setting up Cloth
In comparison to skin, setting up cloth required fewer layers. It was important to start with a good base color that included a fabric texture. The albedo, bump, and roughness values were included, too.
After this, I started to experiment to see what could look interesting. I layered several dark-colored dirt and cavity masks that varied in color and roughness values. The same approach was applied to edgewear; only lighter values were used.
I like to add a Fill mask layer with the Dots Sparse Small texture from the Library applied to the Mask slot to add fabric wear. I lightened the albedo color and added some roughness and bump information. Additional wear for the shirt included some stitches and a layer for dried blood and mud.
I repeated the same process for the helmet straps. I also added finer-detailed layers on top with some sharpen filters to achieve a crispy look.
One tip I wanted to share was to make use of Toolbag’s Split Viewports option. I have two viewports; one shows the Current Map, while the other displays the Albedo (you can choose which individual channel to display). You can set the same camera for both viewports to move them simultaneously. This gives you a good idea of how the final material is behaving while checking the individual map.
These are some ideas to try. A good habit would be to gather interesting reference images and recreate them as closely as possible.
While this isn’t a production-ready workflow, it’s good for personal projects and focusing on the artistic aspect. Either workflow can be used depending on the goals of the project. I would also recommend trying a combination of the two.
I hope this article has been useful to you and you can apply the knowledge to your projects. If you have any questions, feel free to reach me on my social media accounts.
If you’re interested in collaborating on a tutorial or breakdown article, please send us your pitch, along with a link to your artwork, to firstname.lastname@example.org.