Creating a real-time photorealistic portrait in ZBrush

Introduction

In this guide I will showcase and break down my working process in the context of my project: Camille Case. During this project I tried to nail down the real-time pipeline. By that I mean having a retopologized model, textured in Substance Painter and then rendered in Marmoset Toolbag.

This tutorial is suitable for artists that already have intermediate knowledge in the used software and characters creation, and also for beginners because beside actual steps of the making, I’m also trying to demonstrate the workflow of my character creation.

futuristic female soldier character 3d model
female character 3d model punk soldier
female character 3d model punk soldier
female character 3d model punk soldier
female character 3d model punk soldier
female character 3d model punk soldier
female character 3d model punk soldier
female character 3d model punk soldier

Getting references

For every project I always begin by creating a reference board that covers everything I may deal with during my work process. That includes main concept art, anatomy images, materials, pose, real references, stuff that is coherent with the project and may help to fill some uncertainties.

I also used to collect other artworks from the same concept artist, in order to better understand his art language and design choices. In this case I had only a profile image of Camille, so I used Cedric’s other works to complete the image of her portrait. In other words, I try to get rid of blank spots and be fully prepared for the actual work. One more thing I do during the reference stage is establishing a strong connection with the future work I'm about to create, this gives a motivational boost to kickstart the project.

moodboarding and research

Blocking in ZBrush

At this step I’m making blocking and then advanced blocking using ZBrush. The Camille Case started as a personal project and I did it in my free time which I barely have. In order to save time, I decided to use basemesh as my starting point.

Most of the parts were made with Mask > Extract, and some of them I did in Maya, because it was quicker and easier. To check proportions and angles I use ZBrush’s Spotlight as a reference, it is very useful in combination with ZAppLink Views.

●     Load texture to Spotlight

●     Brush > Samples > “Spotlight Projections” UnChecked

●     Shift+Z to toggle Reference

●     Z to Adjust reference

●     ZAppLink Custom View to store Camera for Reference

In this step I work freestyle without any technical constraints. Sometimes I use ZSpheres. I often use Dynamesh and for some other parts I use Maya. My goal is to make rough blocking as fast as possible, then I can make one or two passes of overall tweaks to pull everything together more tightly.

●     Rough Blocking

●     1st Polish Pass

●     2nd Polish Pass

●     3rd ….

As soon as I have my basic shapes and proportions at place I’m ready to move forward.

maya blocking
[Blocking / Third pass]

Retopologizing and UV in Maya

Retopology

The next thing after blocking is Retopologizing – creating a good and clean topology for the sculpt I made in ZBrush. In this specific project I didn't try to achieve the best topology and Game Ready Polycount, therefore, I stayed with the topology I had from the first subdivision in ZBrush and cleaned it here and there. When I’m satisfied with the topology part I can start to unwrap the model.

UV Layout

Although some people dislike the UV process, they say it’s boring, slow, and very technical, but it’s a very important part too. Good UVs are the foundation for a clean baking and smooth texturing process. But first I must decide how many textures I want in my project. In order to split the model into textures, I apply the same material to the parts I want to combine in one texture map. It’s also allowing me to “quick select” them, which can speed up this whole step.

Here I have:

  • Face texture
  • Helmet texture
  • Suit texture
  • Suit texture
maya and substance painter 3d model
[Materials in Maya / Material names are used as Texture name in Substance Painter]

Now I can start UVing those textures. This actually is one of my favorite steps. It’s a very straightforward process, sometimes it feels like a meditation and sometimes like a puzzle game.

  • Prepare topology
  • Use Proper Mesh names
  • Apply different materials for different Layouts (Textures)
  • Cut UVs with seams hidden
  • Keep Texel Density equal for Each Layout
  • Then Scale Up / Down the parts by importance at the screen
3d model maya mesh
[UV layouts in Maya]

ZBrush – adding details

Now that I have everything with proper UVs, I’m moving forward to add more details. First thing I do is reproject details from ZBrush to freshly UVed Maya meshes. So now my high-poly SubTools in ZBrush and low-poly meshes in Maya are the same. After that I’m making sure that all of my meshes in ZBrush and Maya have the same names. Then, I apply “_high” and “_low” suffixes to them.

For example:

  • ZBrush SubTool named – Head_high
  • Maya mesh named – Head_low

It will save me time in future steps.

This is a very important checkpoint, because if I miss something now and dive straight into the details, I can find myself in a situation where I’m spending hours in attempts to find and fix that “something” that I missed.

