Wiggle bones (a jiggle bone implementation for 2.8)

Edit: I baked the wiggle and it worked. Guess you have to bake it to keyframes for rendering

Did you figure out a way to fix this? I’m having the same problem as you. The rig moves perfectly in the viewport but when rendered it just stays still

1 Like

Thank you for this super addon. Realy helped me alot! The only thing I realy miss is to be able to access it on Linked in riggs.


Has anyone come up with a feasible workflow for using Wiggle Bones with library overrides yet?
I have a fully rigged character in one .blend (“source”) that I want to use in another (“target”), with some of the bones wiggling.

First attempt:
As I couldn’t edit the wiggle properties in the target file, I set them up in the “source” file. I then was able to bake a wiggle animation in the target file on top of an animation that was done directly in the target file - but this worked only once! As I had to tweak the animation, I deleted the NLA strip that WB had added, made some adjustments and then tried to bake again - this time without result, i.e. WB did bake new keyframes but the graphs remain completely flat, i.e. no wiggling. Haven’t been able to reproduce the initial success again so far…

Second attempt:
I removed the wiggle setup from the source file, then duplicated the relevant bones including their parent bone in the target file in a second armature and tried to make the parent copy the transforms from the source rig. So far I haven’t figured out how to make this work: Whatever I do, the duplicated bones do not follow the posed bones in the source rig.
The idea was to setup the wiggle on the duplicated bones and then use more Copy Transform constraints to transfer the animation back to the source rig. This kind of setup does actually work when I do it directly in the source file but not when the source is linked in as a libary override…

Any more ideas or possible solutions to the issues described above?

UPDATE: I think I figured out something workable after all: The main problem with my first attempt was that I couldn’t get the scene to “forget” that it had baked the wiggle so it would be free to rebake. I think I fixed this by changing the Bake behaviour from Bone to Scene. I can now rebake by simply re-ticking the Wiggle Scene checkbox on the Scene tab (the similar checkbboxes on the Bone tab are not editable for Libary Overrides).

I’m still interested in hearing how others are tackling this.




This is hands down my favorite addon for blender since it makes adding springy physics to things a breeze.
I don’t know if this addon is still in active development or anything like that, but there’s one feature that I’d love to have, and that’s the ability to influence the mass/weight of a bone.

I mainly use this addon when making car suspensions, and while it works wonders for getting convincing movement, it still lacks that extra bit of weight to it and feels kind of fake. Bones will stretch just fine with the movement, but there’s not really any compression from the weight of the car. Mainly because there’s no way to influence the mass of the bones to actually put them under a load.
So you can have a car suspension look passable with what’s there, but you won’t get any of the inertial effects from the chassis influencing the springs themselves.
You can kind of get there messing around with the gravity settings, but there’s no actual interaction between the bones. Like one bone won’t really weigh down another.

So yeah, don’t know if I’m asking something of a dev that isn’t actually there, but I’d love for there to be a way to add mass to the bones. So I can put a bone down to use as a suspension springs, and another connected on top to act as the mass of the car to compress and stretch the parent bone, which will add inertial effects to the suspension itself.

In any case, cheers. Thanks for the addon. It’s done me a lot of good the few years I’ve used it!


This is a great addon, thank you.

Do you have an idea of when you might do a release that has collisions enabled? Will those collisions work with custom meshes?


Not to derail because I LOVE Wiggle Bones - but you can find collision features in the “Ghost IK” addon which is in development here.

I very much value the parallel work of multiple devs because no matter how “perfect” a given tool is it will tend to have certain characteristics to the output. Mixing and matching the outputs of these tools is what is truly liberating so please dont take this the wrong way @shteeve!


100%! i keep wanting to push my next version with collision to a usable state, but life keeps getting in the way. at the end of the day, whatever gets us some lovely bone jiggling goodness is a win!

also, for @shaxe 's question, my wip version is designed to do collision on on any arbitrary meshes you want.


Awesome addon. Has anyone tried using it with the Animation Layers addon? I am struggling to get the jiggles to bake and I’m wondering if maybe there is some conflict with the way Animation Layers handles the NLA editor?

