- In the materials list inside the Material window, select the
Material_U0V0
(the first top one) and press Ctrl + left-click on it to rename it as Material_skin_U0V0
; then, move down and click on the Use Nodes button inside the Surface subpanel.Immediately, a Diffuse BSDF shader node (already connected to a Material Output node) appears inside the Node Editor window to the left of the screen and listed in the Surface slot inside the Surface subpanel to the right:
- In the Surface subpanel, under the Material window, click on the Surface slot that now shows the Diffuse BSDF shader: in the pop-up menu that appears, select a Mix Shader node:
The Surface slot now shows the Mix Shader node item, and right below there are two new Shader slots that at the moment show the None item; in fact, looking at the nodes inside the Node Editor window, we see that the Diffuse BSDF shader node has been replaced by a Mix Shader node, and that the two (green) Shader input sockets are still empty:
- Click on the first Shader slot under the Surface subpanel to select, again from the pop-up menu, a Diffuse BSDF shader node; click on the second Shader slot and select a Mix Shader node; both the two new nodes are added and connected to the proper input socket, as we can see in the Node Editor window:
At this point, to avoid confusion, it's already better to start to label the various nodes with meaningful names.
- Put the mouse pointer inside the Node Editor window and press the N key to call the Properties sidepanel.
- Select the last Mix Shader node we added to the material and then go to click on the Label slot inside the top Name subpanel of the side Properties panel: type Mix Shader1:
- Select the other Mix Shader node (the old one) and repeat the procedure by labeling it as Mix Shader2:
- Put the mouse pointer on the 3D viewport and press the 0 key on the numpad to enter the Camera view.
- Press Shift + B and by left-clicking draw a box around the head of the Gidiosaurus character to crop the area that can be rendered.
- Zoom to the red square by scrolling the mouse wheel and then press Shift + Z to switch the Viewport Shading mode to Rendered:
- Put the mouse pointer inside the Node Editor window and press Shift + A. In the pop-up panel that appears, navigate to Shader and then click on the Glossy BSDF item to add the node; as it appears, move the mouse to place it to the left side of the Mix Shader1 node.
- Label it as Glossy BSDF1, connect its output to the first top Shader input socket of the Mix Shader1 node, and set Distribution to Beckmann:
- Add a second Glossy BSDF shader node (Shift + A | Shader | Glossy BSDF) and place it right under the previous one; label it as Glossy BSDF2, connect its output to the second Shader input socket of the Mix Shader1 node, and set Distribution to Beckmann as well and the Roughness to 0.400.
- Set the factor value (Fac) of the Mix Shader1 node to 0.350:
- Add a Fresnel node (Shift + A | Input | Fresnel) and connect its Fac output to the Fac input socket of the Mix Shader2 node; set the IOR value to 3.840. Set the Roughness value of the Diffuse BSDF shader node to 0.500:
- Add a Subsurface Scattering node (Shift + A | Shader | Subsurface Scattering) and an Add Shader node (Shift + A | Shader | Add Shader). Move this last one to the link that connects the Mix Shader2 node to the Material Output node in order to paste it automatically between the two nodes (automatically when the connection line becomes highlighted):
- Connect the output of the Subsurface Scattering node to the second Shader input socket of the Add Shader node. In the SSS node, change Fallof from Cubic to Gaussian, set the Scale to 0.001 and click on the Radius button to set the RGB to 9.436, 3.348 and 1.790:
- Add a new Mix Shader node (Shift + A | Shader | Mix Shader) and label it as Mix Shader3. Connect the output of the Mix Shader2 node to the first Shader input socket of the Mix Shader3 node, and the output of the Add Shader node to its second Shader input socket. Set the Fac of the Mix Shader3 node to 0.250 and connect its output to the Surface input socket of the Material Output node:
- Add a Frame (Shift + A | Layout | Frame), box-select all the nodes (except the Material Output node) and then press Ctrl + P to parent them to the frame; label the frame as SHADERS.
- Select the SHADERS frame and go to the Properties sidepanel. Expand the Color subpanel (right under the Node subpanel) by clicking on the little horizontal black arrow, and enable the Color checkbox.
- Click on the color slot and set a light color of your choice (I set it to RGB 1.000, which is totally white). Then click on the + icon button to the side and in the Name slot of the Add Node Color Preset pop-up panel, write Frame, then click the big OK button.
- Select the Material Output node and then Shift-select the Frame again, then go to the Color subpanel and click on the big vertical arrow under the + and – icon buttons to the side. Click on the Copy Color item to copy the color of the Frame to the Material Output node:
- Select any one of the other nodes, for example the Fresnel node, enable the Color checkbox and set a new color of your choice (for these nodes, I set it to R 1.000, G 0.819, B 0.617, which is a light brown).
- Click on the + icon button to the side and in the Name slot of the Add Node Color Preset pop-up panel, write Shaders, then click the big OK button.
- Now box-select all the other nodes inside the frame and click on the Copy Color item to copy the color from the Fresnel node to all the other selected nodes at once:
At this point we have completed the basic shader for the skin; what we have to do now is to add the textures we painted in both Chapter 10, Creating the Textures, and Chapter 11, Refining the Textures.
So:
- Put the mouse pointer into the Node Editor window and add an Image Texture node (Shift + A | Texture | Image Texture); label it as COL and then use Shift + D to duplicate it; move the duplicated one down and change its label to SCALES.
As you label the newly added nodes, also assign colors to them to make them more easily readable inside the Node Editor window, and save these colors as presets as we did at step 20.
- Click on the Open button of the COL node and browse to the
textures
folder. There, load the image U0V0_col.png
. - Click on the Open button of the SCALES node and browse to the
textures
folder. There, load the image U0V0_scales.png
; set the Color Space to Non-Color Data. - Add a MixRGB node (Shift + A | Color | MixRGB) and label it as Scales_Col; connect the Color output of the COL node to the Color1 input socket of the Scales_Col node and the Color output of the SCALES node to its Color2 input socket. Set the Fac to 1.000 and the Blend Type to Divide.
- Connect the output of the Scales_Col node to the Color input socket of the Diffuse BSDF shader node inside the SHADERS frame.
The result so far is visible in the real-time rendered preview to the right:
As you can see, the glossy component is strong in this one! We must lessen the effect, to obtain a more natural look.
- Add a new MixRGB node (Shift + A | Color | MixRGB) and label it as Col_Spec; set the Color2 to R 0.474, G 0.642, B 0.683, then also connect the output of the Scales_Col node to the Color1 input socket of the Col_Spec node.
- Set the Fac value to 0.150 and the Blend Type to Add, then connect its output to the Color input sockets of both the Glossy BSDF1 and Glossy BSDF2 nodes:
- Press Shift + D to duplicate the Col_Spec node and label the duplicate as Col_SSS; set the Fac value to 1.000 and the Color2 to R 0.439, G 0.216, B 0.141. Connect the Color output of the Scales_Col node to the Color1 input socket of the Col_SSS node and the output of this latter node to the Color input socket of the Subsurface Scattering node; increase its Texture Blur to the maximum value.
- Shift-select the Col_Spec and the Col_SSS nodes and then also the SHADERS frame, and press Ctrl + P to parent them:
The new result looks a lot better:
- Add an Attribute node (Shift + A | Input | Attribute) and label it as Attribute_UV1. Connect its Vector output to the Vector input sockets of the COL and SCALES nodes and in the name field type UVMap:
By the way, the glossy component is still a little unnatural.
- Add a new Image Texture node (Shift + A | Texture | Image Texture) and label it as VCOL. Click on the Open button, browse to the
texture
folder and load the image vcol.png
. - Press Shift + D to duplicate the Attribute node, change the label to Attribute_UV2, and change the Name field to UVMap_norm. Connect its Vector output to the Vector input of the VCOL node.
- Add a Math node (Shift + A | Converter | Math) and a MixRGB node (Shift + A | Color | MixRGB); connect the Color output of the VCOL node to the first Value input socket of the Math node; label this one as Spec_soften and set the second Value to 0.007. Connect its Value output to the Color1 input socket of the MixRGB node, which is now labeled as Mix_Spec.
- Connect the Color output of the Mix_Spec node to the Roughness input socket of the Glossy BSDF1 node:
The specularity is now a bit more realistic:
Anyway, it's still missing the contribution of the bump effect.
- Add a Bump node (Shift + A | Vector | Bump); connect the output of the SCALES node to the Height input socket of the Bump node and the Normal output of this latter node to the Normal input socket of the Diffuse BSDF, Glossy BSDF1, Glossy BSDF2, and Subsurface Scattering nodes. Set the Strength of the Bump node to 0.500:
Now we start to see something!
By the way, the bump pattern is too even and, therefore, unrealistic; we must therefore break it in some way.
- Add a Noise Texture node (Shift + A | Texture | Noise Texture) and a Texture Coordinate node (Shift + A | Input | Texture Coordinate). Connect the Object output of the Texture Coordinate node to the Vector input socket of the Noise Texture node, then set the Scale of the texture to 50.000.
- Add a Math node (Shift + A | Converter | Math) and a MixRGB node (Shift + A | Color | MixRGB). Connect the Color output of the SCALES node to the Color1 input socket of the MixRGB node, and the Color output of the Noise Texture to the Color2 input socket.
- Set the MixRGB blend type to Add, the Fac value to 1.000 and label it as Scales_Noise. To see the effect, connect its Color output to the Height input socket of the Bump node (but this is going to change very soon, so it's not mandatory at this step):
- Select the Math node and move it on the link connecting the Noise Texture node with the Scales_Noise node to paste it in between them: set the Operation to Multiply, the second Value to 1.000, and label it as Multiply_Noise.
- Press Shift + D to duplicate the Multiply_Noise node, change the label to Multiply_Scales and the second Value to 4.000; paste it between the SCALES node and the Scales_Noise node.
- Add an RGB to BW node (Shift + A | Converter | RGB to BW) and paste it between the Noise Texture node and the Multiply_Noise one:
- Press Shift + D to duplicate the Multiply_Scales node and change the duplicate label to Multiply_Bump; connect the output of the Multiply_Scales to the first Value input socket of the Multiply_Bump node and the output of the Scales_Noise node to the second Value input socket. Connect the output of the Multiply_Bump node to the Height input socket of the Bump node:
- Add a MixRGB node (Shift + A | Color | MixRGB) and paste it between the VCOL node and the Spec_soften node; label it as Multiply_Spec, set the Blend Type to Multiply and the Fac value to 0.850; connect the output of the Multiply_Bump node to the Color2 input socket of the Multiply_Spec node:
The overall bump effect is almost completed:
What is still missing now is the normal map we obtained from the sculpted Gidiosaurus mesh in Chapter 11, Refining the Textures.
- Add a new Image Texture node (Shift + A | Texture | Image Texture) and a Normal Map node (Shift + A | Vector | Normal Map). Label the Image Texture node as NORMALS, then connect the Vector output of the Attribute_UV2 node to the Vector input socket of the NORMALS node.
- Connect the Color output of the NORMALS node to the Color input socket of the Normal Map node, then click on the Open button on the NORMALS node, browse to the
textures
folder and load the image norm.png
. Set the Color Space of the NORMALS node to Non-Color Data and click on the empty slot in the Normal Map node to select the UVMap_norm coordinates layer. - Add a Vector Math node (Shift + A | Converter | Vector Math), label it as Average_Normals and paste it right after the Bump node; connect the output of the Normal Map node to the second Value input socket of the Average_Normals node.
- Set the Operation of the Average_Normals node to Average and connect its Vector output to the Vector input sockets of the Diffuse BSDF, Glossy BSDF1, Glossy BSDF2, and Subsurface Scattering nodes.
- Set the Strength of the Normal Map to 2.000:
Finally we have completed the first skin material!
- Save the file as
Gidiosaurus_skin_Cycles.blend
.