这个帖子看着有点逗,就翻译过来吧
After a request by Arend I added an unflatten component for reversing a flattening operation. If you still have the original tree and the number of items hasn't changed it can be put back together:
However I just cannot come up with a good idea for an icon for Unflatten. The best I could come up with was an acorn, which is a tenuous link at best.
Any ideas welcome, but please remember that the icon must de drawable and recognizable in a 20x20 (24x24 in an emergency) pixel image.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Reply by Mateusz Zwierzycki on
I know "unflatten" is a straightforward name, but it may be named "Rebuild tree"... or similar.
Attach files (limit: 5MB)
-
-
Permalink Reply by
David Merlin on
-
Unflatten seems to be the rebirth of a data structure, which is an easy jump to a butterfly or a butterfly emerging from a cocoon. A reach could be a phoenix, but that gets away from the "tree" themed icons.
-
-
Permalink Reply by
Andrew Heumann on
-
is this different in functionality from the "match paths" component in HDT Utilities? Just curious... I'd be happy for that to be made a built-in feature. It seems to me that "unflatten" is maybe not the clearest way to express that - because it can work on data that was never flattened from a tree structure to begin with (if I'm understanding correctly how it works...)
not that that helps you with the icon problem...
-
-
Permalink Reply by
David Rutten on
-
Basically it iterates over all the items in one tree and assigns them to the path structure of another tree.
T0 = {ABCDEFGHIJKL}
T1 = {NOP}{QRSYU}{VWX}{Y}
unflatten T0 using T1 as a guide gets you {ABC}{DEFGH}{IJK}{L}
I think unflatten is quite a good -albeit a made up- word for this.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
David Stasiuk on
-
Could just be "restore tree". I also like the idea of a sapling coming out of the flattened stump.
-
-
Permalink Reply by
Michael Pryor on
-
I think match tree, maybe just add some sprouts coming out of the acorn. Also, will it work on multi layered lists like 0;0, 1;0, 2;0 ect. As the action you show above can just be done with partition.
-
-
Permalink Reply by
David Rutten on
-
Already wrote another component called [Match Tree] :)
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
Michael Pryor on
-
Sounds good :)
-
-
Permalink Reply by
David Stasiuk on
-
hey what does match tree do? I've been putting together a series of path filtering components...
-
-
Permalink Reply by
David Rutten on
-
-
Permalink Reply by
vincenzo caputo on
-
-
Permalink Reply by
Michael McCune on
Reply by Michael McCune on
Permalink Reply by Michael Pryor on
I like that idea without the hand. Just the flattens stump icon with a sprout growing out of the top.-
Permalink Reply by
David Rutten on
-
It happens. It often takes longer to come up with a good idea and draw an icon than it takes to write the code for a new component.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
David Rutten on
-
-
Permalink Reply by
vincenzo caputo on
-
I think it is better to remove the grass. I will be more iconic.
Best
-
-
Permalink Reply by
Michael Pryor on
-
Nice one
-
-
Permalink Reply by
Pieter Segeren on
-
Looks great. I'd say it lives up to the(your) GH standard.
To split a hair, It think Vincenzo's idea will put an end to this quest:)
I was thinking "Revive Tree" for the name, but than again, I'm dutch. -
-
Permalink Reply by
Ryan Gathmann on
-
I think the sapling growing from a stump is a perfect analogy. The tree had been cut down, but now it grows back.
-
-
Permalink Reply by
Luiza Soares on
-
-
Permalink Reply by
Anja on
-
How about replacing the old tree on the (flatten icon) treestump and put a bandaid over it ;)
-
-
Permalink Reply by
David Rutten on
-
This is freaking me out. The tree-stump-with-band-aid idea is also what my girlfriend came up with, who is also called Anja and also into dancing...
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
Permalink Reply by Mostafa R. A. Khalifa on
-
Permalink Reply by
Erick Vásquez on
-
-
Permalink Reply by
Michael Pryor on
-
I still think the stump and sprout are the clearest.
-
-
Permalink Reply by
Chris Tietjen on
-
+1
-
-
Permalink Reply by
David Rutten on
-
-
Permalink Reply by
Michael Pryor on
-
Saw?
-
-
Permalink Reply by
David Rutten on
-
Clean Tree actually, I needed the cherries for another object which is actually called [Cherry Picker]. No more subtle visual pun I guess...
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
Ángel Linares on
-
The first idea that comes to my mind was a burned forest replanted...but I know that it is quite complicate to translate into an icon.
Or perhaps a black (burned) tree with a small green branch growing.
https://www.google.es/search?q=replanted+forest&aq=f&um=1&a...
-
-
Permalink Reply by
Simon Murphy on
-
Following on from the last comment you could have one tree blacked out and the smae tree with colour overlapping in front.
-
-
Permalink Reply by
newy011 on
-
Do all the suggestions so far strike anyone else as well.... 'autistic'? For the informed individuals who are part of this thread it seems oh-so-obvious that a sapling growing out of a tree indicates 'unflatten', however take a step back and think of someone who has never used the program before nor been part of this post, and what they would think looking at such an icon, or worse, at a tree with what looks like coloured fruit on its branches? None of them say 'unflatten' to me. I suppose that maybe be my own ill-founded view that if you are going to create an icon it should in some way pose what it actually does.
Really it's yet more debilitating abstraction and if the forum 'fanbois' are removed from the equation, then this kind of methodology will be met with a lot of confusion, frustration and criticism from future users and should be avoided at all costs. Can some analogy be proposed that actually refers to what the component is doing....i.e unflatten! A good start point would be to forget the whole 'tree' thing for a while and actually come up with a pictogram which would show an object being 'unflattened' and then apply the whole 'tree' part somehow if it is so important.
Food for thought.
-
Permalink Reply by Michael Pryor on
But it makes sense. It is not just flatten. It is flatten tree as gh works with data "trees" anyone who reads the book would know this.-
Permalink Reply by
newy011 on
-
What book are you referring to?
And I dont see how it makes sense (if at all possible, try really hard to imagine a new user looking at that icon rather than yourself, and without being biased, tell me if it makes sense). How can any uninitiated individual (i.e. new user, not Michael Pryor) fathom that a sprout coming out of a tree stump would refer to 'unflatten' tree? Even that sentence by itself sounds absurd. I guess at the very least there is the [wholly dependent] GH user forum to explain all. Bad user experience once commercially released is what concerns me the most.
-
-
Permalink Reply by
Michael Pryor on
-
Easy. Use the text components if its that difficult. :) Grasshopper icons are a language. Just as one would need to learn any language before they speak it they need to practice and use them. This goes for coding as well. When someone understands data trees and how grasshopper works then it will make sense why unflatten is the rebirth of a flatten i.e. the re-growth of a stump. Im certain grasshoppe will have an official document once its completed as it is mcneel and they document help files really well online. http://docs.mcneel.com/rhino/5/help/en-us/commandlist/command_list.htm
All in all grasshopper is one of the easiest coding languages to learn.
To be perfectly Honest I dont even remember the icons. I just type the commands in I need. -
-
Permalink Reply by
newy011 on
-
Thanks. One quick point: GH isn't a coding langauge! Its an algorithm editor.
-
-
Permalink Reply by
Mateusz Zwierzycki on
-
Now we can argue :
-
-
Permalink Reply by
Michael Pryor on
-
It is a programming language :)
-
-
Permalink Reply by
newy011 on
-
Correct! It is not however coding; clearly Meteusz overlooked the all important 'C' word in my post! A form of programming it most certainly is, but nowhere in my post did I suggest otherwise. Heck, even managing your washing machine cycle is a form of programming. What a wonderful digital world we live in. But lets not get into another 'visual programming and why it sucks' debate, I think everyone is well versed on the limitations.
-
-
Permalink Reply by
Hannes Löschke on
-
The whole concept of data "trees" is pretty complex. While a real tree is a nice analogy for what this data structure looks like, not all the complex data manipulation operations find a similar equivalent in nature.
Think about "Graft" in a botanical way. You transfer a top part of one plant onto the roots of another. I think, "graft" would be a far more fitting analogy for this component here. Even you might agree, that a tree stump is a good symbol for a flattened tree. Now this root contains all data. If you transfer a new tree crown onto this stump, it will transfer all this data into then new structure... now regraft data from a flattened tree and you get a combination of the two symbols.
Problem is, there already is a component that adds new branches to an existing tree, which in botanical terms is also called grafting...
all that said, find a symbol that works in 20x20 pixels...
-
-
Permalink Reply by
Michael Pryor on
-
That makes sense. I was thinking graft at first as well. The two are similar.
-
-
Permalink Reply by
David Rutten on
-
Sometimes an operation can be represented by an icon very well, sometimes it's very difficult and sometimes it's easy but we all still use a visual metaphor because it has become the standard representation.
An icon is not supposed to explain what a certain function does. If it can, great, if not, no harm done. There are much better ways of explaining functionality and tooltips are right at the top of that list.
Icons need to serve the following purposes:
- Be rememberable. Once you know what an icon means it should be hard to forget.
- Be distinct. An icon must look different from its neighbours so it's easy to find.
These are of course my personal feelings and you're welcome to disagree with them. I would concur that Grasshopper has become harder and harder to learn over time as more functions were added. I hope I can do a better job in the future of 'hiding' expert functionality until the user is ready for it than I've done so far, but this is a very difficult task.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
David Rutten on
-
Can some analogy be proposed that actually refers to what the component is doing....
I can't think of a good analogy. Most components that operate on tree data-structures often have quite abstract icons associated with them. It's relatively easy to visually represent geometric operations, but tree management modifies the way in which data is structured. Language and imagery to do with data trees is quite metaphor-heavy by necessity.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
newy011 on
-
Flatten tree icon: a tree outline, similar to some of the attached suggestions posted on this thread, being compressed with a bold arrow on top directing downwards
Unflatten tree: As above but with the arrow pointing upwards?
Simple, more intuitive (although far from perfect), and better than the current offering. Thoughts?
-
Replies to This Discussion
-
Permalink Reply by
Michael Pryor on
-
Better for who? Also, that makes no sense to me atleast as flatten is just the name. Flatten really just removes all the branches in a tree. I think this is why david choose the cutting of a tree. Again, if you understand the tree logic the icons do make sense as an abstraction.
-
-
Permalink Reply by
newy011 on
-
I am just a big advocate in 'programming' of living by the rule that you should only abstract once. Any more and the meaning becomes esoteric or just unnecessarily complicated / confusing. Simple, simple, simple. That is actually an internal motto used in Apple corp and Lo and behold it becomes the most valuable tech company in the world. Programming by nature is abstract hence why many individuals find it complicated, so to burden it any more is surely a big foi pas.
-
-
Permalink Reply by
Hannes Löschke on
-
Would probably be better to call the component "TransferDataLayoutFromTreeToFlatList" and animate the icon to show the full process step-by-step in HD...
-
-
Permalink Reply by
Michael Pryor on
-
Can it be in 3D too? Thats the trend these days
-
-
Permalink Reply by
newy011 on
-
Lets not be facetious, after all the strongest something can be is always limited by its weakest link.
I think the direction this discussion can take will be slightly beyond your comprehension so lets leave it here.
-
-
Permalink Reply by
Michael Pryor on
-
Yea your right, im the one that gets it but okay :D well later then must get back to dwelling on icons :DDDDDD
-
-
Permalink Reply by
David Rutten on
-
The arrow would have to be visually on top of the tree rather than positionally. There isn't enough room in 20 pixels to draw both a tree and an arrow. If I draw them on top each other then I suppose it could look like this:
Once you're told it's to do with flattening data structures called 'trees' it becomes obvious what it means and very easy to remember. If you had to guess what it meant before you were told about trees I'm not sure what you'd make of it. Perhaps something to do with downloading? Downward pointing arrows are often associated with downloading things.
If I compress the tree image the arrow can be above it, but now the tree doesn't look like a tree any more:
Unless you've seen it before on another icon and you know that shape represents a data tree in Grasshopper.
I in fact did use a downward pointing arrow to represent flatten in the parameter post-processes:
These icons only have 10x10 pixels so anything beyond a single, simple shape cannot be represented so I couldn't go with the stump.
I'm not particularly hesitant to change the UI from version to version. I know it annoys some people and I know that some tutorials and course materials will become outdated because of it. But while GH is in alpha mode I think it is more important to try and figure out what interface works best. I'm not particularly impressed by the improvement of the tree+arrow icon, because even if it immediately conjures up the words "Flatten Tree" in your mind, you still don't know what to make of it unless you already know about data trees and what it means to flatten them.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
Hannes Löschke on
-
Nice idea and would certainly make the process and the reverse a consistent set.
Now look at it as a totally "uninitiated individual". Right now Graft and Flatten form a consistent pair, both beeing constantly used data operations. Growing a tree looks more like a graft operation but actually does something completely different. How is that less confusing than the current state?
-
-
Permalink Reply by
Arend on
-
Well, there is an interesting discussion.
What this component actually does is not unflatten. If I were to name it in a more descriptive sense it would be called Build Tree By BranchCount From List (if what it actually does should reflect the name of the component).
Unflatten is a word chosen after the grasshopper analogy for flatten tree, because it somewhat reverses the behaviour of the flatten command. So knowledge of the flatten command is needed to understand the unflatten analogy for the working of this command.
If you know the flatten icon, I think this icon makes sense.
-
-
Permalink Reply by
Chris Tietjen on
-
To me the flatten icon really says 'eliminate the branches'. I never think of it as actually 'flattening' anything. Flattening is probably not the best word to use but I find I have no interest in suggesting another. Turn the icon upside down to 'shake out' the original branch structure (let gravity do the work).
-
-
Permalink Reply by
Mateusz Zwierzycki on
-
-
Permalink Reply by
Vicente Soler on
-
To me the flatten icon says 'deforestation'. The planet is hurting enough already so to keep my definitions green and sustainable I instead use the environmentally friendly "shift paths" component with the appropriate offset value in each case.
-
Permalink Reply by Ángel Linares on
xDDDDDDDDDDDDDDDDDDDDDDDD
-
Permalink Reply by
Michael Pryor on
-
Ha!
-
-
Permalink Reply by
David Rutten on
-
You could always put two blank Graft components below any Flatten component. As long as you plant more trees than you cut, we're all in the clear.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
Andy Payne on
-
Just to throw in my 0.02. When I think of flattening a tree... I think of a piece of paper (since it's about as flat as a piece of wood can go). Unflattened then would just be a crumpled up ball of paper. This would require changing the flatten component too... but it's a thought. Not sure if it's a good idea... just throwing it out there for the sake of discussion.
-
-
Permalink Reply by
Andrew Kudless on
-
I agree with a few of the previous posts suggesting that the flatten/unflatten metaphor is a bit strange. First, "Unflatten" is not a common word. I have little problem with making up words, but when combined with "Tree", it is really very confusing. The phrase "unflattening a tree" is mixing too many metaphors.
I would prefer something that more accurately describes the action of the component such as "Rebuild Tree". The term "rebuild" is used in several other places in Rhino and Grasshopper to mean modify the essential structure of something (surface, mesh, curve, etc.). In common meaning, "rebuild" means to build something back to its original state. For example, you might rebuild a house after a fire. Conversely, that house might have been "flattened" by a hurricane.
When "Rebuild Tree" is used, it still has a strange sound in comparison to a house (trees are regrown or replanted after destruction), but it sounds better to me than "unflatten tree". I think the Flatten/Rebuild duality is a better one than Flatten/Unflatten. English is strange sometimes in the use of "un" as a prefix. It works well when there is no other term for the opposite of an action, but if there already exists a common word for the opposite, then the use of "un" sounds forced and awkward. For example, we don't use destroy/undestroy; we use destroy/make.
As for an icon, I think the sapling coming out of the stump works well. Another idea that might work would be to use the hammer symbol that is used elsewhere in Rhino and Grasshopper with the word Rebuild along with some sort of tree symbol.
-
-
Permalink Reply by
David Rutten on
-
Originally "flatten" came from Photoshop. Flattening all the layers of an image was the closest operation I could think of that was sort of analogous and which most people will have heard of. It has little to do with the metaphor of trees and indeed "flattening a tree" is an awkward thing to say.
You're right in that unflatten doesn't very closely describe what the component does. It's more of a contextual name, since the only time you'd probably use unflatten is just after you flattened something and need to put Humpty back together again. It is therefore a sort of 'undo for flatten' which got contracted to unflatten.
'Rebuild' to me signals like you'd have too much of a choice about the outcome. When rebuilding curves and surfaces you typically get to pick the accuracy of the operation. Unflatten exposes no such controls. I realize that RebuildMesh doesn't provide any control either*. I'm not saying Unflatten is better than Rebuild, it's just that neither actually tells you what the component really does. At the end of the day we're stuck with a vocabulary that is already wildly inconsistent and misleading in many areas. Words have been inherited from programming, computing, mathematics, 3D CAD in general, Rhino in specific and I made a few stupid choices along the way as well**. Keep the ideas coming though, perhaps there is a single word out there that unambiguously describes an unflatten operation. When we find it I will happily use it.
* But then RebuildMesh is very different from RebuildCurve and RebuildSurface anyway and it should probably have been called FixMesh or something
** Case in point; "parameters". They should have been called "containers" or something.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
David Stasiuk on
-
Repeating myself here...but I think "restore" tree captures the operation pretty effectively. I also think "scrub" would be a good alternative to flatten. That or "obliterate".
-
-
Permalink Reply by
Mateusz Zwierzycki on
-
I like the "restore" idea. It may be familiar to some windows users... also, my online dictionary says "reform" is synonymous for "restore".
"...that was sort of analogous and which most people will have heard of."
-
-
Permalink Reply by
David Rutten on
-
Restore is okay as a descriptor. But restore to what? Any previous state? Restore data, or paths, or both? If you saw 'Restore Tree', would you instantly know that it can be used to perform the inverse operation of flattening?
Ultimate, one major benefit of using unflatten -despite it being an awkward word- is that it doesn't involve a new term. Undo and Redo and not called Restore and Retrace. There's nothing wrong with restore and retrace, they describe the actions every bit as well as undo and redo, but because they are so different from each other knowing one doesn't help you at all figuring out what the other is about.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
-
-
Permalink Reply by
taz on
-
As an analagy, this whole debate makes me think of "Smash," mostly because of the icon...
But "Unsmash" (which is also a term that, on it's own, wouldn't make much sense...) would be like in cartoons when Wile E. Coyote gets run over by a steamroller and then inflates (pumps-up?) his paper thin self.
So I'll throw the descriptors inflate, pump, or plump into the mix (plump may actually be a plant/tree related term)...
Another random aside is that in Rhino there is obviously "UnrollSrf" which everyone understands, but there is no corollary "RollSrf" command because that wouldn't make any sense.
-
-
Permalink Reply by
Chris Tietjen on
-
How about recompose? Flatten; Recompose.
-
This Discussion
-
Permalink Reply by
Tudor Cosmatu on
-
What about revive (i just saw Pieter Segeren was sugesting this one as well)?
Although i personally find unflatten the most straight forward. Once you know what flatten does, u automatically know what unflatten does.
-
-
Permalink Reply by
Tudor Cosmatu on
-
But then again, wasn't this discussion actually about an icon ?! :);)
-
-
Permalink Reply by
Jesus Galvez on
-
Supposing the "flatten" name gets a name overhaul how about "Retread" for the unflatten command? Otherwise if the flatten name stays I think the retread name is confusing and the unflatten name is the most straightforward.
icon best. But I like it with grass... :D
BTW, nice jokes everyone!
-
-
Permalink Reply by
Ante Ljubas on
-
A bifurcated trunk would do if you imagined one being "flattened" a longer time ago. So, this would suggest a fully developed second tree as a part of the same branched trunk, not just branching out to become fully developed, time later:
www.treeworld.info/attachments/f53/22743d1330030793-single-trunk-si..." target="_blank">http://1.1.1.3/bmi/ www.treeworld.info/attachments/f53/22743d1330030793-single-trunk-si... -
-
Permalink Reply by
Ante Ljubas on
-
Another idea could be an owl nesting in a hollow tree but this is probably a little harder to depict as an icon. http://ibc.lynxeds.com/files/pictures/screech_owl.jpg
-
-
Permalink Reply by
Mateusz Zwierzycki on
-
-
Permalink Reply by
Daniel Gebreiter on
-
Lovely discussion! I haven't got any tools to draw nice icons, but here's another idea in case there's no clear winner yet (tough I quite like the stump and little twig from earlier):
flatten turns the tree into a plank- um, well, it's flat! ;-)
"unflatten" then reconstructs a tree-shape from a set of planks!
unflatten:
-
-