Add option to node inputs/outputs to never be hidden
When you press ctrl-h on a node, any inputs or outputs that are not connected to other nodes are automatically hidden. Most of the time this is exactly what we want. But sometimes I want one of the unconnected inputs to remain unhidden. Specifically, if I have a string input for a node, I have situations where I always want them to be visible, even when hitting ctrl-h on the node. So i propose adding a checkbox to the node input properties that forces that input to be visible, even when the rest of the disconnected inputs and ouputs are hidden.
Note in the image below that the text input field is still visible even through the other unconnected items are hidden.
6 Comments
This would be nice if we could somehow store the inputs/outputs that we never want to hide. With user-made groups this would be trivial, but with built-in nodes, I assume not.
My workaround for this is to drag out anoodle from the output, select some random node, usually Reroute, hide Inputs/Outputs, and then delete the added node.
This would break Blender's UI consistency. Current nodes that are not node groups will always hide the input when pressing CTRL+H. Node groups are not an exception. A workaround to keep them "unhidden" is to connect something to it, so in your case you can plug in a String input and type the data in this node instead ;)
I'm saying this because it is very important for developpers to keep Blender's UI consistent, this allows for accessibility and avoid confusion. And if it were to change, the reason has to be substantial.
Just on top of that, CTRL+H explicitly "Hides Unconnected Sockets" If a socket that is unconnected were to remain visible, it would bring a lot of confusion to users that are not aware of that
If you are referring to my original suggestion, I don't think that this would break consistency at all. In this scenario, the user would have to explicitly choose to override the default behavior for a specific node.
On top of that, you could argue that if the user has changed the default value then this socket technically has an input associated with it... just not as a separate node.
I have tried inputting a separate node into the string and while that technically works, it is a huge pain because first off, you now have two nodes for every time you want to do this (and I can have hundreds of these situations). Secondly, it adds a lot of time to drop another node, hook it up, and then work to ensure your network is still readable (moving around other nodes to clean it up).
I understand completely, and I also strongly believe it would be super cool to be able to hide some sockets and keep some visible even if they're unused.
The "workarounds" I mentionned are of course more annoying than just being able to do it directly.
However, I was mostly mentionning that there's a design conflict: Developpers will most likely always ignore features that requests a change of behavior from usual blender's behavior that is controllable by the user. The same way switch nodes will always gray out unused items, and menu switches will always hide unused items, "Hide Unused Sockets" will always "Hide Unused Sockets"
The goal here I'd say would be to find a design, an idea, that would make your feature proposal somewhat possible to enhance everybody's workflow, without allowing users to break blender behavior's consistency.
What if there was an additional form of hiding attached to, say, ctrl-shift-h and called "hide default values" or something? (there is probably a better name for it) Then anything that was left at the node's default would be hidden, but anything touched by the user, including any nodes that are wired in, would not be hidden. Perhaps that would be a way to not mess with the current behavior?