7
$\begingroup$

I am trying to use a driver with a scripted expression to place an object's rotation in between the rotation of two other angle-measuring objects.

So there are objects I've labeled BeginAngle and EndAngle, as well as ResultAngle. I've managed to script it so that ResultAngle will be placed exactly halfway in the middle using:

((endangle-beginangle)/2)

What I really want to do is not just place it halfway but instead specify ratios in decimal like 0.333, 0.618 etc. My Python and math skills have proven insufficient thus far.

enter image description here

.blend file here.

Thanks for any help!

Things to note: Rotation along Blender's Z axis is inverted (- degrees), making this trickier. Also you may need to tick "Auto-Run Python Scripts" under Preferences > File.

$\endgroup$

1 Answer 1

7
$\begingroup$

I assume you mean that you want a "convex combination" of the angles, so that:

  • 0 will return an angle that is just BeginAngle
  • 0.5 will return an angle halfway between BeginAngle and EndAngle
  • 0.33 will return an angle that is closer to BeginAngle than EndAngle

In that case, you can use the scripted expression:

(1.0 - 0.33) * BeginAngle + (0.33) * EndAngle
$\endgroup$
1
  • $\begingroup$ Fantastic! Elegantly simple and customizable. Exactly the sort of answer I was hoping for. Just tried it out. Thank you. $\endgroup$
    – Mentalist
    Commented Mar 29, 2014 at 10:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .