Hello everyone, it's Jen from Olde Tinkerer Studio
In this tutorial, we will be learning how to make a procedural leather texture in Blender 2.9 and how to use it on a model
This tutorial is using Blender 2.9 but you can also follow along with Blender 2.83
So, let’s get on with the tutorial
Let’s first make a very simple model of a handle – something that could be used for a fantasy war hammer
We will be using this model later in the tutorial
Delete the default cube and add a cylinder with 32 vertices and a triangle fan cap fill
Scale the cylinder to the desired size
Apply the scale (CTRL + A)
Right-click to open the Object Context Menu and choose “Shade Smooth”
Rename the object to “handle”
Tab into edit mode
Add two horizontal loop cuts to delineate where the leather texture will be applied
Select the faces between the horizontal loop cuts and separate them from the rest of the cylinder (P)
Rename the object to “leather”
Hide the handle
Tab into object mode
Add a plane – this will become the leather strap
Tab into edit mode and rotate the plane around the X-Axis 90 degrees
Scale the plane down to a smaller size and move it to the right and bottom of the leather object
Select the right-side vertices of the plane and delete them
Rename the object “strap”
Select the strap and add a Screw modifierb
Using the “Screw” option, begin making the strap rotate around the leather object
You can scale and move the original two vertices for more control over the look of the leather strap
Using iterations allows you to choose the number of times the strap wraps around the leather object
Add a Shrink Wrap modifier so we can attach the strap to the leather model
For the target – choose “leather”
Add a Solidify modifier
Change the offset to “1” so the thickness will be on the outside of the leather object
Change the thickness setting to your desire size
Hide the leather and strap models – we will come back to them later
Let’s now work on the actual leather texture
Tab into object mode and add a plane and rotate it around the X-Axis 90 degrees
Under the Shading workspace, add a new texture and name it “leather”
Add a Voronoi Texture Node
This type of node is used to evaluate Worley Noise –
a type of noise function that randomly distributes points in space
organized as grid cells to create procedure textures
Connect the Distance output of the Voronoi Texture node to the Base Color input of the Principled BSDF Shader –
we can now see the cells produced by the Voronoi texture
The Distance output is used to calculate the value of the cells
The Color output will show you random colors so you can easily see the cells
The Position output is the position of the feature point
The Dimensions option the dimensions of the space to evaluate the noise –
change this to “2D” so the Z space is ignored
The Distance Metric determines the distance between two points
The Feature option computes and returns the distance to other points –
change this to “Distance to Edge”
so it will compute and return the distance to the edges of the cells
The Vector input evaluates the noise
The Scale input scales the noise
The Randomness input is the randomness of the noise
Duplicate the Voronoi Texture Node
Add a Mix RGB node
The Mix RGB node mixes images (or noise in our case)
The Color output is the output of the mixing of the two color inputs –
connect the Color output of the Mix RGB node to the Base Color of the Principled BSDF Shader
The Blend Modes option allows you to select various means of combining the color inputs –
we will use Overlay to blend the two Voronoi texture nodes
The Clamp option determines the output value
The Factor input controls the amount of influence each node exerts on the output image –
we will change the Factor to 0.8 to mix the two Voronoi texture nodes
The Color1 input is the input for the texture node –
connect the Distance of first Voronoi texture node to the Color1 of the Mix RGB node
The Color2 input is the second input for the texture node –
connect the Distance of second Voronoi texture node to the Color2 of the Mix RGB node
Add a Value node
A Value node is used to input numerical values to other nodes in the tree
Change the value of the Value node to 5 – this will maintain the scale of the cells (smaller values mean larger cells)
Connect the Value output of the Value node to the Scale input of both Voronoi texture nodes
Add a Math node between the Value node and the second Voronoi texture node
A Math node performs math operations
The Value output is the numeric value output
The Operation option is the mathematical operator applied to the input values –
change this to multiply – this will multiply the input values
The Clamp option determines the output value
The Value input are the values used for the trigonometric function –
change the Value to 1.5 (smaller numbers mean larger cells)
Add a Texture Coordinate node
The Texture Coordinate node is used for the coordinates of textures
The Generated output generates texture coordinates from the vertex positions of the mesh
The Normal output uses object space normal for texture coordinates
The UV output use the UV Map for texture coordinates –
this is what we will be using when we apply the texture to the model
The Object output uses the object as the source for the coordinates –
this is what we will be using for the texture,
so we need to connect the Object output to the Vector input of both Voronoi Texture nodes
The Camera output uses the camera space for texture coordinates
The Window output uses shading points for texture coordinates
The Reflection output uses the direction of the reflection vector as texture coordinates
The Object option is used for object space coordinates
The From Instancer option is used when the object is generated by instancing from vertices or faces
Add a Noise Texture node
The Noise Texture node evaluates a fractal Perlin noise (a type of gradient noise) at the input texture coordinates
The Factor output is the value of the fractal noise
The Color output will show you random colors so you can easily see the fractal noise
The Dimensions option the dimensions of the space to evaluate the noise
The Vector input evaluates the noise is used to evaluate the noise input
The Scale input scales the base noise – change the scale to 1
The Detail input is the number of noise octaves – change the detail to 5
The Roughness input blends between a smooth noise pattern and a rougher noise pattern – change the roughness to 1
The Distortion input is the amount of distortion – change the distortion to 5
Add a second Mix RGB node
Connect the Factor output of the Noise Texture node to the Color2 input of the second Mix RGB node
Connect the Object output of the Texture Coordinate node to the Color1 input of the second Mix RGB node
Change the Blend Mode of the Mix RGB node to “Add”
Connect the Color output of the second Mix RGB node to the Vector input of the second Voronoi Texture node
Add a Color Ramp node between the first Mix RGB node and the Principled BSDF Shader
A Color Ramp node is used for mapping values to colors using a gradient
The Color output will show you the colors of the gradient
The Alpha output is used to control transparency
The Color Ramp Widget allows you to add and subtract color stops, choose options from a Specials menu,
change color modes, change interpolation options, change and move the colors via the color stops,
choose the active color stop, change positions of the color stops, and change colors via the color picker
The Factor input is used as an index for the color ramp
Change the white color stop to a darker brown (#624A2E)
Change the black color stop to a lighter brown (#8B6941)
Move the darker brown color stop toward the left to expose more of the lighter brown color [0.073]
Now it is time to apply the material to the model
Hide the plane and unhide the sections of the model
Choose the strap object
From the dropdown menu, choose the leather texture
Change the Texture Coordinate node outputs from “Object” to “UV” –
we will use the UVs provided by Blender for this tutorial
Change the Value of the Value node to get the desired look – higher number means a smaller texture [45]
Add a Bump node
The Bump node generates a normal from a height texture
The Normal output is the normal vector output
The Invert option inverts the bump mapping
The Strength input determines the strength of the bump mapping
The Distance input is a multiplier for the height value
The Height input determines the amount of offset from the surface
The Normal input is the normal vector input
Connect the Color output of the first Mix RGB node to the Height input of the Bump node
Connect the Normal output of the Normal node to the Normal input of the Principled BSDF shader
Change the strength and distance to achieve your desired look [0.2]
If you have a request for a tutorial or a question about Blender, feel free to leave a comment
If you are interested in learning more about 3D art and animation,
don’t forget to subscribe and turn on the notification bell
Thanks for watching Have a good day