In this very simple tutorial, we'll explore some of the possibilities offered by the modifier stack. Each element of this stack is very well documented in the Modifiers Introduction section, so we won't go into details for every one of them but rather see what we can get by combining some of them.
Creating the Building BlockOur "Nucleic Acid" will be very simple indeed. Let's create it.
Space>Add>Mesh>Cube), but be sure to be in Topview before. You should automatically switch to Edit Mode. Scale constraining global X to 0.20. (S then ⇧ Shift+X then type 0.2 and ↵ Enter). While still in Edit Mode move this selection 1 unit in the +x direction (Press G then X then type 1 and ↵ Enter).
Then add an UVSphere with 8 segments/rings and radius=1 (Press Space, Add>UVSphere). Grab it and move along x 2.5 BlenderUnits (Press G then X then type 2.5 and ↵ Enter). Now we've got a basic Nucleic Acid. It is very blocky though. Switch to Object Mode and press "Set Smooth" in the "Link and Material" Panel of the Editing Menu (F9).
Smoothing the Building BlockFirst encounter with the modifier stack: we are going to use the Subsurf Modifier. F9) we have a "modifier" panel with a Popup button. Select "Subsurf" from this list. All of a sudden our block is nicer! The settings Blender chooses are fine for now, but you can try to push up the "Levels" slider a bit to see what it does: the shapes become smoother and smoother. I wouldnt recommend pushing too far though: 3 or 4 are high values for our usage here. I'd choose 2 for both "Levels" and "Render Levels" (which is obviously the level used for the Rendering).
If you are in Edit Mode, you may wish to see where your vertice have been moved. Tick the grey box left to the up and down arrows in the subsurf modifier interface: the vertices now are stuck to the subsurface they produce.
Creating a twin for our Building BlockWe now want to add another base opposite to this one so that we'll have a true double helix. While we could just duplicate the vertice of the block and rotate them 180, we will use another modifier, Mirror.
Now that we use 2 modifiers simultaneously, we can have a go at changing their order to see what this implies. Press the little Up arrow in the Mirror modifier. This modifier is now applied BEFORE the subsurf modifier and the result is different. I'd stay with Subsurf on top though.
Duplicating this ShapeWe need to multiply this pair: DNA is obviously much much longer than that!
1 NumPad). We will now add another modifier to the stack: Array. As soon as you've added it, you see a copy of our object appear next to it. Unfortunately we'd like it to be situated ABOVE the original.
Take a look at the Array modifier: the Offset is based on the size of the original ("relative") and works in the X axis (value=1). We want it to work in the Z direction. So set X to 0 and Z to ~1.2 in the "relative Offset" box. Constant Offset would move our duplicate a certain amount of Blender Units in a given direction, regardless of its size. Of course 2 isn't enough: enter 20 in the "Count" box.
Adding some "twists"Now we want to turn this into a spiral. The trick is to use an "Empty".
7 NumPad) and, while the cursor is still situated at the Origin, add an Empty (Space>Add>Mesh>Empty).
In Blender 2.49 you add an Empty with Space>Add>Empty. Make sure you don't add an empty mesh but an actual Empty
Now select our object and enter "Empty" in the "Object Offset" box. Make sure that the "Object Offset" button is pressed. Switch to Front View (1 NumPad), select our Empty and Move it (G): the duplicates rearrange to accomodate its location. Put it back where you found it! (CtrlZ or enter (0,0,0) in the Transform Properties box found in the Object menu)
R, Z, type 15 and pres ↵ Enter).
...and some "turns"Space>Add>Curve>Bezier). Scale it 30 times (S, type 30 and press ↵ Enter) and rotate 90 degress (R, type 90 and press ↵ Enter). Now ⇆ Tab to Object Mode, select the helix and add another modifier, the "curve" one. Type "Curve" (the default name of the curve we've just created) in the "Ob." box. This will force our helix to follow the curve. Now tick the "Y" at the bottom: this is the direction we need to follow... Most of the work is done!
A very handy tool is to be found in the array modifier: instead of "Fixed Count" choose "Fit To Curve Length" and type "Curve" in the "Ob:" box just below. You can see that the helix now stretches to the whole length of our curve! Try scaling the curve (in Edit Mode!) and you'll see.
Making this scene pleasing to the eye
I decided to apply Mirror and Transparency, added three colored lamps and DoF to create the following render...