Node groups UIX improvement [Proposal]

This short proposal is about improving nodegroups UIX.

The main issue with current node groups handling is input / output management which involves a lot of unnecessary clicks. This is forced by overlaying node group content on top of the rest of the nodetree when opening group with [TAB] key. Even simple inspection or modification needs to be done this way. The user needs to remember what exactly is inside a nodegroup to plan accordingly when making changes. Without explicit view of the nodegroup content it is sometimes hard to experiment with different creative design options.

This wasn’t an issue up to this point but with making Nodes a first class citizen in Blender users will be forced to perform these actions much frequently than before. Providing QOL improvements might be beneficial to overall experience.

Right now the creation of nodegroups is pretty well automated when it comes to link handling. That comes with its own sets of problems, but for average user it provides working solution. After it however the simplest modification or every experimental way of working with nodes that involves rerouting, reconnecting, node shuffling, in and out of groups or major modification to a group is a chore due to I/O link management.

Here are actions that are required for almost every group redesign but are not contributing directly to the creation of the 3D form therefore they can be considered a wasted time from the artist perspective (in not particular order):

  • select a nodegroup
  • open N panel
  • add I/O sockets
  • rename I/O sockets
  • connect outside links
  • open nodegroup
  • (re)connect inside links
  • close nodegroup

The solution for that little maintenance hell already exists in Node Editor in a form of Frames. I don’t have strong opinion on merging the two functionalities, but I think good compromise could be leaving Frames as they are and expanding node groups UI so they can be viewed as frames containing the nodegroup content.

With this nodegroups could be viewed in 4 different way:

  1. Hidden (exist)
  2. Normal (exist)
  3. Framegroup (proposed - sorry for stupid name)
  4. Isolated (exist)

Hidden:

Normal:

Framegroup:

Isolated:

With framegroup view users could:

  • easily preview group content with the context of all nodetree
  • make reroutes without dealing with socket creation / renaming
  • reorder sockets with drag’n’drop
  • move nodes in/out of the group with drag’n’drop

Preview content:

Make reroutes:

Reorder sockets:

Move nodes in/out:

Potential navigation between the views:

  • Normal → Isolated = [TAB]
  • Isolated → Normal = [TAB]
  • Framegroup → Isolated = [TAB]
  • Normal → Framegroup = [Ctrl] + [TAB]
  • Framegroup → Normal = [Ctrl] + [TAB]
  • Isolated → Framegroup = [Ctrl] + [TAB]
    • Hidden is an individual toggle, so it doesn’t matter here

Overall framegroups could make working with multiple nodegroups less of a burden and more a streamlined experience.
Also this idea is not really new as it was proposed couple times with the regard of loops and other Geometry Nodes functions that would require explicit nodegroup content visibility. Framegroups might be a unified solution to two usability problems.

8 Likes

Overall, I think that this is a great proposal, especially if loops are assigned to only being in what is effectively a group node rather than going with the idea of having a loop start node and loop end node in the main node graph.

1 Like