Feature Request: True Ungrouping
Hello brave NodeBox team,
Not sure you're still taking feature requests, but...
I just noticed that ungroup always does a total ungrouping down to all constituent parts, ignoring any subgroups. I had built up a carefully constructed complex object consisting of a hierarchy of groups and assumed I could pass it to nodes that could isolate various subgroups (great for highlighting, coloring the same visualization in different ways, etc.). But one ungroup node and BOOM - a zillion little pieces.
The ungroup action of every drawing program I've ever worked with allows you to work your way back down the group hierarchy. Is there some way to do this in NodeBox?
If you change the ungroup node in the future to do this, you could provide an "Ungroup All" checkbox that was on by default. That way the improved ungroup would not break any existing networks, but I could uncheck this box to do true ungrouping.
Thanks, as always, for listening.
|?||Show this help|
|ESC||Blurs the current field|
|r||Focus the comment reply box|
|^ + ↩||Submit the comment|
You can use
Command ⌘ instead of
Control ^ on Mac
1 Posted by vander.vizioli on 29 Mar, 2018 09:45 PM
Hello NodeBox Team and John,
I'm learning NodeBox and as a challenge me against myself I have randomly choose an image from internet and the goal is to reproduce it on NodeBox, with as the least number of nodes as possible.
ok, so first part of the job was good, I have reproduced all the shapes, but now I have problem to colorize it.
I'm trying to ungroup and colorize it.
My expectation was to use 'ungroup' to get 'dozens' of independent geometries 'broken' or 'ungrouped' and when I associate a vector of colors NodeBox would color each geometry picking up a color from the vector, but that is not what happens.
I`ve tried to break and color on many intermediary steps and no luck...
can any of you point me to some direction
ps. for the moment on the challenge me against myself I`m loosing.... help!
Support Staff 2 Posted by john on 30 Mar, 2018 03:20 AM
This is one of those little problems that should be easy but is in fact rather hard. It is the last of the six visual tasks I identified in this recent post:
I see you made your design by overlapping some circles and rotated rectangles and lines. And now you want to isolate the various little shapes that arise from the various intersections. The reason you can't get them by ungrouping is that those little shapes are not actually there. Our amazing brain perceives those intersections as distinct shapes but NodeBox is only aware of the circles and rectangles you used to make them.
So even if NodeBox had a true ungroup, those shapes would never appear. They aren't really there.
The basic technique to solve this conundrum is to use the compound node to find the difference between your pattern and a neutral background, and break that into multiple contours. I made a subnetwork called Fragment that does just this. You can find it in the rightmost part of the visual tasks NodeBox network I attached in the above post (the part that does the "Find the Intersections" task).
One other detail: the compound node only works with shapes, not with lines or curves. So instead of circles you have to use very thin rings (which you can make by subtracting a circle from a slightly larger circle). I provide a node to do this as well. You can make similar nodes for your rectangles and lines.
Once you capture the individual intersection shapes, coloring them is easy. Please download my visual tasks network, extract the fragment and ring nodes, and give this a try. Fragment uses a custom node that requires path_string.py, so you will have to add that to the code library of your network.
If you run into any trouble let me know; I will add the fragment node for you and give you back a result that you can tweak and color to your heart's content.
Support Staff 3 Posted by john on 29 Apr, 2018 08:55 AM
I never did hear back from you, so took the liberty of making this image for you. The network requires a custom node that uses my path_string.py.
Network and screenshot attached.