Everything nodes

yeah using nodes to replace the GUI, yeah good luck with that one.

We already have that and is not particularly popular and for good reason. Very limited , very awkward

Registration process in python is super easy and is not even required unless you develop an addon and addons are for general usage, meaning they are code meant to be shared among users. The entire Blender GUI is made in Python anyway. Not the actual functionality of the GUI of course but the layout.

So if you try to use nodes to avoid coding in Python, get ready for a world of pain, not to exclude the massive wasted time trying to do things the hard way while trying convince yourself your are doing them the easy way.

Nah, don´t replace it completely. As I said above it´s a bridge and useful for certain circumstances.
Sometimes GUIs programmed in Python are better.

The registration process might be super easy if you are a programmer who does this all the time and if working with code is second nature.
But for an artist who also develops an addon here and there it´s a pain. If you only do this once or twice a year you forget how it´s done and have to look it up each time.

I tried Houdini a while back and you do that sort of thing there all the time. You use nodes for certain things, you combine them with python or this special Houdini language nodes and you have certain values that are exposed. It is very useful.

Also how do you know that it isn´t very popular? If you download materials from Blendswap for example you often get a node group with a bunch of values exposed and if you´re the node tree within this group is “documented” with layout frames.

1 Like

It should be quite easy to have a modifier stack that maps onto a node tree. Most of the time you can simply use the modifier stack, but if you need extra, you can always just open a node editor and start doing it by manually.

Any time you add or create nodes manually, it would break the modifier stack logic, though, and you would be forced to use only nodes from that point on.

Nodes are a type of programming, and they can be very powerful. If we have the capability of joining node groups into single master nodes, it should give a lot of power with very low overhead of complexity. I think most users should find it easy to use node groups collapsed into one node if the work was done thoughtfully.

Plus Python is kinda slow. I hope there’s a possibility to use dynamically linked libraries in the new nodes systems. You can simply give the pointer to a Numpy array to a C++ or Rust program and it makes the data transfer completely seamless, from Python to C++ without doing any copying or data transforms. If there’s Python, there’s also that possibility. So I hope there’s Python support to make new nodes and node systems.

edit: Not talking about GUI, but pretty much everything else outside that, including rigging.

I know its not that popular judging from the fact we have an addons forum , a python support forum and not a single node forum just a material and section forum. Also the level complexity of the problems that those threads deal with. I think its a pretty safe assumption.

I do not disagree that a node GUI will make a lot of sense in specific situations. I do not doubt the usefulness of nodes. I was replying to a user fearing that nodes could replace everything and merely claimed that for complex scenarios you want to use a tool designed for such situations , with almost 40 years of maturity and millions of users, well proven to excel for myriads of such situations even outside 3d graphics. I am merely stating the obvious.

There are situation that using nodes is great, others that using python is great. As a user you gain experience using the two to know when its more appropriate to use them and how.

Python is slow by choice not by design. If it was by design it would not have completely replace C++ as the de facto language for AI coding. AI is far more processor and GPU intensive than 3d graphics.Python can be slow outside the box when you use it the easy way, dynamic features etc. If you use it the hard way by relying on high performance Python libraries that are coded in C (like 50% of CPython is) it can be even faster than C code. Because in that case you are basically executing C code via Python, but also means you sacrifice a lot of what makes Python so easy to use.

This is why when you see C vs Python benchmark they almost never use high performance libraries like numpy and speed accelerations tools like Cython. The more the performance is boosted the more Python looks like C .

So speed is definitely not the issue here. The Blender Python API was not designed for speed but for ease of usage and makes sense because its made to be used by Blender users that may never have written a line of code in their entire lives. While Python AI libs are made for people who understand optimisation, C and deep internal of Python, which is why they get far faster performance very close to C/C++.

The vast majority of Python users (not just addon devs) choose to use Python the easy way, as such they get abysmal performance at time (10-1000 times slower than equivalent C code) who can blame them ?

Time is a priceless commodity and writing code is a time consuming process. Far more costly than buying a super expensive CPU and GPU.

2 Likes

going on the generic, nodes in the end are not classes that contain algorithms?
what would be the difference between a visual node and a written class?
… taking into account that in theory you can write nodes in python and then use them … in the end the use of nodes is not simply a visual object programming?

mixing the two technologies, the scripting and the use of the nodes, I would see nothing but a speeding up to get results …
it would be interesting if there was a process that would convert the nodes into written programming and vice versa ^ ___ ^
… …

1 Like

Nodes are simply a new kind of programing lenguage, if you let it without an user interface and dificult to share it will become anecdotic, give the nodes a kind of easy UI building tools and development will grow a lot cause it would come from simple users instead of a few developers comunity.
Give nodes the ability to build their own UIs,( put it on a shirt this summer :grinning: )

