I need to model a simple spiral shape. I imagine the best way to do this is with curves, but I am unsure how to create a perfect spiral shape with curves. What's the best/easiest way to make a spiral tube?


Another procedual way is to simply enable the Add Curve: Extra Objects addon. It is used to generate many kinds of curves with various parameters, including spirals.

To enable it, CtrlAltU to open User Preferences window, then find and enable it under the Addons tab.

enter image description here

Then you can tweak feature like Bevel or Extrude in the curve's Object Data tab to bring depth for it.


You can use the Screw modifier to do this.

From the manual:

The Screw modifier is similar to the Screw tool in the Tool Shelf in that it takes a profile object, a Mesh or a Curve, to create a helix-like shape.

(source: blender.org)


If you want to make a spiral from discrete objects, i.e. a discontinuous spiral, the array modifier is a nice way to do this. You would add an array modifier to the original object which is aligned (Object Offset) on an Empty. Move that Empty up (Z-axis) and away (e.g. X-axis) from the original object. Then rotate the Empty around the Z-axis. The rotation angle and distance determines the radius and object density of the spiral. Don't forget to set a length in the array modifier, either a fixed count or a fixed length (or relative to the length of a curve).

In fact you can use this technique for continuous spirals as the array modifier allows merging. But this needs exact (but not hard) planning in the design of the object, the angles and distances. It is worth it when you want a finely decorated but repeating spiral.

Resulting spiral Note that the cube is in the origin.

Empty settings Position and rotation of the Empty; in this example the absolute position is the same as the relative position to the cube. In reality you would probably parent it.

Array modifier settings The settings for the array modifier.

You can simply manipulate (or animate) the spiral by moving or rotating the Empty. Changing the scale of the Empty gives another nice effect.

As the question asked specifically for a simple tube I will give an explanation how to do this with this technique. But be aware that this only pays under certain circumstances (modelled segments, end caps) as it drives your vertex count way up.

I will model a spiral with 8 segments and a radius of 6 Blender Units (BU) and a distance between two turns of 2 BU.

1) Add a plane.

2) In Edit Mode rotate it so it is perpendicular to the X axis.

3) In Edit Mode move it up 6 BU on the Y axis.

After step 3

4) Extrude e, cancel ESC. The newly created vertices are selected.

5) Select the 3D cursor as pivot in the lower via .. (The cursor is still in the origin?)

6) Rotate by -45° around the Z axis. 45° because we want 8 segments. 360°/8 = 45°.

7) Go into face selection mode and delete the front faces so an empty tube stays.

8) Select the extruded vertices.

Extruded vertices selected

9) Now I will do a little simplification. In theory it is best to rotate the segment so that the segments will fit. The easier way for a simple tube is to slant the segment. Move up the vertices by 0.5 BU along the Z axis. 0.5 * 8 = 2, the distance between two turns.

These basic shape determine the borders for you tube segment. Within these borders you can model, as long as the end vertices match. If you need something different than a square you should create that shape before extruding.

10) Leave Edit mode.

11) Add an Empty in the origin.

12) Rotate the Empty by 45°, move it up by 0.5 BU.

13) Select the tube object, add an array modifier. Uncheck "Relative offset", check "Object offset", select the Empty as Offset object; check "Merge".

14) By changing the "Count" you can easily determine the size of the spiral.

Final spiral

When you add an subdivision modifier and set the shading to smooth you get a smooth spiral.

The number of segments determines when the pattern repeats. In fact you can easily build a 360° segment for a full rotation and just use a regular array modifier with relative offset to create a spiral.

If you use twisted elements where the front ends still align you can easily model things like ropes. But again, high vertex count, so it must be worth it.

  • $\begingroup$ Make sure to apply transforms when using this method, before applying the array modifier! (Blender 2.8) $\endgroup$ – Ardit Pranvoku Nov 20 '19 at 22:04

On 2.8 go to Edit > Preferences > Addons and search for "Extra Ccurves".

Then add a new object with Add > Curves > Spiral Curve > Archemedian and play with the settings.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.