Blendgraph - (does Cycles)

Hi All,

This is my official WIP thread for Blendgraph (a node based GUI). I want to add Houdni / C4D Expresso style node functionality to Blender. Blendgraph was a 2.49 animation script that I wrote but I am reclaiming the name for this new Custom Node Tree AddOn.

Node Premise:

  • All Nodes have at least one Output Socket.
  • The value of any Node is always contained in the Output Socket of the Node.
  • Node and Input Sockets have no value and are merely containers.

About socket colors:
When a socket has no connections, it’s socket color (including alpha) is cut in half. When the socket is connected it is drawn using the full color. I am choosing socket colors for the nodes based upon the color name that starts with the first letter of the node type. Thus Integer sockets will be colored Ivory. Float sockets, Fuschia. Boolean sockets, Blue. String sockets Sand… etc.

Here are basic Integer, Float and Bool types working together.


Here is a Math Function node implementing basic operations.




Simple Math
and Function features extended.

Nice! Looks clear.
Very clever to show each value at the socket :slight_smile:

Have you seen the sverchok project?

http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Nodes/Sverchok

Thanks, I have seen Sverchock. Nikitron’s code is what I started with. Then I broke it down into more basic elements. I ended up re-writing the node code from scratch so I could better understand how pynodes work. I hope to continue to add more nodes till the system can finally manipulate objects and datablocks.

Woho… :slight_smile:

From a layman : I don’t clearly understand the scope of this project. Do you plan on eventually making everything a node - geometries, lights, etc. - as in Maya or Houdini ?

Anyway, this looks cool, nodes are always cool. Wish you the smoothest development.

Hadrien

Looks very interesting.
Do you think we could use this for particles ? Because there is a great lack of nodal based particle system.

Thanks for the encouragement. I don’t really know where this is heading either. But I think it could be used for animation or modeling.

I just got Strings working. In this node setup I am using a series of nodes to construct a datablock name based upon an Integer number.


@ddjef: I am lumping particles into the list processing category. Not only do I want to process particles, I also want to be able to process vertices, faces, groups and user lists as well.

@Hadriscus: I want to try to support the most common datablocks first. So mesh, font and curve. I’m not sure how lights would benefit, they are becoming so render dependent these days. But at least LOC/ROT/SCALE support for all objects.

Great! It reminds me of XSI ice.
Is it a C addon? or a python?
Do you think a crowd funding could be usefull to speed up your work?

Cool work atom. I would like to know how you are mmaking this too.

I am making this as a Python AddOn so the code will be available to all.

I have been fighting with event recursion errors and dropped update events for quite some time. I think I have updates, automatic type conversion and cross wiring finally figured out.


Update seems kind of slow when I duplicate this out to 160 input output nodes, however.:spin:

What are the source nodes then, any blender python available object? Can you use any python function as an operator? Do you think this type of system could apply to the vse? That is handling variables of strips etc.

IMO this is the right way to aproach the future of Blender. It should be all base on nodes in a similar way than Houdini. This way you avoid repetition of data by sharing the data (nodes) all over the Blender sections and it would be great also if it does this in a non-destructive way as it is right now is very destructive.

Ideally I would like also to make the outliner be more like a tree view so instead of a stack system you can have a much clear view of how all the data is shared between different modules (particles, cache, textures, materials, objects…)

What are the source nodes then, any blender python available object?

In theory, yes. But those nodes would have to be written.

For instance, one of the first nodes I want to get up and running is the Font datablock. It will accept one input, copy. Then I can feed the result of a list of words to the font copy and we will finally have animatable strings in Blender. A simple animation of the list index will allow phrases to change over time. In this scenario Blendgraph would be emulating some of the RE:Phrase functionality. Other AddOn emulation should be possible as well such as a better array modifier etc…

Do you think this type of system could apply to the vse?

From what I can read, the only thing that prevents a node from showing up in another node tree is the poll() method of the node. You place a tree node type in the poll to filter for the tree type. So cross-tree node migration is technically possible. I just don’t know how useful Blendgraph nodes will be in another node tree. I have been wondering if I can get some other common nodes like math, color, texture etc to show up under Blendgraph. I’d like to see what values they present to my nodes. Until then I don’t know if it will be compatible.

I got list working today. I also added a first draft of the font datablock node. Currently you can only drive the body copy of the font. But even at this stage you can animate phrases by traversing a list with an animated integer.


OMG! Can we have more flexible text entry fields! Can I still adjust the objects in 3D view? Will those mods be additional to node effects?

Oh how I would love to cut n paste into a template field instead of the 3D object.

Great work Atom!

I have been wondering if I can get some other common nodes like math, color, texture etc to show up under Blendgraph. I’d like to see what values they present to my nodes. Until then I don’t know if it will be compatible.

Yes using texture as a value driver would be very cool, ramps could drive scale or motion for example, or noise could be global and alter the text as it passes through.

Can I still adjust the objects in 3D view? Will those mods be additional to node effects?

Right now the node is pretty basic. It relays only the body copy to the font object. The font has to already exist for it to show up in the population list of the node. If you change the font copy in the 3D view it will be changed back when the nodes update. But other properties you can change and animate as usual. It might make sense to implement each major feature of the Font/Curve as a single property node instead of a massive single node (node groups should still be possible). Then you can just add in the property you want to control by including the related node in your tree. Like extrude, size, bevel start factor, bevel end factor, etc…

Can the node accept multi lines, that is formatted paragraphs? At least as far as line returns and tabbing?

Can the node accept multi lines, that is formatted paragraphs? At least as far as line returns and tabbing?

Sorry to say no on this. There are no new ‘features’ being added here. Just a new way to use what is already in place. For instance if you copy and paste formatted text into the Font body you will get the same result as if you copy and pasted into the Blendgraph string field.

I worked on the Input socket of the List node. Here is a screenshot showing the various inputs that you can connect to the list. A List to List connection provides you with another list, however the second list index can be driven by an alternate integer index. A String used as input presents it’s characters as individual entries in the list. An Integer or Float used as input to a list creates a list of numbers in the range of the value of the input. Any list with an input connection loses the +/- buttons for adding and removing entries. The list is controlled by the input.


Ooh nice switching feature. I was wondering if your text node could have its text string sent to it from the text editor?

I was wondering if your text node could have its text string sent to it from the text editor?

That completely makes sense. The output of a text_datablock would be a string. Then you could use the text editor to load files.

Great to see more and more people doing “nodification” of Blender. I wonder though, without any complaints, just a suggestion, wouldn’t be better to setup a small team developing this kind of stuff, with Lukas Toenne as a team leader? (since his hired by BF and is doing the core part of particle nodes, modifier nodes, py nodes…)

Atom + Nikitron and IIRC AnvilSoup is also doing something similar by himself, you guys could setup a little team supervised by Lukas and really speedup the development and be sure all your efforts being integrated into trunk in the future, people would even be more geared to crowdfund if they see a little bit more of organization.

My 2c, keep the good job and have fun of course.