Spring constraint
Open, NormalPublic

Description

The spring constraint can be used to get wobbly/bouncy effects on bone chains such as antennas etc. The target bone (the one carrying the constraint) copies the transforms of the source bone and adds the spring effect to it. It also uses a buffer that allows skipping and backwards scrubbing while maintaining consistency, and as the buffer is saved along with the blender file, it should work on a renderfarm too (however i did not actually test that).

Here is a little demo on vimeo: http://vimeo.com/22077796

There is a windows build for testing available for download here: http://graphicall.org/builds/builds/showbuild.php?action=show&id=1698

An example blend-file: http://ivogrigull.com/blender25/spring_demo.blend

One issue is interactivity though. It is not possible to pose/animate a chain predictably while the constraint is active, because the buffers of the chain's spring constraints would need to be updated on the fly. I think this goes beyond my coding abilities and understanding of the animation system code. And i gues it would be relatively slow too. Nevertheless i believe it is a great help for animators and certainly nice to have, even if he needs to enable/disable in order to edit it. I suggest to use a python driver expression to control all bones' constraints at once to ease the pain. In the current state it needs to be considered as a post effect.

Details

Type
Patch

updated to svn r41542
attached .spring_patch_r41542.patch

I still use it , but it crash in object mode , works fine in armature pose mode.
It's from same author of mesh cache modifier , very useful for character animation.

This is useful feature to have, but i'm not totally happy with the code. Main issues:

  • Use mathutil funcitons instead of vector macros (i.e. copy_v3_v3 instead of VECCOPY)
  • Boolean are to be true/false not TRUE/FALSE nowadays
  • Code style is a bit weird, would be nice to have it closer http://wiki.blender.org/index.php/Dev:Doc/Code_Style
  • But main concern is storing the way constraint is storing the previous location in itself/ That's always asking for problems when mixing viewport and final render and also when you change the current frame directly in the timeline. Not totally sure how it should work reliably, could require some more general purpose caching or so, which is not totally what constraints currently are intended to use..