nodes are specific implementation of sub category of a category of coding, called “visual coding”

that sub category is called “flow graphs” and they are almost as old as coding itself. Flow graph based coding was developed in the early 1970s (almost a decade before the invention of C and more than decade for C++ and Python) so its almost 50 years old.

Nodes are closer to what we call in coding “procedures” aka “functions”. Its a collection of code instructions with inputs and outputs.

A class would be represetend more closely with node groups but because node groups do not currently support any form of inheritance, nodes do not have an equivelant of classes in Blender. Of course that does not mean you cannot have a class implementation with nodes but that would have to be coded either with Python or C.

In theory node should be able to do anything a regular programming language can do. In practice they suffer a large array of technical limitations. For example one can only extend nodes through the usage of another language like Python or C. Most importantly they do not offer sufficient control in the flow of execution and they are too tied to the data they meant to represent like materials , textures etc.

Which is why we need “everything nodes” system in the first place.

The video you posted belongs to the same category of visual coding, but not the same sub category which is block based visual coding. Blocks are more successful because they map closer to text based coding that makes them much easier to read. Block based coding has been popularised by the kid’s programming language Scratch. Block based visual coding is much newer to flow graph based visual coding.

Blender as we said already can create new type of nodes with the usage of Python and of course C. This is what made projects like animation nodes and Sverchock possible.

Everything nodes is the child of animations nodes, which was implemented in Python, BF hired the same dev to port the code to C and extend it beyond animation nodes.

That’s a common misconception, in my experience 90% of addon developers never coded a line of code in their lives before started developing addons. Python is extremely popular in general with non coders. As such a node gui will have a minimal effect in a community which is still dominated by users.

The whole point of Python and scripting language is to be used by users. Scripting was popularised as a term back in the 90s via Javascript because back then Web was far smaller with no web developers and web designers, regular people had to design their own websites which is why Javascript is considered one of the worst programming language because it got many of its features later on as it was meant to be used by user and not coders.

However even before that back in 1964 we had BASIC a language designed for kids to help them learn coding. It because so popular that became a profesional language by Microsoft with the name “Visual Basic” , also in the 80s Basic and 70s Basic was almost the only way to operate a computer so it had to be user friendly. Unfortunately for similar reasons, like Javascript, has a bad reputation.

Ironically Python was not designed to be either a scripting or programming language but a mini language for writting quick OS utilities. Which explains the minimalistic look of the language that made it so massively popular among coders and non coders alike.Unlike the previous 2 it was designed for professional coders which is why it has much better reputation and is much better designed language overall. But because of its minimalistic ideology (we call such code “pythonic”) its by far the top language for learning coding.

it would be super powerful to adopt nodes that contain visual blocks that can be quickly transcribed into text ^ ___ ^
at least the syntax problems would be the first to be eliminated
…without counting the advantage of simple drag and drop instead of rewriting entire pieces of texts each time
with the sacrifice of a small rigidity …
which is not too bad for someone who is not a developer but an artist and a sporadic scripter

returning instead to when I wrote up about an acceleration in the awareness and rewriting of some tools, I referred more to the fact of the possibility of creating trees of non-destructive modeling and also animations and parametric precisions which is advantageous for the cad and cam … a bit like xsi and houdini does …
it’s true level up … people will get used to the nodes and this way of working out

it is from this awareness that new addons and tools will be written that will use “everityng nodes” … not in the sense of writing tools with nodes, but making use of the tree of nodes in tools and addons

problem is that most people do not realise that have no experience with coding is that like 3d graphics , in coding the tools play a massive role.

A node system may be able to replace to an extend a text language like Python , however their ease of usage pales in comparison with the ease of usage of professional coding tools that offer code inspections, auto completion etc etc.

Bleuprints in Unreal have brought some of those tools but still nowhere near. So basically every time you use a node system you waste your time because you would be able to do it faster using something like Python because you would be able to use at least a code editor that would filll the code for you and help you avoid common pitfalls and mistakes.

Thus why you do not see heavy usage for complex situations, in that case user prefer to use something like Python with a powerful IDE like PyCharm or Vistual Studio Code. There is no comparison to how much faster you can get things done. Of course that becomes apparent only if you try to make a very complex node system , like that poor guy that made that amazing Eye material node system.

Doing the same with Python it would have been massively faster , easier and easier to read/understand by others too. Ironically users may think nodes are easier to user, in practice they are like carnivirous plants, they may taste sweet but they can be a pain afterwards :smiley:

