Hi, I am a big fan of World Machine and have been blown away by recent updates. The program is really modernizing its UI and workflow with great quality-of-life improvements!
There is one major area that I think still could see significant improvement, and that is how wires are rendered. They currently have an angular look that unfortunately leads to a lot of overlapping wires, which makes it very hard to read complex graphs. They even have a tendency to do little loops at times. Route points and group boxes do help, but they tend to still create overlapping wires.
I am a longtime user of Unreal Engine’s material nodes, which can also get out of hand. However, I have found that they are much easier to read if wires do not cross. The more complex a graph gets, the harder it is to achieve that- but there are 2 features in UE’s material nodes that really, really help minimize wire crossing, and therefore greatly improve graph legibility:
1, the wires render as curves. I actually customize the curve “tightness” to make them more straight than the default. The straighter version takes a more direct shorter path and is less likely to cross other wires.
2, they recently added “wire portals”, also referred to as local variables, or named reroute nodes in UE. Essentially, its a node that is similar to a checkpoint node in world machine except you give it a name, and then can add a new node elsewhere that references the named node and continues its data flow from there, without the need for a wire to connect them. The beauty of this is that you can make many references to the named node to connect it up in a lot of distant places, and essentially eliminate a ton of wires that would otherwise branch wildly across a graph. Its a fantastic feature that lets you organize your graph into discrete chunks of stand-alone logic, and makes it easier to cleanly reuse those chunks without the wires getting out of control and crossing everywhere. here is a tweet that shows it in action.
Please consider adding an option to make the wires render as straight lines or subtle curves, and wire portal nodes, with the aim of minimizing wire crossing and improving wire legibility! Thank you!
I agree it can get clumsy pretty quickly, and the somewhat odd/unpredictable/uncontrollable behaviour of the wires and routepoints is not helping that.
I really like the “tightness” aspect for curved wires, although I myself don’t like curved wires at all. Agree it should become an option for those who like curved wires.
An important feature would be that hovering over the “local” wire, would still highlight the original wire, to emphasise the connection a bit and it will probably combat confusion in large node networks. Personally I don’t like this behaviour, because if you open someone else’s file, it can already be hard enough to figure out how everything is routed, now add wire portals to the mix and suddenly it can get a lot more complex/less logical, but maybe I’m a bit too pessimistic
Thanks for the input! I agree with your insight - essentially all wire styles are fine right up to when they start crossing each other, at which point you can’t read the network at a glance anymore.
Funny enough, I’m actually experimenting with some changes along these lines. Curved wires are in alpha right now. As Hylk noted, not everyone likes the look of them, and they can get just as unruly if you let them. But on the whole, I quite like them and they are likely to make it to the final release. (as an option, of course)
The idea of wireless or portal devices has come up a few times before, and I’m positive towards the idea. It’s a little further out though, because it meshes well with a different set of features that will drop in the version after AP most likely.
Hey thanks for the response Stephen, and wow that’s great to hear that you have curved wires in alpha right now! And yes, even curved wires can definitely also get out of control- but yeah, I just realized after a while that whenever I went in to “clean up” wires, it was really just a process of trying to minimize the amount of crossing wires! And wires that go more directly between pins tend to cross less. I agree with HYLK that I like the curve to be pretty subtle, and mostly go straight for that reason.
In response to HYLK’s comment that wire portals would possibly hinder legibility- I thought that might be the case as well before I started using them in UE’s materials extensively. And its probably possible to make a totally crazy graph with them. But I found in practice that the fact that they remove crossing wires and also very long wires actually works wonders for legibility. In my opinion it is just another (quite powerful) tool for organization and its up to the user to utilize it well. Like group boxes, you don’t have to use them- but if you use them well, it makes things real clear. When used well, portal nodes make the flow of a graph very clear by letting you visually separate big chunks of logic.
And yes, being able to easily jump from a parent wire portal to its children wire portals is a key quality of life feature for them. In UE, double clicking a parent portal node will select all its children and zoom out to frame them all, and double clicking a child will conversely select its parent and zoom over to frame it. It makes it super fast to navigate and understand where they go. Parent and child portal nodes also are color coded to match each other (every new named portal node gets a random color tint to differentiate pairs) and have the same name, which makes it quite clear.
The name on the node also makes it real nice to “read” the logic, similar to variable names in code- it lets you tie off a section of a graph with a node that tells you what the output represents with its name. Often times you might make sections of logic for things like “Noise Generation,” “Masks” “Erosion”, and then combine them with a very readable final section like “Noise Generation + Masks + Erosion = Output.” I’ve found that wire portals have made that very high level view of the flow of a graph read very well. You could use group boxes to communicate this sort of thing, but portal nodes are another way for a graph to clearly read like that without even needing them. Of course, its the clearest when you use both!
I definitely suggest trying them out in UE, they definitely surprised me and changed the way I work! Thanks again for the responses, and for considering these ideas!
In a similar vein to portal devices, I’ve long considered making WM do something more special when routing between groups. Groups are the primary organizational device in a graph, and there’s a lot more that could be with them.
For example, wires to/from other groups could be routed next to each other on the way in/out of the group; each of these “cables” of wires could then either be completely hidden in the spaces between the groups, or replaced by a single group-group cable.
Basically, I’d say that the visual usefulness of a wire degrades rapidly once it travels more than 1/4 to 1/2 the screen; for wires that have to go further than that, it definitely makes sense to look for complementary paradigms to try and show what’s happening.
One thing in Unreal Engine and I think Substance designer - is that you can very easily drag a bunch of connectors to a new node. So if you have one node going into multiple other nodes you can Ctrl + drag them all at once to a new one.
I think this sort of thing would be really useful for WM as well as I’m constantly wanting to reroute a bunch of stuff at once without having to reconnect everything again (maybe there’s a way to do this but I haven’t found it!)
Full disclosure, I brought it up previously, but… That Portal Device needs to happen eventually! I still run into scenarios where I’m like, “I could really use that here”.
Also, @EggsBenedict: So THAT’S how they did that in Substance Designer… I am getting pretty good at it, but couldn’t figure that bit out, haha. Thank you!