When I use the built-in Bake Wiggles from the Wiggle Bones panel, it seems to erase some of the layers I have set up and replace them with just the wiggle animation on the Wiggle Bones. I tried using Blender’s Bake Action function as well and couldn’t seem to get the wiggle animation to show up correctly even though the keyframes were baked. It was like they weren’t influenced enough, like if I had a way to increase the gain of the keyframes the animation would be more noticeable, but the way they were baked was too subtle and didn’t look like the preview.

EDIT: OK so I actually got the built-in Bake Wiggle function to work correctly. It’s just that the keyframes come out way weaker than how they look when I’m previewing the wiggle in the timeline. The baked wiggles are pretty much invisible to the eye, whereas when the Wiggle Bones are turned on (pre-bake) they actually make noticeable movement.

1 Like

I’ve got a small (I think) quality of life suggestion. Would it be possible to add a copy-paste functionality for wiggle bone properties? I’d like a faster way of transfering all the properties from one wiggle-bone to another.


I’ve run into an issue where certain armatures no longer recognize multi-selected bones- Turning wiggle bones on only effects the active bone, yet on a different armature selecting multiple bones still works. These armatures can be in the same file, I’m wondering if there’s a hidden setting I’m missing.
I work with pretty dense skeletons with many many bones to apply physics too, it’s frustrating when it keeps breaking :frowning:

yeah that does sound annoying! are you able to replicate in a sharable file at all? offhand i can’t think of what might cause that particular issue, especially if its only happening on certain rigs in the same file. are any of the rigs linked in? i know linked rigs functionality is something i need to improve too, especially now that library overrides are getting more robust

Is it possible to lock one or more axes of the wiggle so that the bone only rotates along the X axis?

1 Like

i agree this is something i’d like too. i feel like i ran into some issues when i attempted it previously for some reason, but i’ll give it another shot!

in the mean time, its not ideal, but have you experimented using the “limit rotation” constraint?

Yes, but it didn’t help. :confused:

just to confirm, i gave it a shot, specifically using ‘local with parent’ for the owner space of the constraint and it appeared to more or less work. let me know if this isn’t actually the use case you were going for!


hey shteeve, great script, works for me!
One thing though - it printed 1 line every frame to the terminal window, so it was hard to debug anything else. I commented one line out and it fixed it. >>>

#print(“post %d %d” %(curframe, bpy.context.scene.frame_current)))

Here is the part I am talking about, just in case somebody is wondering where they get all those posts from:

def jiggle_post(self,depsgraph):
global curframe
if (depsgraph.view_layer.name == bpy.context.view_layer.name):
curframe = bpy.context.scene.frame_current
#print(“post %d %d” %(curframe, bpy.context.scene.frame_current))
jiggle_tree = bpy.context.scene[‘jiggle_tree’].to_dict()

######## NEW STUFF ENDS #######################################################################

1 Like

Apologies that is annoying for development! Shoulda commented that before releasing. I’ll make sure future versions don’t spam the console! :slight_smile:


Hi Shteeve;

I’m on 2.93.1 and although the addon works at runtime quite well, I just am not able to get a successful bake :frowning: In additive mode, although it does place an action strip with the wiggle bones’ fcurves in it, it doesn’t work even when mixed with the character’s action strip.

But what I really want is to be able to bake in the wiggle bones into the main action of the character. But when I uncheck additive mode, every other fcurve that belongs to every component of the rig gets deleted and the wiggle bones’ baked animation remains…

What gives??



i think the ‘additive’ option has essentially been useless for a few versions of blender now, as you can no longer bake in additive nla mode (it wasn’t really that useful anyway). but it should still be bumping your original animation untouched as a strip into one step down in the NLA, and then the wiggle bones as a layer on top of it. the idea was to leave flexibility to modify the amount of blending of the wiggle to the original animation after the fact.

if for whatever reason thats not working, or you want to generally have a little more control over the baking process, my bake button is essentially just calling the regular bake action operator anyway. so you should be able to call yourself and set it to overwrite action, which should hopefully provide the desired results! :slight_smile:


Just wanted to thank shteeve for keeping this great plugin alive. Been using it pretty much since it first appeared, but only recently joined-up here so finally I get to say thanks!

Something that often irritated me was not being able to lock rotation axis for some reason, so good to see those posts confirming it works now. Excellent, this thing is so much more than a flesh-wobbler, and it’s something I’m amazed isn’t part of the default Blender spec, especially since it tends to bring ‘life’ to everything you put it to!

Great stuff, cheers man :+1: