Miho is a fictional character we created to demonstrate the use of our latest collection VFace.
The first goal is to show the potential of the textures provided in this new collection - With less effort you can get a realistic skin faster than ever!
Secondly, to show a workflow allowing the Artists to enjoy more of the creative process when it comes to bringing their characters to life.
In this breakdown, we will show you the steps to create a semi-realistic portrait, starting with the stylisation in Zbrush, followed by the shader and groom in Maya.
The first step in this project is to sculpt the face in Zbrush with the help of our basemesh and references we gathered.
The main advantage of the VFace collection is that all the maps can be applied to any heads - as long as the topology and UV remains unchanged. Of course, you can still use a wrap/bake workflow if you use your own mesh. To maximize the creation freedom that allows VFace, we have chosen to work on a fictional character.
The goal here is to create a semi-realistic face with a stylized anatomy. We started from a real face, changed the proportions, especially the eyes which are twice as big as a normal person. To not get lost, it is a must to have good references, in our Pureref we mix real references, but also stylized references.
After looking at all the references and the assets available on the website, we decided to use VFace Ilona for the skin textures and VFace Olena for the geometry (primary shapes projection).
Basemesh and symmetry
To save time and Instead of using a wrap and bake approach, we’ll use the models supplied in the VFace pack and the Free VFace add-on.
To do so, we started with our symmetrical basemesh, the goal is to work as long as possible with the symmetry activated. This basemesh can be the one in the free VFace add-ons, your own, or another from your VFace pack (asymmetrical) - Feel free to work with the method and asset you are comfortable with, some experienced Artists also prefer working directly in asymmetry. Up to you!
It’s so far the best option when it comes to work fast, you avoid any possible artifacts from a bake or wrap. Also, we have chosen Zbrush but you can use the tool of your choice, such as Mudbox, Blender etc...
Since most of the details we’ll apply are indeed in the fully-calibrated displacement map, we will mainly focus on the primary shapes. These shapes are so far the most important - You should not work on the details without having a solid foundation, the primary shapes represent the structural shape and silhouette of your character, do not overlook this! Think about his background, age, style etc..
Asymmetry and transferring primary details
Once you are satisfied with the overall/primary shape and silhouette of the face, you can start making it asymmetrical, because no face is perfectly symmetrical - Which also gives some richness to the face.
The first way to do this is to copy a real part of a real face.
For example here, we get the details of the nose from the scan of Olena's pack. We align the faces, we mask the area we want to transform and we can project the details in Zbrush.
Another way to make the face more convincing is to use the “move tool brush”; make the corners of the mouth asymmetrical, move an eye to make them mis-aligned, etc. Doing this step using a morph target can help as well, in order to switch and do some before/after - Or by creating a new layer per region and tweak the weight until you’re happy with the results.
Being patient is key when doing this. Don’t be afraid to take a moment off to refresh your eyes and do some minor tweaks later on.
Posing and Body
The posing is the last step of the sculpt to give life to the model. You can add a slight expression to the face, tilt the head and work the body of the model. We did a quick paintover in photoshop on our model to help a little. This is the time to get closer to your preferred reference.
Going back and forth in photoshop can be very effective, especially when using the liquify filter or wrap. For those who have some painting skills, doing some paintover at different times can help too.
Tip: It is possible to move several objects at the same time in Zbrush, to place the head with the eyes in particular, it is necessary to click on this option when you are in move:
Lookdev in Maya and Arnold
For the skin, we used the popular and well known randomwalk_v2 implemented in Arnold, in addition to 2 spec lobes and a makeup layer.
For these lookdev steps, we use the supplied HDRI you can find in the VFace packs.
To make sure your lookdev is under control, you also need to plug your macbeth color chart and check every time needed the calibration. Meaning that you aren't over exposed or under exposed, for instance.
We recommend adjusting first the spec lobes until you get a proper and lifelike skin roughness, thanks to the displacement map we supply. You can adjust the roughness with the help of the ID maps provided, and tweak them in real-time. Here we use two spec lobes from two different aiStandard Surface we mix using an aiMix Shader in Add.
As a rule of thumb, keep things simple at first, unless you think it’s really necessary to add or counterbalance something.
Therefore, we recommend playing and experimenting with the maps and nodes on a simple and separate shader before implementing them into your master skin shader. Isolating components help a lot.
The shader of the skin is rather simple:
Displace is the "XYZ_dispCalibrated_mid0_raw.1001" from the VFace Ilona pack.
Albedo is in Subsurface Color, with the ID map for the makeup and the mask to desaturate the scalp under the hair. We don't use the diffuse - Diffuse weigh = 0.
Roughness is controlled in some areas with the ID mask of the pack.
Spec is controlled with the cavity in the utility map of the pack.
Once the specular lobes have been setup properly, we recommend adding the SSS and adjusting the radius. This step is also crucial for the skin feel, adding too much SSS will make the skin look too waxy while not having much SSS will make the skin look like rock/sand. Find the right balance based on your concept (here a stylized character), or photo reference.
SSS only renders - No specular
A trick is to setup your SSS with a single (small) light to get a harsh shadow - with a very dark or even no environment. This way, you can easily detect the terminator and scatter transition.
Iris and Sclera
For the iris, we used the pack "Female HumanEyesGreen Iris #03", where you can find both Albedo and Displacement. Of course, you can also use the 3D irises from the iris collection, or even sculpt one if you like! In any case, you should pay attention to the iris/sclera transition, which should be smooth but not too much, and not too harsh which gives a cartoon look.
Tips: The iris’s transition isn’t perfectly circular, to counterbalance this, you can use the noise function in the ramp to add some subtle variations in the transition.
Painting groom masks and sculpting hair
Before starting working on the groom, we used a quick method to create the masks by using Zbrush to mask the desired area, such as the eyebrows, and converting the masks as polypaint.
Then exporting the generated polypaint as texture mask for Maya. Of course, you can use your 3D painting app such as Substance Painter to do this! We tried to stay in Zbrush as much as possible, and it takes literally a minute to use the mask > polypaint method. Easy and straightforward!
Also, as for the head's primary shape, we have sculpted the hair as geometry to help us later on to place the guides in Xgen and get an idea of the overall volume. This also helps us to determine the overall look. You can imagine this as a placeholder.
Maya- Xgen Groom
All the grooming is done with Xgen core. We start with the eyebrows using the mask painted in Zbrush.
To start placing the hair guides, we use the sculpt done in Zbrush to get the general shape.
To save some time you can right click on a guide to copy and paste its shape to another guide:
To have two separate parts of the hair in the same description we can use a region map:
The region map can be used to isolate multiple areas as if it was done separately, like another description. You can save both time and efficiency by having just one description and the same modifiers while controlling the guides separately.
Then we add the first modifier, it is the “clumping” that will separate the hair in different strands. We use multiple clumping that will make smaller strands each time.
An important thing to understand is that xgen has two ways of generating the clumping when you set it up, either with the guides (which means each guide will actually be a hair strand) or with a random generation. So for this hair groom the first clumping is made from the guides, and the next ones are randomly generated.
That first clumping gives more control on the behavior of the hair, and the other clumping are used to add details.
Then the other modifiers :
cut for more realistic variations in length
coil for volume and to get the strands to appear a bit more link together
noise for variations, the magnitude increases in each noise and the percentage of the mask decreases.
Hair details pass
To finish the groom of the hair we added small hairs, there are 3 different descriptions:
The first one to have more hair at the transition of the region map
Another for the sideburns for more control
And the last one in front of the hairline to make the transition, it's very thin hair
That's it! We hope you've learn a thing or two, and enjoyed reading this making-of! Feel free to contact us if you have any question!