Creating Realistic Skin in Substance Painter 1: Height

Making Of / 20 May 2022

Over the past year I've focused on my Sculpting skills, this lead to me ignoring some of the other necessary skills necessary for good Character Art. To rectify this I did a deep-dive into creating realistic skin using ZBrush and Substance Painter, for rendering in Unreal Engine 4. Through this little series I'll be detailing how I made the Height, Diffuse, Roughness and Subsurface maps. As well as some experiments I did along the way. 

When it comes to creating skin, or texturing any character model a good first step is height detail. Good height and normal details create the necessary bake data for our Diffuse and Roughness portions to be far more detailed, far easier. 

Necessary Skin Details: 

  • Pores
  • Micro-creases/Skin Direction
  • Necessary Variation

I will refrain from including too detailed reference images because they can get kinda gross. 

EXPERIMENT: TEXTURING DETAILS VS SCULPTING DETAILS

Texturing Details

Substance painter has a rather large collection of Skin Materials to be used on different parts of the body. These can range from something as small as lip details to something as large as back creases. When I started this project I decided to see how far I could get with these materials alone. Spoiler Alert: Not Very Far. 

The process involves 3D projecting the tileable materials onto the mesh, increasing the tiling, and masking out where you want them to be. With the occasional 2D material needing to be translated to the right spot in UV space.

Here are the results of the face. It's kind of there but it doesn't fit on the face right. The pores around the nose area are too intense, even at 1% intensity. The pores and wrinkles here, even at higher resolution, don't look they have much direction or purpose. It just looks like noise in some areas. Creating good variation in pore size will fill up your layer stack quickly, something I'm not especially comfortable with. Overall, not a completely unexpected outcome. 

QUALITY:  These materials can only go so far. For the purposes I want, they simply don't go far enough. They're a pretty quick way to get something. They might come in useful to supplement any spots I miss when I sculpt these details.

COMFORTABILITY: The process of dragging in, changing the scale, changing the intensity and THEN masking out specific areas is one I find very clunky.

EFFICIENCY: These materials come built in. No need to go Alpha hunting on the Marketplace. For creating a base layer of Skin Pores or Skin Creases this is far quicker than creating it in a sculpting program, baking it, and then continuing to work in Substance Painter. 


Sculpting Details

In contrast, ZBrush has very little skin resources built in. There's a couple things that Noisemaker can do but that suffers from similar drawbacks as texturing details above. This is 50% a process review, and 50% shill of J Hill's Skin Detail's Kit. I used the brushes there to create varied skin details of a consistent quality. Despite this, remember, the best alphas and brushes are useless in the hands of someone that doesn't know how to use them. 

Sculpting these details by dragging out an alpha will immediately create some variation in Pore and Wrinkle Sizes, making our skin look far more natural. The difference here is subtle but enough, and we can immediately use our Mesh Maps to drive our skin details. There isn't much to say other than:

QUALITY: The overall quality is greater because I have more control over the Size and Intensity of these details. We don't have to worry about any tiling textures or scrolling through Substance Painter for us to add exactly what we want. 

COMFORTABILITY: I sculpt everything as much as I can, so sculpting these details in Zbrush is essentially second nature. The only drawback I have is how many polygons are needed for these details to come through, I'm working on a decent laptop but even then it chugs when I get to a high resolution. 

EFFICIENCY: This is where Substance has got Zbrush beat. At least for me, dragging out Zbrush Alphas and brushing in details takes longer than adjusting parameters and masking. Though we don't have to do any fiddling about with height-to-normal filters or anchor points for our height details to start driving our diffuse and roughness maps later down the line. 


=============================================================

With that experiment over, let's get into HOW and WHY we can create proper height detail. 

All these following techniques work throughout the whole body but for focus I'll be keeping our attention on the face here. 

Step 1 will be adding skin pores! This is pretty easy but be wary if you have any form of Trypophobia. Good reference is key, so make sure to get some high quality, high resolution images. Size, Depth and Variation are the only things to keep an eye on. Working with something like ZBrush layers is a great way to have a lot of control over the depth of the Skin Pores. I always over sculpt so that I can use my layers to reduce it a little bit. Keeping our attention on the face, we can see here:


 Our skin pores exist! They're there. It still looks off though. Something isn't right, and that's because our skin lacks DIRECTION. What do I mean by this? Our skin is very squishy, and our body moves a lot. Skin Direction is essentially the micro-creases in our skin caused by simply moving. It adds flow and breaks up all the holes in the skinSkin direction, these micro-creases flow perpendicular to how our skin moves. After looking across some reference, I made this little guide for the face.  

