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.
Then you can tweak feature like Bevel or Extrude in the curve's Object Data tab to bring depth for it.
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.
Note that the cube is in the origin.
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.
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.
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.
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.
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.