Vehicle suspension (multiple rate shocks)

I’ve successfully created moving shocks with springs that react as intended, but I’d like to use multiple springs on one shock and would like to get a few suggestions on how to approach it. Something like the picture is what I’m going for.


I can provide as much information about the intent as anyone would like, but it basically boils down to this: the top spring takes much less effort to compress than the bottom and will compress fully before the bottom spring does, becoming progressively harder to compress. I provided a video link below if needed. If further clarification is needed, please let me know.

I’d like it to be as simple as possible to edit as well since I’m not too good at coding (so far). I’d like to be able to edit the values from an in-game user interface (spring rate vaules, shock length, etc.) and actually see the changes to the shock, but the physics of the system is ultimately more important than the visual aspect.

Link to video if needed:

https://www.youtube.com/watch?v=5BntCTT-iM0
Thanks in advance.

I would probably do it with an IK Chain and a Transform Constraint - see picture below:


I do not know how you have built and animated your springs, but if you follow what I did here:

http://www.lafavinie.f2s.com/blender/uc2.html about half way down the page it shows you how to build and animate a spring and it will work with the rig - you just need to add a couple of bones for the spring control, but that is explained in the tutorial.

Let me know if this helps you.

Here’s the blend file with the armature in it - just press play to see it working and to operate it yourself - rotate bone “arm-upper” about its Z axis (Key R Z Z and the move your mouse, if you didn’t know this.) You should pay particular attention to the bones’ parenting and what inherits scale or not, the IK properties in the bones’ object panels and chain lengths in the IK constraints. You can change the Transform Constraint’s values to vary the timing of the two springs.

multi-spring.blend (467 KB)

Cheers, Clock.

Thanks for the response and I apologize for the late reply (night shifts in a steel mill).

It’s a huge step in the direction that I was going for. I do have a few questions though.

  1. How do I alter the minimum scale length of the lower spring without the top spring expanding backwards after it fully compresses? I’ve tried a few things, but once I increase the rotational limits of the upper arm, things get funky.

  2. How would I go about setting a hardness for each spring once I add the physics? E.g. the bottom spring offering twice the resistance as the top?

  3. How should I parent the bones to the shock body armature (named spring-center) so that everything moves when I move the shock while still retaining the current animation properties?

Thanks in advance.