From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

This page is to document several issues I've discovered/thought-of for dependency graphs. Several applications use them quite heavily (maya and houdini both come to mind) and I've thought of several issues that might be worth considering.

The idea has come up of having a dependency graph that uses RNA properties. This would be quite a bit more complex then what we have now, I suspect, which is why I wrote this page. I'm assuming an RNA-based dependency graph would be based on mapping RNA structs to nodes and having the properties map to node inputs and outputs (this is how other apps seem to work). A final design would probably be different, but might still might benefit from some of the ideas on this page.

Definitions

Node: An entity in the graph, that has incoming and outcoming connections. All the nodes in the graph are executed in order.

Channel-based dependencies

Nodes might reference independent parts of each other, perhaps even in a cyclic manner. This should be handled well, perhaps by basing dependencies on the input connections; from a graphing point of view this might be like having each input be it's own little subnode, with groups of subnodes belonging to the same "node" associated with each other, perhaps with their own dependancy relationships.

Nondestructive Editing

One of the problems with maya, is that once you connect a channel with something (like certain constraints) you lose the original data. This makes me thinks you'd need some system to procedurally edit data. Maybe specific RNA properties would have special setters just for the graph system, that doesn't actually set the property but a procedural version of it (e.g. have a split between 'final' and user-set versions of properties. Sortof how modifiers and constraints work).