.
(Back to tutorials index)

Creating a rope texture


Creating textures is not always a linear process. Most of the time you create a texture in your paint program of choice, and place it on your object in your 3D package. Sometimes it can be very useful to start in the 3D package to create a base for the texture. A rope texture is a good example. Rope is hard to photograph because it is round and generally very twisty. Since it is a relatively simple object you can easily recreate it in 3D.

Here is a picture of some steel cable, which looks very much like rope:

Steel cable..it's like a rope made of steel.


In this tutorial I show how to make a rope texture from scratch. This is useful if you ever need to make a rope texture, but this tutorial also shows the effectiveness of creating a texture in a 3D package.

Start with a simple polygon cylinder:

Radius: 0.1 units
Height: 50 units
9 sides
50 height subdivisions

Soften the normals and remove the top and bottom faces

The cylinder will be twisted so it needs enough subdivisions for the deformation to work. Don't overdo the amount subdivisions though, this object will be copied many times so polycount will skyrocket.


A cylinder, top and bottom faces can be removed.


Create a guide circle with a radius of 0.5 units:

A guide circle, the outline of the rope strand.


Copy and move the cylinders around the inside of the circle. Place a bigger cylinder in the middle to block the inside:

Fill the inside of the guide circle with the cylinders. A bigger cylinder is placed in the middle.


Here is how it looks in the 3D viewport
The rope strand in the 3D viewport.


Delete the guide circle and combine all cylinders into one object. Then apply a Twist modifier to the rope strand. Use a twist angle of around 2000 degrees (or 5.5 times):

The rope strand twisted by 2000 degrees


Depending on which 3D package you use you might need to clear the history and freeze the tranformations on the object (Maya: Delete History and Freeze Transformations, Max: Collapse Stack and Reset XForm). Rotate the object so that it lies flat in the top viewport, then rotate it by 70 degrees.

Note that in real life the twist of the rope strand is in the opposite direction of the complete rope, this builds up the inner tension that keeps the rope from unravelling. If you get a kick out of this kind of detail then take care about which way you rotate the strand.

The rope strand seen from the top viewport. It has been rotated 70 degrees.


Copy the rope strand around 30 times. In Maya use 'Duplicate with Transform' after the first copy to quickly copy and move them. In Max you can shift-drag and select the number of copies in the copy window (or use the Array tool). It's important that the rope strands have exactly the same distance from eachother otherwise it will be very hard to make it tilable later on.

Copy the rope strand 30 times. Make sure they have exactly the same distance, or you won't be anble to make the texture tilable later on!


As you can see it's clear now why the first cylinder had to be as low-poly as possible. By creating all these copies the polycount is already at 750.000 triangles.

Create a camera and set your render size to a rectangular aspect ratio. It might be a good idea to lock your camera's position. If you want to render out multiple passes you want it to have exactly the same viewpoint.

Setup your camera. Locking the camera's position is smart because you probably want to render another pass later on. (disregard the optical illusion on the green rectangle, it is in fact not rotated)


Add a directional light fairly perpendicular to the object (the light hitting the object almost at a straight angle). The light has an intensity of about 40%.

To bring out the details in the render we need 'Ambient Occlusion'. This is another word for the shadows in the deeper corners and crevices of objects. In Maya turn on Final Gather (make the environment colour for the camera light gray to have the background emit light). In Max add a 'Skylight'.

Give the objects a material with the right colour. If you want to make a steel cable, add a Blinn shader to the object so it slightly shiny.

Turn up the render quality settings high enough, there are a lot of fine details that will look bad if the render quality is too low. Here is a test render:

A test render of the rope texture.


The great thing about actually building a 3D version of a texture is that you get the normalmap (or a displacement map) for free. All you have to do is use a 'Render to texture' feature to render out your normalmap and the colour map, and they will match up pixel perfect.

Here is the plane I will use as the target mesh to bake the normalmap. It's also a good idea to delete faces on the rope object that are not needed anymore. Baking normalmaps can take a lot of time, so the less polygons the better.

Take care to render the texture out big enough, and keep in mind that for a game the texture needs to be multiples of 2 (for example 512x256). Render out the texture twice as large as needed because you will loose some parts when making it tileable.

The low-poly target mesh for the normalmap. Excess faces of the rope object deleted.


This is the baked normalmap:

The normalmap.


Now all that needs to be done is to make the texture tilable. The normalmap and the colour texture need to match eachother exactly. It's probably best to put them in the same document and make them tileable at the same time. Read the tutorial and 'Tiling complex Patterns' for some pointers on how to tile this texture.

To give the texture a bit more depth I've also added more contrast, and tweaked the colours using the Blend If technique (see the Blend If tutorial for an indepth explanation).

The tilable version.


A bit of grunge added:

Some grunge added.


A viewport screenshot of the final result mapped on some cylinders:

A viewport screenshot of the normalmapped ropes.


Rendering out textures is a very powerfull technique, especially if you need to make normalmaps as well. I've used it for brick floors, palm tree leaves, and I've seen some excellent result from people who created a wall brick by brick.




Copyright 2007 - CGTextures