To inspect, I use Substance Painter to check if it baked properly and UV Layouts are good. At this point I can easily find bugs and fix them before I even start to work. Then I move from one SubTool to another and add more details. I make two or more passes, each time adding something new to the surface, whatever it is, skin, fabric, or metal.

The next step is projecting XYZ Textures. I used this Killer Workflow to do so. I like this technique, it’s fast, easy and it works great in combination with multichannel maps from XYZ.

3d model maya mesh
3d model maya mesh
3d model maya mesh
3d model maya mesh
3d model maya mesh
3d model maya mesh

Now I have all the details passes done:

  • Primary form pass (main shape, proportions)
  • Secondary details pass (adding details, wrinkles, imperfections)
  • Tertiary details pass (adding micro details, xyz displacement)

In the following images below you can see Face Skin and Helmet breakdown in layers. Other parts have pretty much the same process.

female face 3d modelling
female face 3d modelling
female face 3d modelling
female face 3d modelling
female face 3d modelling
female face 3d modelling
female face 3d modelling
female face 3d modelling
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development
3d model helmet texture development

Substance Painter / Photoshop – Texturing

Finally I have a high-poly sculpt exported and I can start texturing with Substance Painter. Here’s where my  “_high” / “_low” suffix come to play. In baker’s main settings I chose the “By Mesh Name” option: it groups the meshes by name and bakes them separately from others, and by the end you have very clean maps with no intersections.

There are no perfect bakes so fixing them in Photoshop is okay. Usually it’s the ambient occlusion and Normal maps that you want to check for artifacts.

There are no perfect bakes so fixing them in Photoshop is okay. Usually it’s the ambient occlusion and Normal maps that you want to check for artifacts.

I like to work non-destructively and clean at every step, and texturing is no exception. Every textured part has a folder, every color layer is a “fill layer” with mask, so it can be changed or tuned at anytime.

female punk metallic texturing
[Substance Painter main screen / texturing helmet]

I used many references of different parts like helmets, grenades, or rubber dive suits in order to make the materials feel as real as possible.

Here you can see the texturing progress in Marmoset:

futuristic female punk character
futuristic female punk character
futuristic female punk character
futuristic female punk character
futuristic female punk character
futuristic female punk character

Marmoset Toolbag – Shading / Lighting / Rendering

No matter what real-time engine you choose to present your project – Unity, Unreal, Sketchfab, or Marmoset – to make it look good you need to set up your materials and lights properly. Before I start to set up the materials in Marmoset Toolbag, I try to understand which type of material I have and how to connect all of my maps. For example, for the skin, I need to change the “Diffuse” type to Subsurface Scattering, and “Microsurface” to Roughness. For extra details I change “Surface” to Detail Normal so I would have a special slot for details, which is a small tileable Normal skin map.

lighting and shading specifications and settings

[Skin material in Marmoset Toolbag / breakdown and explanation]

When I finish with my basic material setup, I move to the lighting setup. The main thing with lighting is to use it to lead the viewer to the point you want him to look at.  You build your lighting setup hierarchically, from the main key light that showcases the most important part of the model, in my case, the face. Then you add smaller, weaker lights to fill some areas, reveal details, or soften shadows, and rim lights to frame the silhouettes. From this point, in order to achieve an interesting scene, I tweak the lights and materials. I call this step fine-tuning. For more information I recommend visiting the Tutorial Section on Marmoset’s site.

lighting and rendering 3d woman model
lighting and rendering 3d woman model
lighting and rendering 3d woman model
lighting and rendering 3d woman model
lighting and rendering 3d woman model
lighting and rendering 3d woman model

Photoshop – compositing

At the end of this long process – sculpting, texturing, shading, and lighting – I getting a single 2D image. That image is never perfect, there's always a way to improve it, make it look better. I use Photoshop to compose my final shot.

photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model
photoshop rendering effect 3d model

Conclusion

It was a personal project so I didn't have any constraints regarding time and techniques. I wanted to try something new, like Marmoset Render and XYZ Maps. By establishing pipelines between different programs I was able to fine-tune the model and the textures at any stage, by going back to the early stages of production.

For example, the whole process of  fixing a high-poly sculpt, than rebaking it and exporting updated textures back to Marmoset, was smooth and seamless. I feel that I learned a lot and my workflow got better and much more efficient.

Marmoset Render and XYZ Maps

Fetching comments...

Post a comment