8

I have a simple function that I'd like to call from a driver Python expression.

enter image description here

I've run the script to define the function, but it doesn't seem to be accessible from the driver expression.

Error in Driver: The following Python expression failed:
    'myDriverFunction()'

Traceback (most recent call last):
  File "<bpy driver>", line 1, in <module>
NameError: name 'myDriverFunction' is not defined

Is it possible to modify the namespace in which drivers execute?

ajwood
  • 10,063
  • 11
  • 60
  • 112

1 Answers1

14

Your custom driver must add itself to the list of drivers BPY is aware of.
See the example here: https://docs.blender.org/manual/en/dev/animation/drivers/workflow_examples.html#driver-namespace

import bpy

def driverFunc(val):

    return val * val    # return val squared

bpy.app.driver_namespace['driverFunc'] = driverFunc    # add function to driver_namespace
Andrew
  • 87
  • 5
Kirbinator
  • 2,661
  • 1
  • 16
  • 24