All these arrows are how the little micro-creases across the face flow, this is only a general guide because all faces are different. But this is what it would usually look like. When it comes to brush work inside of ZBrush, I used J_FineWrinkles from this, although if you don't have J Hill's Skin Detail's Kit the Dam Standard with Alpha 60 set to Colour Spray will work just fine! If we follow the guide above and add micro-creases in the areas and directions above on a new Zbrush layer we could come up with something like this: 

Our skin has little creases and with it: direction! Adjust this layers intensity however you want, the deeper the creases, the older your character will look. These are two pieces of a whole, so after we add our creases it's time to turn on the pores and adjust the intensity of both. Our goal here is to marry them together. There's no tricks here, just make sure you have good reference and a keen eye.

 

And here it is! A face with some good height detail. After baking we should have some excellent AO, Curvature, and Thickness maps to drive the rest of our texturing process. 

Thanks for reading along! Up next is all about creating the Diffuse map.

Creating Realistic Skin in Substance Painter 3: Roughness and Scattering

Making Of / 20 May 2022

Over the past year I've focused on my Sculpting skills, this lead to me ignoring some of the other necessary skills necessary for good Character Art. To rectify this I did a deep-dive into creating realistic skin using ZBrush and Substance Painter, for rendering in Unreal Engine 4. Through this little series I'll be detailing how I made the Height, Diffuse, Roughness and Subsurface maps. 

We've got our Diffuse map done and dusted. In my opinion, that's the hardest part. Roughness is pretty easy, we just need to have good reference, a keen eye and make sure to break up the homogeny. We've already done similar to this with Fill Layer Dirt 4... set on multiply. It's the same sort of practice going ahead, just with more control over layers. All new fill layers will have only roughness data. No Colour. No Metallic. No Height. Only Roughness.

Now, getting started here is a lot easier than getting started with the base Colour of the skin. We get a Fill layer, set it to only roughness and set roughness to 1. Look at that, so easy I don't have any little videos to show the process. Now, I know I just said there's no base colour data but this is the One Exception. Set the base colour to digital black, this gives us a really easy way to see the effect of our roughness maps. 

 This base layer is also our Cavity Roughness, so all our other layers are going to be built up from this. To make this cavity roughness, well, CAVITY roughness our next layer has to be only the peaks of our model, this could be done thorough an elaborate series of AO masks and paint layers OR we could use a Curvature Mask like we did in the previous part. 

Create a Fill Layer with only roughness data and set the roughness value between 0.4 and 0.5. Add a Bitmap Mask using our curvature mask and then add a Blur Filter with a small intensity to remove any sharp edges. 


Now our cavity's are nice and rough while our peaks have a very different value! Great! But, just like when it comes to the Diffuse the key thing is 

BREAKUP BREAKUP BREAKUP

So our next couple layers are going to be all about that. Next, create 2 more fill layers. Set the first one to have a roughness value greater than our Curvature Roughness but less than our Base Layer, I put mine at about 0.6-0.7. The second one should have a roughness value lower than our Curvature Roughness, I usually put this between 0.1-0.2. Mask these out with a fill of either Clouds 3 or BnW Spots 1. Let's do that all now.


Adjust the blending modes and opacity to something you find satisfying. Remember, the goal here is breakup and variation. 

That's about as far as we can go with automation and basic fill masks. The rest is handpainting the SHINY areas. Around the eyes, around the lips and nose, in places where sweat builds up like the armpits, under pecs, even the hands to a degree. I put the tear ducts on a new layer and make that EVEN shinier. And then for even MORE breakup, I create a new layer, set it's roughness value to about 0.25 and hand paint some areas with a spots brush, I usually put this on areas where the skin moves, and where it sweats, the forehead, breaking up the eyes and mouth, around the cheeks, under the neck. Just some more breakup and non-uniformity. 

Let's do all that now.  

That's really hard to see in the Material view, let's switch to the roughness view. 

That's WAY clearer for us to see. Continue this process throughout the whole body, keeping in mind where sweat and occlusion would occur and you'll have a perfectly shiny body in no time. Change the blending modes and opacity as you see fit, every body, face and project is different! When you think you've got all your layers, create a new folder and put them all inside and set that folder's blending mode on Base Colour to Screen. That'll remove the digital black we created to see all our roughness details. 


