Spring tutorial

here is a technique i cooked up to make springs that deform correctly.

requires some knowledge of modeling, (extruding, rotating, whatnot) and control over the viewport.

split into two large jpgs, click to enlarge to usable dimensions.

part 1:
part 2:

great tutorial. i found it very useful. and pretty cleaver to…
but i didn’t use it for animation… cause i dont know how to lol.
but i used the mesh still.

Great Tutorial. Nicely done in JPG mode. Thanks.

That’s a cleaver.
You mean cleVer.
Lol, me is languagenazi :P.

Good tutorial, but there are more on the web.

great tut, I did it step by step and my problem is when I change z axis of empty shape of mesh isnt reshapes. Some wrong setup IPO? Does anybody can help me, Thanks


running under OS X 10.4.11, Blender 2.46

it looks like your basis shape key is the same as key 1. edit the basis so that it is flat instead of bent.

that should do it, glad this tutorial was helpful.

Ups :rolleyes: thanks you’r right

Good idea to build it using arrays like that!

Is there either a video tutor or a completed blender file of this project because I got lost during the construction.

Thanks :slight_smile:

Nice one, man. You have just showed me how to achieve something I was considering trying to figure it out. Thanks for saving me days and a headache.


Here’s a version of the same idea using hooks instead of a shape key. I think it’s more robust, and also easier to adjust the size of the wire etc. Instructions for use are in the attached .blend :).

Edit: you can see it in action at vimeo.

Can anyone suggest how to make a spiral spring instead of a helical one?

Best wishes,


spring.blend (113 KB)

Something like this?

This was made using a lattice, I suppose that you could stretch it, scale it, flatten it, change the taper or do just about anything you want to do to it.

That’s the sort of thing; a conical spring like that has both a spiral and a helical component to the winding. But with a lattice, can you stretch it in such a way that the space between the wire loops increases without the wire itself getting fatter? Similarly, does your wire have the same cross-section all along, or does it scale with the radius of the coil?

Best wishes,

You know, I never did check that out digit dot digit, it was just a graphical representation of a spring for a flashlight to give some other folks an idea, hmmm, I will have to check it out when I get the time…I think that the method works fairly well though. I have used pretty advanced CAD programs before, but Blender is not CAD just yet. You will probably just have to play around with it for a while. I can not give you an honest answer.
Darn Matthew, now you got me goin’. Yes, it does appear that the cross section of the wire does change with the radius. Hmmmm… Good eye.

Here’s a different approach:



That’s a very nice setup of mexicoxican’s original idea.
Could you explain how you added the start/end caps.
I could never get them to line up properly.
Also, I wanted to add a more “slightly beveled” ends. That is possible?

Yes, I had thought that a curve-based approach might be better for a more general spiral.

That’s a very nice setup of mexicoxican’s original idea.


Could you explain how you added the start/end caps.
I could never get them to line up properly.

The thing I found awkward is that while the end cap is by default aligned with the end of the Nth array element and beginning of the (N+1)th, as you want, the start cap is not aligned with the end of the zeroth element and beginning of the 1st, but with the beginning of the zeroth. That works OK if the start cap is exactly the same length as the ordinary array elements, but not otherwise. To fix this, my start cap mesh (but not the end cap) is hooked by the same empty that defines the array spacing. The other thing to watch for is while you can subsurf the arrayed mesh, including caps, you mustn’t subsurf the caps separately, or Blender will try (unsuccessfully) to match the subsurfed caps to the unsubsurfed repeating section.

Also, I wanted to add a more “slightly beveled” ends. That is possible?

You mean you want ends that are more square and less pointed? Just add edges inside each end-face to reduce the effect of the subsurfing:

One thing I omitted from the instructions in the .blend for editing the endcaps is that if you want the caps still to respond correctly to the SpringWire and SpringCoil empties, then after adding new vertices you will need to select all vertices and reassign the corresponding hook(s). When I wrote them I was thinking of more elaborate ‘one-off’ additions that you probably wouldn’t want to be transformed automatically anyway.

Best wishes,

There is a new way now with the ‘Screw’ button.
Check the tutorial here:

For values of ‘new’ that include ‘five years old’ :). But it just produces a static mesh, not very useful for animating a stretching spring.

Best wishes,

I wonder if you made it a rigid softbody if that would work? Let me put that on my Blender ‘to do’ list.

Very nice tutorial, which I was finally able to duplicate. So now I have a spring that oscillates vertically (along global z). I would now like to take this object and transform it to have a spring that deforms along global “x” without reconstructing the object from scratch. Generally, I’d like some arbitrary direction. Is this possible?

Would iti be possible to modify the construction process to only work in local coordinates, so that one rotates the objects, only global directions change and local directions do not (relative to one another)?