Page MenuHome

Driver stops updating dynamically if no/incomplete variable is defined
Closed, InvalidPublic

Description

System Information
Win8.1x64, 3x gtx580

Blender Version
2.79t2

Short description of error
When there is no external variables defined, the driver stops updating in the viewport dynamically. Updates only on more global events like frame change.

Exact steps for others to reproduce the error

  • Grab/move the object in z axis. It curves proportionally to elevation via driver controlled modifier.
  • In the selected driver, remove object reference from the defined variable or the variable itself.
  • Grab/move of the object doesn't update modifier effect anymore although the expression is still valid.

Details

Type
Bug

Event Timeline

Joshua Leung (aligorith) closed this task as Invalid.
Joshua Leung (aligorith) claimed this task.
Joshua Leung (aligorith) triaged this task as Normal priority.

This only applies for the old depsgraph and not the new depsgraph. Since the old depsgraph will be going away soon in 2.8, I don't think it's best that we just leave things as-is now.

In the meantime, to get this setup working without needing to refer to an external object, I recommend doing the following:

  1. Change the driver variable to use the object itself (i.e. plane.1880)
  2. Change the driver expression to "-A"

TBH, there's really no reason to use the "self" mechanism. I'd recommend avoiding it as much as possible, and using explicit driver variables for each input value your driver depends on. Besides being faster to evaluate, using explicit driver variables makes it easier for Blender to keep track of what your driver needs to use.

Thanks, but the reason of using "self" is the object having many thousands of copies (things like petals of opening flowers etc.). Referring each one to itself is not really possible. If it will be fixed eventually, there's no use wasting time of course.

I couldn't figure out why Blender drivers suddenly stopped working without explanation even with Auto Run Python Scripts checked. But I thank God for showing me it was because a no-longer-needed variable had been deleted. Well, now I know that Blender requires at least one variable to be present even if not being referenced for drivers to execute. :-) There definitely should be a default warning of "Must set at least 1 variable for driver to execute" when adding a scripted expression and no variable has been set.

Let's hope these keywords make this ultra-important thread rank higher on Google:

Blender drivers stopped working Blender drivers not working Blender drivers no longer working Auto Run Python enabled, but drivers not working

Wow... this is insane. Even though I was able to successfully wake up the driver by adding a variable in a new project, in the original project that glitched, it has remained frozen. Still investigating why this bug is occurring. I tried the f76d49e latest build along with the 8928d9270f official 2.79a build and neither can wake up the drivers! The glitch had occurred in the earlier d640ce4 build.

Whew... I was finally able to wake it up in the most bizarre way! If the driver is in this frozen state, you MUST add a variable that references an OBJECT ID Block and add some animation to the object, then set the driver variable type to "Transform Channel". Trying to use an animated single property (such as evaluation time on a Path) will NOT work. Of course, this placeholder variable does not need to be used in your scripted expression, it simply sits there to prevent the driver's door from locking! :-)