I think it’s also a question of how one is brought …
as an artist and more than anything else used to “the geometric representation of mathematics”
from my point of view, I understand faster the use of node trees than a written programming text …

a developer probably finds it more effective to read a script …

just as a musician finds it easy to read a score … and probably hear the music of an entire orchestra in his head simply by reading ^ ___ ^

nope trust me, node systems are messy and I am an artist before being a coder. Not just 3d and 2d but also music which by the way I have used nodes even more.

Coders are human beings, they do not come from the Galaxy of Coderium and the planet Codera. They think like you artists do, the breath like artists, they make mistakes like artists do.

There is no such thing as “the coder mind” , “the artists mind” etc. the reason why code is far easier to read is because its closer to the written language which feels natural to us humans and because the tools have been alot more developed in the long run because they have been used by a lot more people compared to node systems. Also they are more polished because they are used by profesionals.

Its a bit like explaining to a kid why making 3d in microsoft paint even though it make look simpler and easier its actually harder than using something like Blender. Blender may require a lot more learning but there is no comparison on how much more productive it makes you in the long run even if you use it only part time and rarely or how it can save you countless of wasted hours on a much simpler software.

1 Like

I feel that most of these concerns would be alleviated with the possibility to insert a code snippet inside a node tree, the “script node” Jacques mentioned earlier. In Houdini there’s this wrangle node which lets you write vex code (their own language for geometry manipulation), and is equivalent to building a vex node network which translates down to vex language anyway. Most nodes in Houdini being kinda higher-level than this, it’s nice being able to insert a wrangle to do something very specific between two “regular”, pre-built nodes.

1 Like

as I explained this is already possible via Python, you make your nodes via Python and then add those nodes to whatever node system you have, material , texture , whatever.

Also in my experience, inventing new scripting languages instead of using existing ones that have are well proven to work in pretty much everything, is a bad, bad, bad idea.

Which is why Python dominates as scripting language not just in Blender. Lua dominates in games etc.

The reason being that if you use that custom language for what it suppose to , all is fine and dandy but as soon as you try to do anything weird it will bite you hard with its limitations and the crazy workaround you would have to use to get it working properly.

Those puzzle blocks are the worst way to go about it. They combine the downside of the text layout which makes the coding difficult for some people with rigidity of the block based GUI which makes the node based coding unappealing to other people who prefer the text yet has no benefits of the true node based approach. It’s literally worst of the both worlds. Unreal Engine 4 blueprints show how the node based coding should be done, and on the other side, C# in Unity shows how text based coding can be made accessible. But those puzzle blocks are really the worst of the both worlds.

What about the performance argument ?

Unreal Blueprints are diffirent beast, not only they come with good development tools like inspectors and a debugger. Not only they can be converted to C++ for extra performance.

The entire Unreal Blueprint system is designed around the idea that the user will be making small scripts, the equivalent of few lines of code. This is possible because Unreal breaks everything into small chunks minimizing the risk of high complex node systems. Unreal editor also makes it very easy to navigate from chunk to chunk.

Even though you can do anything with Blueprints and make entire games, everything is so well organised and broken down to small pieces which minimise the issue. Ironically if you compare a typical Blueprint and a typical blender material you would be amazed how much more complex the material is

Epic understands well the design limitation of nodes and this is why it works so well for them. It still not easier than Python one tiny bit for non coders. But the good news is the users that never coded think it is and that is all it matters in the end :smiley:

That’s is what good marketing is after all.

Of course to the defense of users its not as if they have a choice, I love Python but even I would prefer Blueprints to C++ any day of the week

C++ is a great language… if you are a masochist … starving for more pain … nothing but pain …

what argument exactly ?

not at all , I’m trying to bake right now and I find it really simple and intuitive … especially for not a programmer who knows little programming languages …
definitely teaches the basics quickly … and then there is the text assembled next … immediately editable … in more languages

Yes, but it’s a tool for learning, not for actual professional use. You are literally getting no benefits of the actual node based programming (so it’s unrelated to everything nodes). You are just seeing the code in the exact same form factor as if it was written, but with less syntax. But as soon as you become at least slightly proficient at coding, writing actual code in an IDE will become faster and at the same time more flexible for you than assembling these blocks.

So again, what you are posting is a learning tool, it’s not a good solution to be integrated in any app as an actual tool to be used in production.

you are correct that is mainly learning tool but he is correct too in that being far more efficient and better stepping stone towards coding than nodes.

With blocks you get all the benefits of nodes, minus the ugly spaghetti.

that’s exactly what I meant …
obviously it looks like a toy for professional developers …
but for an artist who has to set up just that script and knot for his momentary project … this approach would be gold cast.

professionals developers, they use scripts, of course …