Creating a layered human skin material in Cycles

In this recipe, we will create a layered skin material by using the open-content character Sintel.

Sintel is the main character of the third open movie of the same name produced by the Blender Foundation; the Sintel character and all the other movie assets are licensed under the Creative Commons Attribution 3.0 license (http://creativecommons.org/licenses/by/3.0/). The following screenshot is of Sintel's face:

Creating a layered human skin material in Cycles

Sintel's face in the final rendering

Getting ready

Start Blender and open the 9931OS_08_skin_start.blend file, where there is an already set scene with the Sintel character standing on a Plane, a Sun lamp, and a Camera.

Except for Sintel's body skin, all the other mesh objects have either gesso-like materials or eyes already assigned.

How to do it...

Let's start with the layered skin shader creation:

  1. Be sure to have the Sintel object selected, and then click on the New button in the Node Editor window toolbar or in the Material window under the main Properties panel and rename the material as skin_layered.
  2. In the Material window, switch the Diffuse BSDF shader with a Mix Shader node; go to the Active Node panel to the right of the Node Editor window (if not present, put the mouse in the Node Editor window and press N to make it appear), and in the Label slot, rename the Mix Shader as Mix Shader1.
  3. In the first Shader slot of this new Mix Shader1 node, select a Diffuse BSDF shader node, and in the second one, select an Add Shader node; label this node as Add SPEC.
  4. Add two Glossy BSDF shader nodes (press Shift + A and navigate to Shader | Glossy BSDF) and label them as Glossy BSDF_1 and Glossy BSDF_2. Set their Distribution to Ashikhmin-Shirley, and then connect their output to the first and second Shader input sockets of the Add SPEC node respectively.
  5. Add a Fresnel node (press Shift + A and navigate to Input | Fresnel) and connect it to the Fac input socket of the Mix Shader1 node. Set IOR to 1.450.
  6. Press Shift + D to duplicate the Mix Shader1 node, label the duplicate as Mix Shader2, and paste it between the Mix Shader1 and the Material Output nodes.
  7. Press Shift + D to duplicate the Add SPEC node, label the duplicate as Add SSS, and connect its output to the first Shader input socket of the Mix Shader2 node, so that the connection that comes from the Mix Shader1 node automatically switches to the second Shader input socket. Connect the output of the Mix Shader1 node also to the second Shader input socket of the Add SSS node.
  8. Add a Subsurface Scattering node (press Shift + A and navigate to Shader | Subsurface Scattering) and connect its output to the first Shader input socket of the Add SSS node. Set Falloff to Gaussian; Scale to 0.050; Radius to 4.000, 2.000, and 1.000; and the Texture Blur value to 0.100, as shown in the following screenshot:
    How to do it...

    The basic shader

  9. Add an Image Texture node (press Shift + A and navigate to Texture | Image Texture) and label it as EPIDERMIS; connect its Color output to the Color input sockets of the Diffuse BSDF and Subsurface Scattering nodes and the two Glossy BSDF nodes.
  10. Click on the Open button of the EPIDERMIS image texture node, browse to the textures folder, and load the sintel_skin_diff.png image.
  11. Add two ColorRamp nodes (press Shift + A and navigate to Converter | ColorRamp) and label them as ColorRamp_Spec1 and ColorRamp_Spec2. Connect the Color output of the EPIDERMIS node also to the Fac input socket of both the ColorRamp nodes.
  12. Connect the Color output of the ColorRamp_spec1 node to the Roughness input socket of the Glossy BSDF_1 shader node; set Interpolation to Ease, and move the black color stop to the 0.550 position and the white color stop to the 0.000 position.
  13. Connect the Color output of the ColorRamp_spec2 node to the Roughness input socket of the Glossy BSDF_2 shader node; set Interpolation to B-Spline, and move the white color stop to the 0.100 position and the white color stop to the 0.000 position, as shown in the following screenshot:
    How to do it...

    Sintel's color map is directly connected to the shader nodes but is modulated through ColorRamp nodes for the roughness of the glossy nodes

  14. Add a Hue Saturation Value node (press Shift + A and navigate to Color | Hue/Saturation), label it as Hue Saturation Value DERMIS, and paste it between the EPIDERMIS and Subsurface Scattering nodes. Set the Hue value to 0.470, the Saturation value to 1.500, and Value to 1.200.
  15. Add a new Image Texture node (press Shift + A and navigate to Texture | Image Texture) and a Bump node (press Shift + A and navigate to Vector | Bump); label this Image Texture node as BUMP, and connect its Color output to the Height input socket of the Bump node, and the Normal output of this node to the Normal input sockets of the Diffuse BSDF node, of the two Glossy BSDF nodes, and of the Subsurface Scattering nodes.
  16. Click on the Open button of the BUMP image texture node, browse to the textures folder, and load the sintel_skin_bmp.png image. Set Color Space to Non-Color Data and the Bump node's Strength value to 0.100, as shown in the following screenshot:
    How to do it...

    The same color map modified for the SSS node and the bump map connected as per the shader bump

How it works...

In this recipe, we used a layered approach to build the human skin shader, but what does layered mean exactly?

It means that the shader tries to simulate the behavior of real human skin in the most effective possible way. I'm referring to the fact that the human skin is composed of several different overlapping and semi-transparent layers that reflect and absorb light rays in various ways, giving the reddish coloration to certain areas due to the famous subsurface scattering effect.

Now, a perfect reproduction of the real human skin model is not necessary; usually, it's enough to use different image maps for the key components of the shader, each one added on top of the other: the base color, the dermis blood layer, the specularity map, and the bump map.

In our case, we had at our disposal only two image maps, the sintel_skin_diff.png color one and the sintel_skin_bmp.png gray-scale map, which we used straight for the bump; we could have obtained the missing maps with the aid of an image editor (such as, for example, GIMP), but for the sake of this exercise, to obtain the required missing images, we used the nodes: so, starting from the EPIDERMIS layer, that is the color map, we obtained via the Hue Saturation Value DERMIS node the blood-vessel layer that lies beneath the epidermis, as shown in the following screenshot:

How it works...

The normal color map and the blood-vessel version rendered separately

By the use of the two ColorRamp nodes and the two gray-scale versions for the specularity component, one sharp specularity map and a softer one are shown in the following screenshot:

How it works...

The two different glossy maps obtained from the same color map and rendered separately

Then, the sintel_skin_bmp.png map has been connected to the Bump node for the per-shader bump effect.

Note that because we used the color map to obtain all the others, certain areas of the images are wrong; for example, the eyebrows, shown in pure white on the specularity maps, should have been removed. In any case, this doesn't show that much on the final render, and the result is more than acceptable.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.226.200.172