9

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?

chicks
  • 504
  • 2
  • 8
  • 17
someonewithpc
  • 12,381
  • 6
  • 55
  • 89

1 Answers1

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

DOC link for more info

Chebhou
  • 19,533
  • 51
  • 98
  • 1
    To 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