Q: How to apply a driver expression in bone local space?

I’ve been trying to learn how to use drivers to control armature bone rotation (In 2.62)

But I seem to be having ‘transform space’ issues.

E.G. two bones. Parent A and Child B.

If I set up child ‘B’ with X and Z rotation drivers. I can set up a variable to read out
the Transform channel X or Z rotation in local space from parent bone ‘A’

But when I use a scripted expression to apply that rotation to bone B (the equivalent
of a copy rotation constraint). It seems to be applied in ‘global’ space (or possibly
‘armature space’), definitely not local bone space. (The bones remain aligned
when I rotate parent ‘A’).

I can’t seem to find a way to get the driver to apply rotation in local space, which I
find rather odd… Isn’t applying a rotation to a bone normally done in local space?

Do I have to transform the rotation in the python expression to get it into global space
(presumably by reading out the target bones transform matrix somehow?)

I’m hoping someone can tell me I’m missing something here.



OK. Forgot my clever pills yesterday. I had removed ‘inherit rotation’, which makes additive local rotation rather ineffective.