The time I spent doing drivers, the above picture is an accurate representation. You add the driver, then spend the rest of the time focusing on the small portion of Prop-Panel.
Well I have to give, in the case of rigging bones, it´s pretty fast to select the Armature>Bone etcetera.
But since the very start, my intuitive feeling was, Ok added driver to this Object, now I would like to have a Node Tree
with Driver Value in, the do some node logics then Driver Output.
Anyone that finds having the Drivers in Graph Editor is awesome? … I never modified a driver value with a Sine curve, but you could as easily modulate with LFO Node in an a hypothetical node tree.
Sounds good.
I think if this is going to happen that the node editor should be adjusted a bit to handle different types of data and also custom datas from python. The method to select a data type and id to edit at the moment seems a bit floppy. I am talking about the part at the bottom where you choose the material/image/texture then object/world then the individual data block name, this whole thing is not very intuitive.
It´s incredible “space” conservative. Which I guess is a upside. But yeah, for a new user it´s not that super obvious in which Node View Mode you are in, are you doing Render Passes/Final Image Compositing, or are you doing Shader Trees.
Anyway the whole thing is undergoing reconstructive work for Project Gooseberry.
A design issue with that thing is that it has from the get-go a mindset to only be one row high, it must fit in the header which can only contain one rows of icons/text.
Tabs could be a solution, if it could fit sub-tabs. Otherwise a floating section in center-lower part of Node Editor could be a solution, but floaty elements are no-go since 2.5X UI design.
(sub menues select where submenues are present, not all have them. and this “scope” selector could be very small just as all the icons are currently)
Anyway, I think the right direction is to make it just as Material nodes work currently, it changes scope automagically in Node Editor when selecting different Objects in 3D View. Guess that´s how particle nodes should work also.
I think what you are proposing might be doable as a custom node using the current python API. The concept being you would add a custom node to the tree that acted like a driver browser to offer up data to other existing nodes. However, on the flip side drivers themselves added to custom node values do not currently show up in the Graph Editor at all as of 2.69. I am not sure if this is a bug or simply has not been implemented yet. The drivers do work, if you install them from code, but their data path seems to obfuscate them from display in the Graph Editor. Filtering on or off seems to make no difference.
I always thought the drivers being in the graph editor was odd. A node system would be great.
Might be nice to have some kind simplistic animation/transform nodes mixed in with the drivers. Have the ability for multiple objects to share the same node set.
Say you have a bunch of fan meshes you want rotating at a certain rate regardless, just plug in a “rotator” node into transform output, set the rotation rate (rpm, rpf, rps), axis and space(global, local, etc) of the rotator and all objects sharing the node set automatically rotate at that speed when rendering animation. This would simplify basic animations like that as well as complex static transforms. Much simpler than adding keyframes, extrapolating, and having the speed tied to framerate.
@atom I had that issue to, adding Drivers to a numeric value in a Node Tree for Materials, never showed up in the Graph Editor.
I struggled so much with that, saved. Loaded the start scene, tried same thing, it did work.
Now back to my project file, there where actually several materials on one object. I got it working by adding/removing Driver back and forth, then finally adding the Driver not on the node value, but in the N-Panel, the value there.
Been thinking that the node editor is perhaps a bit overkill for this. Do people actually make drivers that complex with 50 or so variables?
I think a python expression is much quicker and simpler, the only other thing to do is collect variables.
Afaik a driver can only be used on a single value at a time so IMO this is a perfect example where Blender could make use of popup or blocking interface.
In this image I have added a button to the driven property, click this will bring up the driver editor in a popup fasion. You could potentially also open this editor popup from the f-curve editor.
This means also obliterating the drivers f-curves window and combining it into the regular f-curves editor. The driver modifiers go with it.
I imagine drivers could operate as a sort of modifier for standard key-framed animation, that way you can animate the driven state, right now it seems drivers are fighting with key-framed curves.
Maybe you could take the keyframed value as a variable into the driver, also add different variables like generators (noise and growing numbers etc)
What we have now is the easiest to implement but is it the best?
Basically this expression/ variable interface is very similar to a node interface, except instead of using noodles to connect you are writing a python expression, to me using math with a python string is much easier than connecting nodes.
I think it is much more convenient to not require a full node interface open to edit a driver.
Ideally though if people want to make drivers with 50 variables they probably need a node interface as the string is too long to read in this little box… Potentially it could be done like cycles where you can create a setup like my mockup above and it will automatically create nodes and vice-versa.
Nodes are not necessarily answer for everything, although they are nicely logical, they require a big workspace.
Annoying too is the fact that some Compositor node values can’t be driven except from a group node value. But I like a Driver node suggestion for ease of visualisation but really python expressions seem straight forward, unless you want to integrate many variables. Which can be quite useful.
I also really, really miss the After Effects pic whip, it is such a simple visual metaphor, drawback being the lack of proximity to your variables in Blender. How would you expose values from different tools that are not concurrent on your screen?
The problematic reason for not using a popup for driver editing is that you cannot redraw the popup’s UI like you can on a regular panel, for example when you select an armature you are given the option of selecting a bone. That’s why I moved away from this approach.
I’ve poked in the occasional suggestion on IRC for a modal popup, apon which you could redraw, but it has so far fallen on deaf ears.
To answer the question in the topic, there is a reason drivers are where they are. The curve in the curve editor is actually editable, and it maps the relation between the driver input and output values. On the x-axis is the input the driver gets, which comes from the toolbar, eg the python expression or some such. The curve then determines the output value on the y-axis. By default this curve follows the formula y=x, ie output = input, but it’s possible to edit this curve to adjust the relation between the two. As most users are unaware of this possibility it could be possible to remove this layer of adjustment in the driver without much loss, but it’s still another thing that should be taken into account in the discussion.
The way this works in Maya is a kind of hybrid. Upon creation of a driver, a curve node is created and sneaked between the two properties you are connecting. If it weren’t for this curve node (that you can also edit in the graph editor), the first attribute would feed its value directly into the other, just like a regular node connection. Best of both worlds, but then again, this is allowed by the full nodal nature of Maya.
Aermartin:
This is a bit off topic for this thread, but very briefly:
I will do a bunch of tutorials and other documentation of course. I hadn’t even thought about theming. I suppose it wouldn’t be that much effort to add it.
I think unity has some kind of node logic editor already, or maybe it’s an add on. I haven’t paid much attention. Unreal engine definitely has one called kismet, which looks quite horrible to me. I don’t have much interest in proprietary engines though, and they would be somewhat tricky to work with without access to source. I will do a game logic editor for some free software engine, but I haven’t decided which.
Yeah, sorry for adding more to the OT but may I suggest you look at Godot for the game logic editor?
I only just found it trough BA.org but its looking like just the right engine to have one &
it seems to have a plugin API’s both for engine & editor. Also - it’s MIT licensed!
I took a brief look at Godot, wish I get the time to try it out. Otherwise unity3d is my choice. But I really like staying inside blender as long as possible. With future of Flakes I really hope I just can´t model, texture, rig and animate in Blender. But continue and do game logics with nodes and just launch the game from Blender to try it out.
Similar what I´ve seen videos of Maya integration into some game engines.
That’s my hopes.
@anvilsoup no it’s probably easy but stay away from it as long as possible continue working until everything is set. I just wondered why all nodes had the same color, it was hard to get the clear input/output nodes. but eventually. How Shader inputs, and material output in Cycles nodes could be a template. I think they’re blue by default.
anyways, back to topic. So it seems for me at least weird that the Drivers resides still in the Curve editor, I get it you get a visual rep. and can modify the curves.
But to this day I have never done it. So far the situation I can think of is like flickering lights etc. But that could be done with one LFO node.
But it’s great to see some really skilled devs working on it!
Guys, as I said- Maya’s set driven key makes use of the graph (curve) editor- as you adjust how the driven transitions from one state to another with it.
Can you control that transition by editing the curves in blender? If yes- then it does make sense to have it there
Absolutely, you can. The driver curve will appear as soon as the driven object is selected. You can manipulate the curve just as if it was an animation curve (keyframes, modifiers, etc.).