Creating a Path ----------------- Delete the default Cube. Front view. Add a Mesh > Plane. De-select one vertex and delete all of the remaining selected vertices. Select and snap the vertex to the cursor. Duplicate (Shift+d) it and move it 3 major grid units to the left (- X axis). Select and extrude the vertex at the origin down (-Z axis) 3 major grid units. Select all vertices. Screw Settings: Steps: 16 Turns: 4 Press the Screw button. De-select all vertices and then link select (press [l] with mouse over vertex) and delete extraneous vertical line of vertices. Select all vertices of the spiral. From the Mesh menu, select 'Scripts' > 'Edges to Curves'. Re-select the original mesh curve (ensure that it is the mesh by Tabbing into Edit mode or check the object name: Plane) and either move it to another unused layer or delete it. Re-select the Curve object. Give it a more appropriate name such as 'spiral'. Also, after Tabbing to Edit mode, note that the produced curve type is 'Poly'. Select all control points and convert it to 'Nurb' ie. Edit buttons :: Curve Tools panel :: Convert 'Nurb'. With the current Bezier Knot type, the circular profile is a little "blocky" (Tab out to Object mode temporarily to get a better view of the curve shape), so press 'Make Knots': 'EndPoint U' to make it smoother. Note: since we are creating the spring using the Curve Modifier, it's best to avoid using 'Uniform U', since this option doesn't go right to the ends of the curve which can create an unrealistic result where the final spring slides back and forth along the curve. Creating the Spring (Using Array and Curve Modifiers) ------------------------------------------------------- Top view. Object mode. Add Mesh > Tube (16 vertices). Side view; rotate the Tube 90 degrees and switch back to Top view. The tube is a little big given the scale of the spiral path, so scale the tube down by 0.5 . Tab out to Object mode. Add an Empty. Reselect Mesh Tube and add an Array Modifier. Array Modifier Settings: Note: Array modifier defaults to 'Relative Offset' of X: 1 creating a single duplicate offset 1 Blender Unit (BU). We want to use the Empty to control the spacing, so de-select 'Relative Offset' and press 'Object Offset'. Below the 'Object Offset' button, next to 'Ob:', type in the name of our Empty: 'Empty'. Note: Blender will auto-complete the name of the empty, Just type a capital 'E' and press [Tab]. Text entry is case sensitive so a lower case 'e' won't work. Select the Empty and slide it along the +Y axis 1 BU. You should see the duplicate tube slide out from the original. Re-select the Tube. We also want the Tube to be one continuous mesh, so in the Array Modifier settings, activate 'Merge'. We may need to adjust the 'Limit' a bit if the tubes "pull apart", but for now, we will leave it at the default setting '0.01'. Now to connect our Array modified tube to a curve. Add a Curve Modifier and in the 'Ob:' text box, enter the name of the curve 'spiral'. The arrayed tube flies off to the tangent of the spiral path, but it's no big deal. In the Axis controls in the bottom part of the Curve Modifier panel, change the axis to 'Z' and you should see the tube align itself with the spiral. Note: You can have the tubes go either from the "start" of the spiral curve to the "end", it doesn't really matter. It's best to leave it from top to bottom to make it a little easier to "cap/close" the ends later, but if you would prefer to switch it, just enter edit mode for the spiral curve, select all control points and press [w] > 'switch direction'. Now to populate the spiral with more tubes. In the 'Count' setting of the Array Modifier, increase it to about 72. You may notice some twists in the tube at certain intervals along the spiral. To fix that, select the spiral and press [Ctrl] + [a]. Once again the tube does a wacky stretch and squish effect, but not to worry. Just select the tube again, and in the Curve modifier, change the axis control to [Y]. To get the Tube a little smoother click the 'Set Smooth' button. Also, let's add a Subsurf modifer. Adjust the settings as you like. Capping off the Tube ends. Top view. Tab to Object mode. Add a Mesh > Circle (16 vertices). Scale 0.5 . Extrude, RMB click, Merge: [Alt] + [m] > At Cursor. Add Modifiers: Subsurf and Curve. Enter name 'spiral' into 'Ob:' text box and adjust axis to Z. The other end -> you're on your own. (You can switch which end is capped by switching the direction of the curve in edit mode), then just manually cap the opening at the start. Adding Relative IPO Keys. --------------------------- Before we add some IPO keys, now would be a good time to save your Blender file. Open a second IPO Curve Window, and change the IPO Type selector in the header from 'Object' to 'Shape'. In the 3D Window, spiral curve in Edit mode, select all control points/knots and press [I] > Curve. Now to add the other Shape Keys: 1 compressed, 2 SwingX and 3 SwingY. *Ensure: - you're in Front view, - cursor is at the origin. Press [Shift] + [c] - you are in scale/rotate wrt to cursor mode (main keyboard [ . ] key) - all curve control points/knots are selected. Shape Key 1 (compressed) Press [s], [z], 0.34 - Approx., [Enter] Select all. Press [I] > Curve. Tab out of edit mode. In the IPO Curve Window, select (LMB) the dashed line in the right hand column. You should see 2 horizontal lines appear. A yellow basis key and a light blue Key 1 the compressed spring Shape Key. When you alternatingly RMB click on the horizontal yellow and blue lines, you should see the spring change from it's uncompressed to compressed form. Next, we'll be setting the SwingX key. Of course, this requires that you are using the basis (uncompressed Shape) so that you can more easily obtain the SwingX shape. So RMB the yellow Basis key, and then move your mouse over the right column of keys and press [a] to unselect all of the keys. Note: It's important to de-select the keys before adding more keys. If you leave your basis key selected and accidentally [Tab] out of Edit mode, the Basis key will be overwritten with a distorted mesh/curve . (Though you can undo it by pressing Ctrl + z - with your mouse cursor in the IPO Curve Window). Shape Key 2 (SwingX) Front View. Select the top "Turn" of control points of the spiral. Activate Proportional Edit mode. Also set the modifier to 'Root'. Press [r], [y], 15 (adjust region of control using mouse wheel or [Page Up/Down] - Seems to give a good result -> Experiment select more/less vertices, or other fall-off modifiers, and various region of control sizes , [Enter] Select all. Press [I] > Curve. Tab out of edit mode. In the IPO Curve Window, select the dashed line in the right hand column. Select the basis key and then unselect all keys. Shape Key 3 (SwingY) Side View. Select the top "Turn" of control points of the spiral. Activate Proportional Edit mode. Also set the modifier to 'Root'. Press [r], [x], 15, [-] - Seems to give a good result -> Experiment select more/less vertices, or other fall-off modifiers, [Enter] Select all. Press [I] > Curve. Tab out of edit mode. Now that we have all of the basic Shape keys, we need to actually add some "modifying" IPO curves for each Key to produce the Spring animation. Let's start with a simple contraction + extension. with no IPO curves defined, the spring is in its rest shape. To get the compression, select Key 1. You can select Key 1, by either first clicking the dashed line and then RMB clicking the lowest bue horizontal line or by LMB clicking the Key1 text in the right hand column. Ctrl_LMB click in the graph area at 1, 0 . Ctrl_LMB click in the graph area at 25, 0.5 . Ctrl_LMB click in the graph area at 50, 0 . Press [n]. Tab into edit mode for the curve, select each curve point and set it more accurately using the Transform Properties panel. Select the last curve point and then add a decreasing sinusoidal type wave form to simulate some recoil motion. To set some side to side motion, simply add an IPO curve in the same manner as was described above for Key2 and Key3. Note that you can make the curve go above 1 to get a more extreme effect than what was originally keyed, and also that you can use negative values to obtain the opposite effect to what was originally keyed; ie. "swing left" from Key2 or "swing back" from Key3.