Is it possible to write Multi-line drivers? As I understand it, drivers just assign the given statement to a variable, so you couldn't have _expressions (which don't evaluate to anything) in there. Is there some way to go around this? If so, how?
Asked
Active
Viewed 865 times
9
-
yes you can ( it was called pydriver) here http://blender.stackexchange.com/a/27056/5113 – Chebhou Jul 16 '15 at 23:11
-
@Chebhou is there a list of all the expressions that can be used in drivers like frame, floor, min, max? – Denis Jul 16 '15 at 23:20
-
1@denis yes i'll add the link – Chebhou Jul 16 '15 at 23:21
-
Mostly-joking answer: https://github.com/csvoss/onelinerizer – wchargin Nov 05 '17 at 17:56
1 Answers
10
Although the expression is one line you can call a complex function in that line, you have to define and add this function to the driver's namespace before using it.
here's an example function and how it's added to the Driver's namespace ( from the DOC ) :
import bpy
def driverFunc(val):
return val * val # return val squared
bpy.app.driver_namespace['driverFunc'] = driverFunc # add function to driver_namespace
To see the already availabe functions and properties type bpy.app.driver_namespace[' in the python console and hit Ctrl+space
Chebhou
- 19,533
- 51
- 98
-
1To be a little more explicit: that python function should be entered into one of blender's Text Editor buffers and then click Run Script once, and then each time you alter the function. To make sure it runs every time you load the .blend file I think you have to name the text buffer with something ending in .py, and click the Register checkbox. – Mutant Bob Jul 17 '15 at 19:35