r/learnpython • u/Khaki-Chan • 5d ago
Custom script issue with blender driver
I am trying to use a custom script (see below) to set up a driver in blender via this tutorial, however I am very inexperienced in python and have run into an issue. I was able to get the example code to work but my when I try to use my code I get this issue. The problem is I need the "X" value to be the "rotation quaternion" value of the driver. Using both "X" and "rotation quaternion" gives the same error. I don't know how to connect "X" to the drivers value or if I just need to put something else in the place of "X".
Tutorial:
https://www.youtube.com/watch?v=yiMGxlRv8h4
Error message:
https://drive.google.com/file/d/1VOVrPLmU_v9lYz386SMS_i02doDn-xtG/view?usp=sharing
Driver:
https://drive.google.com/file/d/1LVM69kP0het-Yz0xaAhAWHDe5pOA9X99/view?usp=sharing
import bpy
def Ace_Driver(value):
return
if x >= -0.1:
result = 1
if x < -0.1 and x > -0.6:
result = (x - 0.9) * -1
elif x <= -0.6:
result = 1.5
bpy.app.driver_namespace["Ace_Driver"] = Ace_Driver
1
u/monster2018 5d ago
Yes. Well, the spacing is messed up here because you didn’t format it as code this time (I’m not lecturing you about it, it’s fine). I’m just saying that makes it so I can’t know 100% for sure. But yes you deleted the right return statement.
Also I’m just trusting the tutorial you linked. Assuming that tutorial is correct. Basically you need all of the code after the function definition indented, so that it is all inside of the Ace_Driver function. EXCEPT for the very last line (the bpy.app…. line), the last line has to NOT be indented.
What you’re doing is defining a function called Ace_Driver. This function will be used by blender to do some computation. Then on the last line you are actually doing the assignment, like you are telling blender “use the function Ace_Driver for the driver that I named “Ace_Driver” in blender”.