Velvet fabrics need some special shader setups to look realistic. Since these effects are caused by thousands of fibers reflecting the light in different ways, it’s not easy to replicate the look exactly, but we can get close.

Take a look at a reference image for basic velvet, to see what we are trying to achieve.
velvet_ref
The main feature of velvet is that it has strong highlights that are perpendicular to the viewing direction (should be on the edges of the shader ball in the material editor). Since we know that this effect can be achieved with a Falloff map, that’s what we are going to use.

The color in the areas pointed towards the viewer is a very dark red, which becomes gradually lighter as the surface changes its relative angle. It will become very bright as the surface points in a direction that is perpendicular to the angle of view.

Assign a Falloff map to the Diffuse slot and try to replicate this look.

ui_00
Falloff settings: notice the modified Mix curve at the bottom. It allows precise control over how the colors are blended together.
falloff_00
While this is a step in the right direction, it seems to be lacking depth. The problem is that it is not possible to define the whole range of colors using only two swatches. To get around this problem, we are going to combine two Falloff maps.
vlv_00
The first map will look like this:
falloff_01
The second Falloff map goes in the “Side” slot of the first one. We can use it to control the colors and curve of just that side area, rather than the whole object. Take a look at the settings for the second map, and notice the bump in the curve near the right size- it’s going to give us a sharp, strong highlight.
falloff_02
The resulting render looks much deeper than it it did before.
vlv_01
Add some Bump and we should have a basic material.

Generate a Normal map using Nvidia plugin for Photoshop. Below is the step-by-step process, starting with a tileable velvet texture. This way, we’ll not only get the weave of the fabric, but patchy changes in direction as well.

vn_0
Desaturate the image.
vn_1
Run a High Pass filter to get rid of the major dark and light spots.
vn_2
Increase the contrast using Levels.
vn_3
Run the Nvidia NormalMapFilter with the following settings:
norm_set vn_4
Assign a Normal Bump map to the Bump slot and use the texture we’ve just created, with Blur value of 0.75 and Strength of 1.3. Here’s what the resulting image looks like:
ui_01 ui_02 ui_03
The result looks fine, but add the wrinkle map from the basic fabric tutorial to the second Bump slot.
vlv_02
If the result is too patchy, use a smoother image for normal map, or reduce the strength of normals. If it is too smooth, use a patchier image or increase normal strength. The shader is pretty flexible this way.
ui_04 vlv_03
Finally, let’s add a Reflect map. There is a very small amount of very blurry reflections in the material.

Run the velvet normal map through CrazyBump with these settings:

ui_13 ref_00
Open the generated heightmap in Photoshop and adjust the curves to get something like the example below. Save it as velvet_reflect.png
ref_01
Add a Hue/Sat adjustment layer and make the whole thing brighter, just above the medium grey. This should do as the glossiness map.
ref_02
Set up the maps in the appropriate slots and turn on Fresnel reflections. Set the IOR to 4.
ui_14 ui_15
And here is our final velvet material.
vlv_04

Comments

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.