Page MenuHome

Drivers don't "produce" values based on modifiers / Modifiers don't change a Drivers value
Closed, ArchivedPublic

Description

System Information
Win7 64, i7-3770 octa @ 3.4GHz, 16GB RAM, Intel HD Graphics 4000

Blender Version
Broken: 2.70 19e627c

Short description of error
When I add a driver to a property, I tried to use a Noise modifier to generate its value, but it doesn't work. Even when I combine a Generate Modifier to it, the Driver Value (as shown in Debug Info) is always 0.0 instead of the correctly modified F-Curve.
In other words: Drivers don't seem to get their values changed by Modifiers. It was probably never intended that they would, but from users perspective an added Driver would be the first place to look for generated Values used in an animation.
When I don't use a Driver, but insert a Keyframe to the property and use a Modifier on its F-Curve, it works. But I expect a Driver to be able to "generate" values as well!?

Exact steps for others to reproduce the error

  • Add a Driver to a Property.
  • Change to the Graph Editor in Driver mode
  • Select the Properties Driver (and remove all possible variables)
  • Set the Drivers Type to Average Value (or anything else)
  • Add a modifier (primarily a Noise Modifier)
  • Click on Update Dependencies

-> The Driver Value will result in 0.0 even though the Modifiers curve will be shown in the Graph Editor, see

Details

Type
Bug

Event Timeline

Johannes Thomas Meyer (Samoth) raised the priority of this task from to Needs Triage by Developer.

Like you said: This was never intended to work AFAIK.

@Joshua Leung (aligorith): Correct me if i'm wrong, please. Would it make sense to disable curve drawing for driver fcurves?

@Lukas Toenne (lukastoenne): No it does not. Driver fcurves are used to modulate/tweak the mapping from values computed from the inputs to the driver.

The result of evaluating the driver (the method used for doing this is specified using the "type" property), is used as the "x" value for evaluation against the fcurve (which defines how different x values get mapped to "y" values). "y" values in turn are what the driver ultimately outputs

@Johannes Thomas Meyer (Samoth): Not a bug.

I really don't know where this misconception comes from (i.e. using drivers for this sort of thing). Is it because in earlier versions, that was the only place that people saw FModifiers created by default? Or is it then notion that "generator" modifiers somehow act as a source of motion that are used as input (i.e ."drive") a property?

We can close it, in this case. :)

@Joshua Leung (aligorith): Thanks for this explanation. But where in the documentation can I find information about this?

The misconception is originated in the wording, I guess. I didn't use earlier versions and just tried to get some output from the Driver behaving like the typical Noise.

Well finally, I want to somehow generate an animated Color Ramp where the positions of the sliders change quite randomly, but never overlap. So I thought, a Driver would be a great starting point, but I couldn't manage it to get a proper output.

Ok, here is another comparison: When I add a Driver to a cubes Z Location value, change it to the Scripted expression "frame" and add a Modifier for my FCurve, all works as expected. I will see the "driver value" being updated when I scrub through the timeline. But when I copy and paste the same driver to the position property of a Color Ramp Node in a Shader the driver won't update any more when I scrub through the timeline... this is the main problem and the bug...

My approach to set this value might not be the best (and instead of using a Driver when I just use one single Keyframe to animate it, the FCurve Modifier works properly and it get's animated nicely) but it shouldn't be the case, that no matter whether I want to "drive" a cubes Z Location or a Color Ramp Nodes element position both should evaluate the driver accordingly?

I just provided an example of this bug:

.

Why does the Driver Value for the "Z Location" change when I change my current frame, but the "Position (Color Ramp Element)" doesn't?

When I switch to Rendered Viewport Shading, the cubes shading will vary depending on the Color Ramp Elements Position. But it won't be driven by the Driver when I cange frames...

Bastien Montagne (mont29) closed this task as Archived.Mar 21 2014, 3:14 PM

@Johannes Thomas Meyer (Samoth) that is another issue… Drivers are simply not working (well/at all) with nodes, this is known limitation of current code, so not considered a bug, rather a TODO… :/

There is a perfectly well done explanation of how to shift around this problem from Mattson Miller. Just in case anybody stumbles over the same problem, there's a working solution provided with a really understandable video tutorial.