Get the top HN stories in your inbox every day.
catapart
hermitcrab
> or if you could employ some kind of machine learning
I'm not sure machine learning is appropriate for graph layout. What a good graph looks like is already well known: no overlapping nodes, minimum line crosses, not too much 'white space'. But doing this layout automatically is very hard (NP complete?).
catapart
Sorry if I was unclear: I just meant that we could employ tensor-based learning methodology, like ChatGPT uses, to parse the graph representations and understand not only their visual layout (ex: no lines crossing), but also their contexts (ex: group functions that all emit events near each other on the graph). Having a machine be able to know what you're trying to do and then clean it up to based on that would be great. Even better, if it could learn how you tend to organize things and pick up "configurations" from that. Adding in "reroute nodes" and stuff when things start looking too loose for your personal liking, or whatever.
rperez333
I would also love to have an auto layout that considers more than just uncrossing lines. I spent some time trying to find a solution for organizing Nuke node graphs (for VFX) that would follow a few additional rules, but I didn't get very far. Not a perfect example, but getting something along these lines would be ideal: https://headjack.io/wp-content/uploads/2017/07/Huge_script-1...
CyberDildonics
This doesn't make any sense. There are already lots of graph UIs that can auto layout. Why would you need 'tensor-based learning' to uncross lines?
hermitcrab
Wouldn't that need an awful lot of training data? And different people might have very approaches to laying out a graph, so all that training data would need to come from one person, wouldn't it?
xuhu
Aligning related nodes regardless of the arcs between them is a big plus, and if ML can infer that automatically from case to case, it's probably worth considering using it for layout.
artemonster
On the topic of this, hey HN, would you play a factorio-like game that ditches all belts and trains and just looks like UE blueprint from hell (i.e. like this https://blueprintsfromhell.tumblr.com/image/185614874046)? So abstract item-producing nodes that can be moved around freely and are connected via some logistic network? Thanks for feedback!
yjftsjthsd-h
That feels like something that removes part of the fun challenge IMO (placement and routing is a big deal in factorio)
artemonster
I loathe this routing puzzle busywork that becomes very tedious. I think there are better challenges like logistics, dealing with byprodcuts, dealing with different recipes, etc
two_handfuls
I’m intrigued, I really like those kinds of games. I would definitely take a look yes.
terhechte
I've been searching for a GPU Node Graph library for some time. All my Github Fu failed me. I'd like to have something which offers:
- Video
- Images
- Rich Text
- Animations
And a way to compose these blocks together into bigger structures with shader effects. Preferably in a compiled language such as C++, Rust or Swift. Does something like that exist?
jcelerier
https://ossia.io does some of it, I've been working on a new release that also supports the whole QtQuick stack in the node graph items but you can already combine videos & shader effects. There are also text and image nodes but i want to redo them, they were quick and dirty prototypes for an exhibition and don't support some of the use cases artists using the software then came up with, e.g. sifting through gigabytes of images more or less instantly.
The underlying C++ part of this is kiiinda independent of the rest of the app, at least the graph part : https://github.com/ossia/score/tree/master/src/plugins/score... - I'm sure it wouldn't be too hard to extract this folder specifically. Shaders use the ISF specification (https://isf.video) and the backend is through Qt's RHI so things are then mapped to metal, vk, d3d or GL.
hermitcrab
Ossia looks very cool. I have also developed a node-based tool in Qt/C++ (https://www.easydatatransform.com/). Might be interesting to talk Qt-related stuff with you some time (Qt versions, deployment, OSs etc).
pjmlp
The ISF specification is kind of neat, I wasn't aware of it, thanks for the hint.
bj-rn
Check out Fuse[1/2]. It's an open source library for visually programming on the GPU. It is built for use in the visual programming environment vvvv[3].
VVVV itself is based on .Net and you can extend its functionality by either writing nodes in C# or importing just about every existing .Net library just by referencing it or installing it as nuget. No need for wrappers[4]. For rendering vvvv uses the Stride [5] game engine which comes with a really neat shader system / language which is basically a superset of HLSL [6]. In vvvv those shaders are represented as nodes and you can open them in your favorite text editor directly from the vvvv evironment, edit the code, save and the changed result will instantly be loaded in vvvv[7]. If you have any questions join the vvvv matrix chat:
https://matrix.to/#/#vvvv:matrix.org
[2]https://github.com/TheFuseLab/VL.Fuse
[3]https://visualprogramming.net
[4]https://thegraybook.vvvv.org/reference/extending/overview.ht...
[6]https://doc.stride3d.net/latest/en/manual/graphics/effects-a...
[7]https://thegraybook.vvvv.org/reference/libraries/3d/shaders....
nmaleki
VVVV reminds me of a 2D TOOLL3
ux
We've just released a new version of Nope Foundry yesterday: https://www.nope-foundry.org
You might want to have a look.
Video, Images, Rich Text and Animations are typically what we strive for. Check out maybe https://nopefoundry.github.io/nope.gl/usr/howto/renders.html and the other howtos.
s-macke
I have experimented with the new WebGPU API a lot and it seems this API is predistined for node graph type of programming. I am hoping that someone will build a website such as Shadertoy [1] and compute.toys [2], but with a node graph editor.
undefined
d--b
To all Visual Node Graph editor developers, I have a request: Can you guys make nodes snap to a grid?
This would make graphs a lot cleaner AND could be made browsable by keyboard.
VladimirGolovin
In Ultraforge (https://filterforge.com/ultraforge/), all nodes will snap to grid, and the nodes are designed in such a way that connections between then will automatically go along the grid lines -- this greatly reduces the clutter.
Could you explain, however, how could the grid make node graphs browsable by keyboard?
d--b
Let’s say your grid is 8x8, you could make a pointer that’s 16x16 and that you can move around with the arrow keys. When it touches a node, then the node is selected. But then you can hold ctrl to jump from one node to another, if they’re aligned.
Kind of like excel, how you browse multiple tables in the same grid.
hoc
I'd think that also helps in a lot of pointer-based editing use cases: Creation, selection, grouping/clustering, sorting, transforms...
Towaway69
Node-RED - nodered.org - has snap to grid but no auto alignment...
undefined
pjmlp
Looks quite nice, thanks for sharing and the overview of the approach taken.
As remark on the spaghetti coding, most visual programming languages do offer modules, and the ability to add some structure similar to digital circuit design, if anything they make it easier to visualize bad code when proper coding isn't followed upon.
frou_dh
Here's a good comment from the archives elaborating on that: https://news.ycombinator.com/item?id=4515315
pjmlp
Yeah quite to the point.
samsquire
Looks really good, thank you for sharing.
I enjoy graphs, you can think of the world wide web as a graph. When you click a link you get a different perspective of that vertice.
My dream is to combine nodal rendering to animated field of view layout.
In all the attempts I've seen to create an interactive 3D graph the problem was that moving around didn't change the perspective and paging in and out of the nodal elements.
Navigating a graph where the graphs aren't moved relevantly while you walk around is not useful it's like manual labour of walking to the store, the nodes need to change perspective, animate into different variations as you move around and page in and out different edges and vertices.
The algorithm you use to move/page nodes in and out and around has to be dependent on what you're doing.
seism
Very exciting thoughts here! I'm a more "traditional" coder and struggle with adapting to the metaphor of visual/node tools even though I acknowledge their power. I'm a fan of https://cables.gl which is also used for a lot of beginner and advanced projects in the Demoscene. It's great to see so much thought put into usability and collaborative features which bring digital art engines forward.
bluepanda1234
What library did you use to create the node graph? https://github.com/Nelarius/imnodes?
joenot443
Looks more like https://github.com/thedmd/imgui-node-editor/ to me - both are great libraries though.
smaddox
> This felt like a good solution; I could instantly see how most features could map to this setup and it most definitely wasn’t a visual programming system…
Huh? I don't get this. The example right below seems a lot like coding with nodes to me. Perhaps they mean it's less procedural, more declarative? But that's the case with all of these visual programming interfaces. At least until you run into the limits of the declarative sub-language.
pests
It sounds like they wanted to avoid programming at the level of loops, if statements, functions, blocks, etc which many visual node editors do employ. I do agree though that his solution is similar to various shader graph editors.
rossant
ImGui is an amazing piece of software. Being able to quickly display interactive widgets and dynamic charts for your variables and objects is incredibly useful when working on GPU-based visualization applications. The variety of features it offers is truly impressive.
MegaDeKay
Not to mention that it runs on a pile of different platforms. It gets used a lot in Sony Vita homebrew stuff, for example.
hermitcrab
In my experience node-based tools work great:
-If they are restricted to a suitable problem domain (e.g. image/audio/data processing).
-If have the ability to do some scripting in a node, to cover specialzied cases the designer didn't allow for.
(I'm working on a node based data wrangling tool)
undefined
35mm
Is there something like this for the web?
I have a Django app for building topical maps for content marketing, and I'd like to be able to visualise the topic maps in terms of interconnected nodes.
artificial
Several out there. Pick your poison https://vueflow.dev/ or https://reactflow.dev/
winrid
you could compile this with imgui to the web: https://github.com/jnmaloney/WebGui
but you'd have to write communication to your django app. I would do that in JS and then pass events to the WASM layer.
however there are react etc specific libraries as others have commented
Get the top HN stories in your inbox every day.
Yay! More work on, and thought put into, visual scripting systems!
This looks really great! I'm not sure I agree with the conclusions, nor the need for a different system than what Blueprints or Geometry Nodes offer. Personally, I think both of those things are great save for the major (and infinitely complex) feature of "clean this board up". The nature of the graphs make it easy to see when code repeats or is doing too much, just so long as the graph, itself, is legible. So if you could have some smart snapping, to force devs to keep it tight, or if you could employ some kind of machine learning for cleaning it up into sensible data flows, I think most of the biggest complaints I've heard from people who actually use these systems, would be addressed.
That aside, I'm always open to a new way! I, again, don't think what was demo'd is any cleaner than Blueprints (especially not fond of all of those connection points. Bottom and top connections don't look tidy), but that is definitely in the eye of the beholder, and this appears to be a well-delivered first attempt, but a first attempt nonetheless, so I'll assume that whatever visual issues I have with it, the underlying scheme works well. Because, honestly, it looks like it does! As presented, I think the system would definitely work great and it would certainly make a few things easier than how they're handled elsewhere. I'll admit, 'curry it to a specific data type and then operate on that' is how I code anyway, so I'm biased toward liking it. But I like that methodology because I think it works exceptionally well, especially for work like rendering. So great work on both the full app and this whole new way of scripting!