Chun Chun Yang shared a detailed step-by-step tutorial on how to create a realistic skin texture in Substance Painter using resources from Texturing XYZ and Substance Source.
In case you missed it
You might find these articles interesting
Hey there, my name is Chun Chun and I am a Senior Texture Artist working in the film industry. I worked in such studios as Industrial Light & Magic, Digital Domain, Sony Picture Imageworks, and Prime Focus and contributed to various projects including “Ready Player One”, “Bumble Bee”, “Aladdin”, “Beauty and the Beast” and more.
In this article, I want to show you how I created skin texture in Substance Painter for a real-time character.
More specifically, you will learn:
- Tips and tricks on how to make sure your model is texture-ready
- How to efficiently utilize Texturing XYZ Multi-channel Face Texture to create customizable displacement maps for your skin texture
- How to utilize your displacement maps in ZBrush to create a high-resolution face geometry
- How to use that high-resolution geometry to bake skin displacement maps in Substance Painter
- How to improve your displacement maps in Substance Painter
- How to paint the base colors of the skin
- How to add interesting details and imperfections to your skin texture
Since this character is wearing armor, I imagine she has some skin parts exposed to the sun for a long period of time. I plan to not give her any makeup and make her skin a bit rough. Here are some references I used:
Step 1: Modeling and Sculpting
To achieve a realistic style we need to make sure the model is up to the task. Even though I am not a professional modeler by training, I can offer you a couple of tips that helped me greatly.
Watch Out for the Eyes and the Mouth
You need to make sure that the typology for the mouth and the eyes follows the structure of the anatomy. A full loop around both areas is crucial to be able to recreate the intricate corner structure.
Have a Geometry Representing the Eyeballs When You Sculpt the Eyes
Capturing the volume of the eyes is one of the trickiest things when it comes to sculpting a face and I found that having the eyeball volume there helps a ton! Also, making sure the eyeball volume is at the right spot of the head really helps me placing the eyes at the correct place!
Step 2: Create Skin Detail Displacement
After we give the face proper anatomy, we need to create the skin details and this is when Texturing XYZ multi-channel maps come in really handy! There are only two steps in this process, projecting the skin details and displacing the skin details.
Project the Skin Details in Substance Painter
We will be using the Multi-channel Face Texture. Within R, G, and B channels of this map, we will get a broad level of detail, a mid level of detail, and a fine level of detail of the face. If we displace these 3 levels separately in ZBrush, we will have great control over how we want our skin to look like. In this tutorial, I will show you how to project this map in Substance Painter so we can extract these 3 levels of maps.
- Open Substance Painter, start a new project with the base geometry of the face.
- Select the projection tool, and import the multi-channel map as a texture map.
- Create a new paint layer, drag the multi-channel map into the base color slot, and start projecting.
- Press “S” to control your stencil.
Move the projection around to best match your own geometry, and make sure you cover the entire face.
Once you finish your projection, you will need to isolate the red, green, and blue channels to get our separate displacement maps with different levels of details.
Add a level to the paint layer; if we intend to isolate the red channel, select the green and the blue channels and take them all the way to zero. Then use an HSL filter to get a greyscale map.
Once you isolated all three channels, export them!
Here are the 3 maps I was able to get from this process:
Displace the Skin Details in ZBrush
A great advantage of the multi-channel maps is that we have three levels of details to play with hence adding more characteristics to our character! To do that we will need to displace each level of detail on its own layer in ZBrush. Remember to flip your map vertically before displacing because in ZBrush the UV is flipped upside down; you can do this either in Photoshop or ZBrush.
Now let’s import the maps into ZBrush! To displace the maps in ZBrush you will need to:
- Subdivide your mesh to make sure there is enough resolution.
- Create a new layer and make sure it’s in recording mode.
- Turn on texture.
- Turn on displacement map and import the texture.
- Adjust displacement intensity to something you like.
- Apply displacement.
- Adjust the layer to change displacement intensity.
Repeat this process until you have all three maps in ZBrush on three different layers. Now you can adjust the layer intensity until achieving the desired look. This is where you can add some story to your character. I imagined that this character's skin was not in the best condition, so I intentionally left the broad and mid levels of detail a bit stronger so that her skin looked a little bumpy.
Step 3: Bake High-Resolution Details in Substance Painter
Now that we are happy with our high-resolution mesh, we need to make sure that we get the same information in Substance Painter! We have to bake our high-res mesh onto our low-res geometry.
Export the High and Low-Resolution Mesh Out of ZBrush
We will need both the low-resolution mesh and the high-resolution mesh to complete the baking process in Substance Painter and we will export these geometries out of ZBrush.
To do that, use the merge visible tool to merge all the subtools into one mesh. Make sure to preserve UVs. Uncheck Grp under export then export the Obj.
For the high-resolution mesh, depending on how heavy your model is you can use the same method to export an Obj, or you might need to decimate the mesh in advance.
Map Baking in Substance Painter
Once you have two levels of geometry ready, we can start the baking process in Substance Painter.
Import the low-res mesh. I will set my texture resolution at 4k. I think it is a decent size for the entire face where I can create all the details I need.
Let’s set up the bake! Make sure you select your high-resolution geometry. I leave all the other settings at default, from my experience they generate great results. Then just press bake!
Once the bake is finished, definitely check the face carefully and make sure that you are seeing the results you expected and the details match what you see in ZBrush. If you are happy with the result, you can start the texturing process!
Step 4: Skin Texturing
Finally, we arrived at the reason why we were doing any of the previous steps! Let’s paint the skin! Here are the main steps to come:
- Improve Face Displacement Details
- Layout Major Color Variations of the Face
- Breakup the Color
- Add Roughness and Scattering
- Add Skin Imperfections
Improving Face Displacement Details
Sometimes due to the quality of the projection, we might not get everything we wish from the projection process. But don’t worry, we can fix everything in Substance Painter!
After baking this character, I realized that the nose tip and the mouth were both lacking displacement details. Luckily, in Substance Painter, there is a Human Nose Tip Skin material we can use to fix that!
Here is what you can do to improve your displacement details:
- Select the skin material you need from the material section in Substance Painter
- Assign the skin material to a new fill layer
- Make sure this skin material only affects the height value
- Adjust the tiling and height of this material until it arrives at your desired look
- Assign a black mask to the fill layer
- Use a soft brush to paint on this black mask, and reveal the skin material in areas that need more details.
I did the same process with the mouth area and here is the improvement I was able to get!
Laying Out Major Color Variations of the Face
Now that we have great displacement details, we can focus on the color of the face! While we are working on the color distribution, we will set the skin material roughness to pure white so we can view the color we are painting without the interference of spec.
The first color we create is a neutral skin tone color as a base for the rest of the paint. To do that, create a new fill layer, let it affect only the color of the material, and choose your skin tone in the base color slot. Which base skin tone you choose really depends on the character you are creating. For this character, I wanted to make the skin a bit more tanned, because I imagine her being outdoors quite a bit, so I chose a brownish color.
The next skin tone I want to work on is the reddish tone of the face. To do that, add another fill layer that only affects color, choose the kind of red you wish in the base color slot. Assign a black mask to this fill layer, choose a dirt brush with low opacity and low flow, and paint on the areas that you want the reddish color to show up on.
Repeat the same process until you have all the colors you want on the face!
The colors I created are:
- A neutral tone as the base
- A reddish tone for mostly the center of the face or any areas that have a lot of blood flowing underneath
- A yellowish tone mostly for the upper face or any areas that are closer to the bone with less blood flowing underneath
- A blueish/purplish tone for the corner of the eyes, nose, lips
- A darker reddish tone for the eye circle and corner of the nose
- A greenish tone for small areas that are really close to the bone
You should be able to get a decent color following these general color directions. Depending on the ethnicity and skin quality of your face, you will need to adjust them in your own way. This is where you can be creative and have some fun!
Breaking Up the Color
It’s great that we have all these colors on the face now, but they do look very airbrushed and unnatural. When you look at a face, everything can seem very soft but there is a spotty quality to the colors. We can achieve a photo-realistic look by using only a texture brush but that can mean a lot of hand-painting and will require more time. I found that using a procedure map to break up your hand paint is a faster way to achieve that specific skin quality.
What I decided to do is to create a new fill layer on top of my black mask that I have been painting on to reveal the colors. Then I will assign a procedure map to the fill layer, adjust its intensity and density, and multiply on top of the black mask to break up my hand paint.
We will use BnW Spots 1 to break up the color mask we just painted to give the color that spotty look!
I repeated the same process for all my colors and adjusted the procedure map to get the look I like.
Adding Roughness and Scattering
Once we are happy with the color of the skin, we can start to work on our skin roughness.
For this skin texture, I decided to completely separate different material elements such as color, roughness, and scattering into their own fill layers for better control and clarity. After separating the roughness into its own fill layer, any new fill layer I create from this point on will only affect the roughness of the face.
The first thing I created is a base fill layer which has no roughness, it’s pure white. Then I added another fill layer on top and gave it a general roughness which is around .4. Of course, you should adjust this level according to the skin quality you are going for.
After that, I will use the curvature mask we baked in Substance Painter to merge these two layers together. You can see that the pore area is a bit whiter which is what we want. We want the roughness to be different between the pore area and the smoother area.
To do that, create a black mask for the second fill layer with roughness quality, create a fill layer inside of the mask and assign the curvature map to it. Then you will most likely have to add a level on top to adjust the curvature level to better control the blending. I would suggest adding a blur filter on top as well to soften the details. Now you can tweak all the adjustments until you are happy.
Once I am happy with my broad roughness quality for the entire face, I want to have better control over some specific areas of the face.
I created another fill layer on top that has very high roughness with a black mask, so I can paint in any area where I thought the spec was too much. I repeated this process again but this time with a fill layer that has low roughness to add more spec to some areas, mainly around the eyes, mouths, and tip of the nose.
The way I created my scattering fill layers is exactly the same. Only this time it’s much simpler. I only have a base scattering and another fill layer on top to add in some extra scattering for the tip of the nose and the mouth. You can also experiment with the thickness map that was baked in Substance Painter as a scattering map. My scattering was so simple that it was not necessary.
Adding Skin Imperfections
At this point, I am quite happy with the basic color and skin quality of this face, but it still lacks realism. Real-life skin is greatly imperfect, and to complete our texture, we need to add details of imperfection. Things like freckles, acne, blackheads, dry skin, scars, moles, etc. are great details to add to make your character look more alive.
In the past, to add details like that, I would find high-quality photos, project those details onto my character and find a way to blend them into my skin or I'd look for procedure masks that resemble those details.
But then I discovered Skin Micro Details in Substance Source library where they have premade skin materials including skin imperfection such as freckles, moles, acne, etc. and I figured this was a great chance for me to experiment with this new method.
The shaders I used on this character are Skin Freckles, Skin Cracks, Skin Blackhead Acne, and Skin Mole.
The process of using these shaders is the same as any other shaders in Substance Painter:
- Create a new fill layer.
- Assign one of these materials to your fill layer.
- Make sure you turn skin color off so it doesn’t overwrite your own skin color.
- Play around with tiling, intensity, density, color variation, etc. until you get the look you like.
- Assign a black mask to this fill layer.
- With a soft brush, paint on the areas that you want these imperfections to appear on.
Here are all the imperfections I used on my character:
Last but not least, for the eyelashes, I assigned a flat black fill layer to the geometry.
For the eyes, I used the eye material from Substance Source. I assign the material to a new fill layer and adjusted the scale and position until it was on the correct part of the eye geometry. There are quite a few adjustments you have available in the eye shader such as eye color, vein density, etc. for you to customize the look of the eyes.
That is the complete process of how I created the skin for this real-time character using resources from Texturing XYZ and Substance Source.