[Bf-committers] Compositor nodes-rerouting

j.bakker at atmind.nl j.bakker at atmind.nl
Wed Aug 31 09:49:34 CEST 2011

Hi all, 

I want to discuss this proposal. Many people have requested it, but I want
to be sure if it is satisfying, or that there are other things that can be

I have limited the proposal to the Compositor tree, but it could be done
for other tree's.

===== Proposal =====

This proposal is a UI enhancement on the node editor to allow better
workflow with large node systems.

==== Noodle line ====

By using MouseClick-SHIFT on a noodle a point will appear. The user can
positioned this point (Reroute point).
This point can attach noodles at North, South, East, West
An arrow will be drawn on noodles between two reroute points
If noodles reach a certain length, an arrow will be drawn. This way users
can see the direction of the line.
Every point can have multiple outputs. Eg you can add multiple points this
way if you can connect the Combined socket of the renderlayer to other
nodes in a structured way.

Current patch is limited to the compositor node tree.


===== Impact =====

==== DNA ====

There is a new NODE_FLAG and SOCK_FLAG called NODE_REROUTE and
SOCK_REROUTE. telling the UI that it need to draw differently.

==== UI ====
The point is a special node, "RerouteNode". All nodetree will have one. it
will be in a new submenu named "Helper" in the add node menu. This sub-menu
will not be visible on screen.

=== Operators ===

a new operation will be added where the user can click on a line holding a
certain key and this will add a RoutingNode in that position.

=== drawnode.c ===

For the RoutingNode a new function is introduced to draw the node.
When drawing bNodeLink that is connected to a routingnode a different
algorithm will be used for drawing the bezier.

If the distance traveled on the x-axis is longer than the y-axis the link
will be connected to the east or west of the node. If the y-axis is longer
it will be the north of south.

When it is connected to the north of source, the bezier will be adjusted to
draw it correctly.

When a line will be between two reroute nodes, an arrow will be draw on the
line. This way the user know where the line is heading to.

==== nodes/???_ ====

All node types will get a RerouteNode. currently only the compositor will
get one.
A rerouting node contains one input socket and one output socket and uses
pass buffer to pass the data to the next node

mail2web - Check your email from the web at

More information about the Bf-committers mailing list