Drivers noise


I am animating octopus swimming cycle in blender 2.62. My knowledge of animation and blender as a whole is rather modest.

For each bone in each of the seven legs I created drivers to copy the ZYX rotation values from corresponding bone in master leg. I animated the master leg cycle, all legs move accordingly and so on. Works great but the animation looks a bit unnatural as all the legs move in the exact same way.

I was hoping adding noise modifier to the drivers would add more natural feeling but there is an issue. Only the initial value (frame 0) of the noise modifier is added to the curve - it doesn’t change through time.

In other thread somebody mentioned that the fcurve needs to have at least one keyframe to apply noise modifier… but I see no way to add keyframes to the rotation values as the drivers are already there.

Any ideas?


Thanks in advance.

I tried and yes, when you have a curve, it’s easy to add some noise. To create a curve in the driver, remove all the modifiers in the driver, including the noise. Then on the graph editor push - control and left click! you can add as many key as you want with this way.

Hope that was what you were looking for.


Thank you for reply. I followed your instructions - I can add keyframe, and then add noise modifier that will work. But unfortunately when I do so the driver connection is lost and the values are not copied from the master to slave bone anymore. I was hoping I could achieve both - copy values from master leg and add noise to them. :frowning:

Have you thought about using a scripted expression for your drivers? In the attached file, there are 3 bones, ‘Bone’, ‘Bone.001’, & ‘Bone.002’. ‘Bone’ is the main control bone, ‘Bone.001’ is setup to copy 1/2 the rotation of ‘Bone’. ‘Bone.002’ is setup to copy 2x the rotation of ‘Bone’. This is just an example, but my thinking is if each driver used a much lower value, like say 1.001 or .999, it would add a slight variation to each bone. Mix them up as well, say one bone copies the master’s x-rot by a factor of 1.001, y-rot by a factor of .9999, and z-rot by a factor of .9998. Then another bone copies the master’s x-rot by a factor of .9998, y-rot factor of 1.0002, z-rot factor of 1.001… I would think smaller factors for the bones closer to the body, larger values for bones at the end of the tentacles would work better.



example.blend (331 KB)

This might be helpful to you.

revolt_randy, AlanK thanks for your help. Very interesting and informative. The expressions seem very powerful, I will need to explore that area of blender :slight_smile:

Both ways are similar but there’s one issue. Using math expressions really comes down “modifying the leg shape” (either if it’s multiplication or addition - the correlation between master and slave values is constant). This gives more randomness to the leg shapes, but each animation cycle will look exactly the same.
Let’s assume that on top of that I would add noise modifier to the keyframed fcurves of the master leg. Each cycle for master will look differently but even then - the multiplier/addition values I set inside the slave driver expressions are constant numbers which makes slave legs react always in the same way. So still… something’s missing.

Noise modifier would allow to affect ( each leg by ( different value in ( each cycle run ))). It’s really hard to explain the difference :frowning:

As in the video tutorial - perfect way to go would be to write a noise function and add/multiply returned value by the inherited one…

Here they mention noise as “Builtin resources and aliases” but thats about it, couldn’t find anything else… Any ideas?