Driven bones in same armature

How can i add a driver to a bone, that depends on a value from another bone in the same armature object? (for example named “bones”)

For example:
I want a bone (A) to be stretched, when another bone (B) is rotated about the z-axis. Everytime i tried to add a driver to Bone A i got the message: “Cannot assign a Driver to own Object”, after i typed in the “Transform properties”: OB:bones

I could use a the transform constraint but it works only linear, which is not the effect i wanted.

Is there a way or trick to do this?

I have the same problem cause I want to animate an engine like the one in cars… See this thread for a solution I was given so far. BUT I am trying to solve the issue by means of Transform constraint --> sooo… see there :wink:

Regards,

You can drive bones in one armature with bones from another armature…

The problem is when one bone is rotating and the driven bone is to translate up-down or left-right…

I was simply pointing out how a bone can be driven with another bone. For your piston, MCollett’s technique is definitely the way to go :slight_smile:

That makes it a little complicated. But i guess a parent-constraint on bone in the 2nd armature should do the job. Otherwise it works fine. I hoped there was a simpler way to achieve my goal. Would be a great feature, if this would be implemented. I used it basically to deform some muscles, and tried to avoid Shape Keys, since i wanted my model symetrical. In this case Shape Keys are real Pain in the ass, if you want to modify only some details.

If you are using shapekeys on muscles, make the opposite muscle part of the same mesh. That way you can use x-axis mirror modeling to create your shapes on both sides at once, then create a vertex group for each side to apply them individually (like in mancandy).

If you are wanting to create a non-linear behaviour for a range of motion, you might want to look into the action constraint. You could define the animation of the muscle bone, and then drive it with the rotation of another bone using the constraint.

You need to use the pose ipo editor, not object, to drive bones.

@ niabot - Unfortunately, this “complicated” construction is the most simple so far… At least I wasnt able to make it more simple. Soooo… if you look for a precise translation described by a strictly sinusoidal curve then use it. Any simplifications of this will result of just aproximation of this perfect situation. And if you can live with that - simplify the model :wink:

@ feelgoodcomics - In another project, I tried to use shape keys… but I notices that (1) these cannot work with modifiers (or the modifiers tells you that as soon as you have shape keys on certain object, you cannot use any of them) and (2) it is not possible to modify you mesh by a script, then assign the shape as a certain shape key, then prepare by a script another shape key, etc… Which turns to ONLY manual preparation of shape keys… This is really a great pain for complicated modeling… Sooo if you know how to do any of the above two items or you can point me to a resource where it is well described, please, please, please, do that!!! Im am very much interested in such type of modeling :spin:

@ mtracer - in the IPO editor, if you dont use a script, you will spend many hours or days to reach the correct curve for THIS exactly type of movement/relationship :eek:

Regards,

Mirrored modeling is a button you can enable in the edit panel while in edit mode. Provided your model is perfectly symmetrical across the X axis, it will work (just like pretty much everything else in Blender rigging - the X axis is your home lol :)).

I’ve attached a screenshot of the button to which I refer, as well as a simple example of what I mean. Rotate the forearm on each arm, and the bicep will flex using shapekeys. The shapekeys were both made in the same shape, then duplicated, and applied to a single side using a vertex group (again, like the face in mancandy).

The reason (as I understand it) why bones cannot drive bones in the same armature is because the bones are components of the armature object. The error when attempting to setup a bone driver (which you can access the channels for by keying the bone first, then deleting the resulting IPOs in the Pose IPO window) is “Cannot assign a Driver to own Object” which occurs when you type in the driver object as the armature. Since Blender views this as the armature object driving the armature object. Even if you could enter a bone name, I’m sure the results would still be a dependency cycle, since this is basically the same reason an object cannot be both the target and child of a bone (it can’t be parented to a bone, and also serve as an IK target for example). Same concept. Blender armatures are self-contained ‘containers’ full of bones, and work best if treated that way.

Attachments

mirroredShapekeyFlex.blend (189 KB)