Now, onto scattering. Scattering's the EASIEST part here because it relies on a mesh map we already baked out. Thickness! The techniques here aren't hard, they're just a little repetitive. Just make sure you have your scattering maps enabled in Substance. Pull up your texture set settings, go down to channels, hit that little icon and click on scattering. Just like that we can work on our scattering maps. The whiter the value, the more intense the scattering. 

So. Scattering step 1: the Base!

This is the easiest bit yet. Create a fill layer, set the scattering value to something really low, under 0.1. This is the base SSS of the whole body, it's not much but in a renderer like Unreal or Marmoset this little bit goes a long way. 

Next, create a new fill layer and mask it off based on your thickness, just like we did with the roughness at the very start. Add a Levels and Invert. Now we're going to create the slightly more intense SSS that happens around the cavity's in our body. We do the same thing as we did in the last step but with Curvature instead of Thickness and adjusting the levels a little more extremely. 


Next comes the more specific parts, like the face, the hands, and the feet. The goal here is control and consistency while SSS looks good, too much destroys the detail in our Diffuse and Roughness maps. This is where the Levels we've been using comes in really handy.  The whitest part of our whole model should be the ear and nose. Depending on how your Thickness map was baked we might have to separate our detailed SSS into three layers. For the Face, Hands and Feet. Let's start with the face.

Using a Thickness mask and some Levels our goal is make the ears the most intense while generally reducing the SSS of everything else. This isn't hard just finicky. 


That's pretty good, now just mask out everything below the neck and we can move on! Usually I leave whatever blending modes the layers are on up to you, but when it comes to Scattering I highly recommend everything except the base layer be set to screen. That way we can build up our scattering detail without destroying what's underneath. 

Usually this is where I'd leave it, all the concepts and practices here are easily applicable to all the other areas of the body but I find Scattering to be really finnicky, so I'll cover the hands and feet as well. 

When it comes to the hand, the tips of the fingers should have the most intense scattering, but not more intense than the ear, or even the nose. I think the chin is a good reference in value. It's a thin amount of skin over almost direct bone. The rest of the fingers should have a bit of a gradient before completely fading into the palm. The feet is almost the exact same thought process.  The method is the exact same as the face, Thickness Map, Levels, Paint out. 

And just like that we're done! Overall not that hard, just requires a little know-how, some good reference and a keen eye. That's a full human person, of course there's going to be some LookDev in your renderer of choice but that's about as far as we can push it in Substance. 

After setting up in Unreal Engine 4 we can see our final result. 

It looks good! Detailed height, very natural colour, believable wetness and roughness and good SSS.


Thanks for reading along! I hope this is all useful to you.  

Fish Monster Texturing - Iterative Texture Design

Making Of / 25 November 2020

Over the past 10 weeks I have been making a Fish Monster for a short film production. My responsibilities were to design, sculpt, retopologise and texture the Monster. Taking on board the feedback of both my team and other teams I have iterated and improved on the design. 


The First Pass - Rushing, Uniformity, Smart Masks





For the first pass I rushed through and didn't come up with a proper design or colour scheme before texturing. As was pointed out to me, the uniformity of the scales and lack of apparent colour scheme are unappealing and lack inspiration. The fleshy parts around the face are too red and saturated and the scales are unreadable from far away. I took this feedback onboard and started my second design, keeping those design aspects in mind I attempted my second pass. 


The Second Pass - A Colour Scheme and Readability


This design was received better than the previous one, I focused only on the torso to limit what I had to pay attention to, and focus on getting one UDIM tile perfect. A well thought out colour scheme on the body and the increase in scale size. Feedback I got for this pass was that the scales were still too small and uniform and that the skin could use more of a colour breakup.


The Third Pass - Refinement and more UDIM tiles



The Fourth Pass - Scales, Transitions and Scattering


After completing the final texture of the body scales I got feedback that the transition from hard scales to soft flesh was too abrupt and that a transition material could be a thing to try. I based this transitionary material off of rough Shark Leather. I used the Thickness Map I baked out of Marmoset as a base for the Scattering, I then clamped down the values and handpainted elements to help with the transition across UDIMS. 


I us



The Final Render

Overall I am happy with the final product and the amount of work I put in to get it there. The last bit is tweaking the Sub-Surface Scattering inside of Renderman to get a more realistic look.